Пример #1
0
        protected void level4()
        {
            Texture2D tilesetTexture = Game.Content.Load<Texture2D>(@"Tilesets\planktileset");
            Tileset tileset1 = new Tileset(tilesetTexture, 7, 1, 40, 40);

            tilesetTexture = Game.Content.Load<Texture2D>(@"Tilesets\walls2");
            Tileset tileset2 = new Tileset(tilesetTexture, 6, 7, 40, 40);

            List<Tileset> tilesets = new List<Tileset>();
            tilesets.Add(tileset1);
            tilesets.Add(tileset2);
            int mapWidth = 13;
            int mapHeight = 15;
            CollisionLayer collision = new CollisionLayer(mapWidth, mapHeight);
            MapLayer wall = new MapLayer(mapWidth, mapHeight);
            Random random = new Random();
            //first row
            wall.SetTile(0, 0, new Tile(0, 1));
            wall.SetTile(1, 0, new Tile(1, 1));
            collision.SetTile(0, 0, CollisionType.Unwalkable);
            collision.SetTile(1, 0, CollisionType.Unwalkable);
            for (int i = 2; i < wall.Width - 2; i++)
            {
                int index = random.Next(2, 4);
                Tile tile = new Tile(index, 1);
                wall.SetTile(i, 0, tile);
            }

            wall.SetTile(wall.Width - 2, 0, new Tile(4, 1));
            wall.SetTile(wall.Width - 1, 0, new Tile(5, 1));

            collision.SetTile(wall.Width - 2, 0, CollisionType.Unwalkable);
            collision.SetTile(wall.Width - 1, 0, CollisionType.Unwalkable);
            //second row
            random = new Random();
            wall.SetTile(0, 1, new Tile(6, 1));
            wall.SetTile(1, 1, new Tile(7, 1));
            for (int i = 2; i < wall.Width - 2; i++)
            {
                int index = random.Next(8, 10);
                Tile tile = new Tile(index, 1);
                wall.SetTile(i, 1, tile);

            }

            wall.SetTile(wall.Width - 2, 1, new Tile(10, 1));
            wall.SetTile(wall.Width - 1, 1, new Tile(11, 1));
            //third row
            random = new Random();
            wall.SetTile(0, 2, new Tile(12, 1));
            wall.SetTile(1, 2, new Tile(13, 1));
            for (int i = 2; i < wall.Width - 2; i++)
            {
                int index = random.Next(14, 16);
                Tile tile = new Tile(index, 1);
                wall.SetTile(i, 2, tile);
            }

            wall.SetTile(wall.Width - 2, 2, new Tile(16, 1));
            wall.SetTile(wall.Width - 1, 2, new Tile(17, 1));

            //left column

            random = new Random();
            for (int i = 3; i < wall.Height - 2; i++)
            {
                int index = random.Next(0, 2);
                if (index == 0) index = 18;
                else if (index == 1) index = 24;
                Tile tile = new Tile(index, 1);
                wall.SetTile(0, i, tile);
            }

            wall.SetTile(0, wall.Height - 2, new Tile(30, 1));
            wall.SetTile(0, wall.Height - 1, new Tile(36, 1));

            //right column

            random = new Random();
            for (int i = 3; i < wall.Width - 2; i++)
            {
                int index = random.Next(0, 2);
                if (index == 0) index = 23;
                else if (index == 1) index = 29;
                Tile tile = new Tile(index, 1);
                wall.SetTile(wall.Width - 1, i, tile);
            }

            wall.SetTile(wall.Width - 1, wall.Height - 2, new Tile(35, 1));
            wall.SetTile(wall.Width - 1, wall.Height - 1, new Tile(41, 1));

            //last row

            wall.SetTile(1, wall.Height - 1, new Tile(37, 1));
            wall.SetTile(wall.Width - 1, wall.Height - 1, new Tile(41, 1));
            wall.SetTile(wall.Width - 2, wall.Height - 1, new Tile(40, 1));

            wall.SetTile(1, wall.Height - 2, new Tile(31, 1));
            wall.SetTile(wall.Width - 2, wall.Height - 2, new Tile(34, 1));
            random = new Random();
            for (int i = 2; i < wall.Width - 2; i++)
            {
                int index = random.Next(38, 40);
                Tile tile = new Tile(index, 1);
                wall.SetTile(i, wall.Height - 1, tile);
            }

            //wall.SetTile(wall.Width - 2, wall.Height - 1, new Tile(40, 1));
            //wall.SetTile(wall.Width - 1, wall.Height - 1, new Tile(41, 1));

            MapLayer layer = new MapLayer(mapWidth, mapHeight);

               for (int y = 0; y < layer.Height; y++)
               {
                   for (int x = 0; x < layer.Width; x++)
                   {
                       Tile tile = new Tile(0, 0);

                       layer.SetTile(x, y, tile);
                   }
               }

               MapLayer splatter = new MapLayer(mapWidth, mapHeight);

               random = new Random();

               for (int i = 0; i < 40; i++)
               {
                   int x = random.Next(0, layer.Width - 1);
                   int y = random.Next(4, layer.Height - 1);
                   int index = random.Next(2, 6);

                   Tile tile = new Tile(index, 0);
                   splatter.SetTile(x, y, tile);
               }

            //  splatter.SetTile(1, 0, new Tile(1, 1));
            //  splatter.SetTile(2, 0, new Tile(2, 1));
            // splatter.SetTile(3, 0, new Tile(3, 1));

            //map.Collision = new CollisionLayer(mapWidth, mapHeight);

            List<MapLayer> mapLayers = new List<MapLayer>();

            mapLayers.Add(layer);

            mapLayers.Add(splatter);
            mapLayers.Add(wall);
            collision.ProcessWallLayer(wall);

            TileMap map = new TileMap(tilesets, mapLayers, collision);
            Level level4 = new Level(map);

            LevelItems plaque1 = new LevelItems("Plaque", 38, 37, true);
            //plaque1.addKey("Purple Key")

            Key brownKey = new Key("Brown Key");
            plaque1.addItem(brownKey);

            BaseSprite plaqueSprite1 = new BaseSprite(
            plaque,
            new Rectangle(0, 0, 50, 35),
            new Point(1, 2));

            ItemSprite plaque1Sprite = new ItemSprite(
            plaque1,
            plaqueSprite1);
            level4.LevelItem.Add(plaque1Sprite);

            Door exit4Door = new Door("Final Door", true, 1, 2, 5, 5);
            exit4Door.addKey("Scepter");

            BaseSprite doorSprite = new BaseSprite(
            exitLoc,
            new Rectangle(0, 0, 60, 84),
            new Point(12, 11));

            ItemSprite doorItem4Sprite = new ItemSprite(
            exit4Door,
            doorSprite);
            level4.Doors.Add(doorItem4Sprite);

            LevelItems chest5 = new LevelItems("Level 4 Chest 1", 32,31,true);
            chest5.addKey("Brown Key");

            Key goldKey = new Key("Gold Key");
            chest5.addItem(goldKey);

            Key potionOfAwesomeness = new Key("Awesomeness");
            chest5.addItem(potionOfAwesomeness);

            Key mysteriousBox = new Key("Mystery Box");
            chest5.addItem(mysteriousBox);

            BaseSprite chest5Sprite = new BaseSprite(
            containers,
            new Rectangle(0, 0, 60, 84),
            new Point(2, 13));

            ItemSprite chest5ItemSprite = new ItemSprite(
            chest5,
            chest5Sprite);
            level4.LevelItem.Add(chest5ItemSprite);

            LevelItems charact3 = new LevelItems("Lacie", 34, 35, true);
            charact3.addKey("Gold Key");

            Key blueKey = new Key("Brown Key");
            charact3.addItem(blueKey);

            BaseSprite charSprite3 = new BaseSprite(
            char2,
            new Rectangle(323, 190, 36, 45),
            new Point(8, 6));

            ItemSprite charact3Sprite = new ItemSprite(
            charact3,
            charSprite3);
            level4.LevelItem.Add(charact3Sprite);

            LevelItems wizard2 = new LevelItems("Wizard", -1, 33, false);
            //wizard2.addKey("Rainbow Key");

            BaseSprite wizardSprite2 = new BaseSprite(
            character2,
            new Rectangle(0, 0, 68, 62),
            new Point(10, 10));
            ItemSprite wizItemSprite2 = new ItemSprite(
            wizard2,
            wizardSprite2);
            level4.LevelItem.Add(wizItemSprite2);

            //Creating the invisable map using the map.BlockTile method, as seen before
            map.BlockTile(3, 3);
            map.BlockTile(3, 4);
            map.BlockTile(3, 5);
            map.BlockTile(3, 6);
            map.BlockTile(2, 9);
            map.BlockTile(3, 9);
            map.BlockTile(3, 12);
            map.BlockTile(3, 13);
            map.BlockTile(6, 5);
            map.BlockTile(6, 6);
            map.BlockTile(6, 7);
            map.BlockTile(6, 8);
            map.BlockTile(6, 9);
            map.BlockTile(6, 10);
            map.BlockTile(6, 11);
            map.BlockTile(6, 12);
            map.BlockTile(6, 13);
            map.BlockTile(7, 5);
            map.BlockTile(8, 5);
            map.BlockTile(9, 5);
            map.BlockTile(9, 6);
            map.BlockTile(9, 7);
            //map.BlockTile(9, 8);
               // map.BlockTile(9, 10);
            //map.BlockTile(10, 10);

            world.Levels.Add(level4);
        }