예제 #1
0
파일: Level.cs 프로젝트: jordanell/Blocker
        /// <summary>
        /// Generates the map from texture and layout input.
        /// </summary>
        /// <param name="textureNames">A list of textures that correspond to a layout.</param>
        /// <param name="tempLayout">The layout of the map.</param>
        private void GenerateMap(List<string> textureNames, List<List<int>> tempLayout)
        {
            // Load all the textures into the game that are needed by map
            List<Texture2D> textures = new List<Texture2D>();
            foreach (string tex in textureNames)
                textures.Add(game.Content.Load<Texture2D>(tex));

            // Add entities to the map as needed from reading the layout
            for(int y = 0; y < tempLayout.Count(); y++)
            {
                for(int x = 0; x < tempLayout[y].Count(); x++)
                {
                    switch(tempLayout[y][x])
                    {
                        case 0:
                            break;
                        case 1:
                            // Add a block
                            map[y,x] = new Block(game, spriteBatch, textures[tempLayout[y][x]-1],
                                new Rectangle((x*blockWidth), (hudBuffer+(y*blockHeight)), blockWidth, blockHeight));
                            break;
                        case 2:
                            // Add a blue moveable block
                            map[y,x] = new MoveableBlock(game, spriteBatch, textures[tempLayout[y][x]-1],
                                new Rectangle((x*blockWidth), (hudBuffer+(y*blockHeight)), blockWidth, blockHeight),
                                Color.Blue);
                            break;
                        case 3:
                            // Add a red moveable block
                            map[y, x] = new MoveableBlock(game, spriteBatch, textures[tempLayout[y][x] - 1],
                                new Rectangle((x * blockWidth), (hudBuffer + (y * blockHeight)), blockWidth, blockHeight),
                                Color.Red);
                            break;
                        case 4:
                            // Add red matter
                            map[y, x] = new Matter(game, spriteBatch, null,
                                new Rectangle((x * blockWidth), (hudBuffer + (y * blockHeight)), blockWidth, blockHeight),
                                Color.Red);
                            break;
                        case 5:
                            // Add blue matter
                            map[y, x] = new Matter(game, spriteBatch, null,
                                new Rectangle((x * blockWidth), (hudBuffer + (y * blockHeight)), blockWidth, blockHeight),
                                Color.Blue);
                            break;
                        case 8:
                            // Add the exit
                            exit = new Exit(game, spriteBatch, null,
                                new Rectangle((x * blockWidth), (hudBuffer + (y * blockHeight)), blockWidth, blockHeight));
                            break;
                        case 9:
                            // Add the player
                            player = new Player(game, spriteBatch,
                                new Rectangle((x * blockWidth), (hudBuffer + (y * blockHeight)), blockWidth, blockHeight),
                                this);
                            break;
                    }
                }
            }
        }
예제 #2
0
파일: Level.cs 프로젝트: jordanell/Blocker
 /// <summary>
 /// Applies a movement to a moveable block.
 /// </summary>
 /// <param name="target">The moveable block to be moved.</param>
 /// <param name="move">The movement.</param>
 /// <param name="origin">The origin.</param>
 /// <param name="color">The color of the block.</param>
 private void ApplyPush(MoveableBlock target, Movement move, Vector2 origin, Color color)
 {
     ((MoveableBlock)target).Move(move);
     if(color == Color.Red)
         HUD.DecreaseRedMatter();
     else if (color == Color.Blue)
         HUD.DecreaseBlueMatter();
     map[(int)origin.Y, (int)origin.X] = null;
     Vector2 dest = GridIndexOf(new Vector2(move.End.X, move.End.Y));
     map[(int)dest.Y, (int)dest.X] = target;
     GenerateLightning(move.Direction, new Vector2(move.Start.X, move.Start.Y), color);
     SoundMixer.Instance(game).PlayShoot(false);
 }