Exemple #1
0
        public Tile[,] ReadLevel(int levelNumber)
        {
            char[,] chars = LevelData.GetLevel(levelNumber);
            tiles         = new Tile[LevelData.Level_height, LevelData.Level_width];

            for (int y = 0; y < tiles.GetLength(0); y++)
            {
                for (int x = 0; x < tiles.GetLength(1); x++)
                {
                    switch (chars[y, x])
                    {
                    case 'R':
                        Rockford r = new Rockford(Game);
                        Game.Rockford = r;
                        tiles[y, x]   = new Tile(new Empty(r));
                        tiles[y, x].StaticObject.moveableObject          = Game.Rockford;
                        tiles[y, x].StaticObject.moveableObject.Location = tiles[y, x];
                        break;

                    case 'M':
                        tiles[y, x] = new Tile(new Mud(null));
                        break;

                    case 'B':
                        Boulder b = new Boulder(Game);
                        tiles[y, x] = new Tile(new Empty(b));
                        tiles[y, x].StaticObject.moveableObject.Location = tiles[y, x];
                        Game.moveableObjects.Add(b);
                        break;

                    case 'D':
                        Diamond d = new Diamond(Game);
                        tiles[y, x] = new Tile(new Empty(d));
                        tiles[y, x].StaticObject.moveableObject.Location = tiles[y, x];
                        Game.moveableObjects.Add(d);
                        break;

                    case 'W':
                        tiles[y, x] = new Tile(new Wall(null));
                        break;

                    case 'S':
                        tiles[y, x] = new Tile(new SteelWall(null));
                        break;

                    case 'F':
                        Firefly f = new Firefly(Game);
                        tiles[y, x] = new Tile(new Empty(f));
                        tiles[y, x].StaticObject.moveableObject.Location = tiles[y, x];
                        Game.moveableObjects.Add(f);
                        break;

                    case 'E':
                        Exit ex = new Exit(null);
                        Game.Exit          = ex;
                        tiles[y, x]        = new Tile(ex);
                        Game.Exit.Location = tiles[y, x];
                        break;

                    case 'H':
                        HardenedMud h = new HardenedMud(Game);
                        tiles[y, x] = new Tile(new Empty(h));
                        tiles[y, x].StaticObject.moveableObject.Location = tiles[y, x];
                        Game.moveableObjects.Add(h);
                        break;

                    case 'T':
                        TNT e = new TNT(Game);
                        tiles[y, x] = new Tile(new Empty(e));
                        tiles[y, x].StaticObject.moveableObject.Location = tiles[y, x];
                        Game.moveableObjects.Add(e);
                        break;

                    case ' ':
                        tiles[y, x] = new Tile(new Empty(null));
                        break;

                    default:
                        Console.WriteLine("Unknown tile at y: " + y + " x: " + x);
                        break;
                    }
                }
            }
            CreateLinks(tiles);
            return(tiles);
        }
Exemple #2
0
        private Tile generateTiles(char[,] lBoard)
        {
            Tile firstTile = null;

            for (int height = 0; height < LevelData.Level_height; height++)
            {
                bool firstOfRow = true;

                for (int width = 0; width < LevelData.Level_width; width++)
                {
                    char tile = lBoard[height, width];
                    Tile newTile;

                    switch (tile)
                    {
                    case 'R':
                        Player player = new Player();
                        newTile = new Floor(_Model, player);
                        player.CurrentLocation = (Floor)newTile;
                        _Controller.SetPlayer(player);
                        break;

                    case 'M':
                        Mud mud = new Mud();
                        newTile             = new Floor(_Model, mud);
                        mud.CurrentLocation = (Floor)newTile;
                        break;

                    case 'B':
                        Boulder boulder = new Boulder();
                        newTile = new Floor(_Model, boulder);
                        boulder.CurrentLocation = (Floor)newTile;
                        break;

                    case 'D':
                        Diamond diamond = new Diamond();
                        newTile = new Floor(_Model, diamond);
                        diamond.CurrentLocation = (Floor)newTile;
                        _Model.AddDiamond();
                        break;

                    case 'W':
                        Wall wall = new Wall();
                        newTile = new Floor(_Model, wall);
                        wall.CurrentLocation = (Floor)newTile;
                        break;

                    case 'S':
                        newTile = new SteelWall();
                        break;

                    case 'F':
                        FireFly fireFly = new FireFly();
                        newTile = new Floor(_Model, fireFly);
                        fireFly.CurrentLocation = (Floor)newTile;
                        _Model.AddFireFly(fireFly);
                        break;

                    case 'E':
                        Exit e = new Exit(_Model);
                        _Model.AddExit(e);
                        newTile = e;
                        break;

                    case 'H':
                        HardenedMud hardenedMud = new HardenedMud();
                        newTile = new Floor(_Model, hardenedMud);
                        hardenedMud.CurrentLocation = (Floor)newTile;
                        break;

                    case 'T':
                        TNT tnt = new TNT();
                        newTile             = new Floor(_Model, tnt);
                        tnt.CurrentLocation = (Floor)newTile;
                        break;

                    default:
                        newTile = new Floor(_Model);
                        break;
                    }

                    if (firstTile != null)
                    {
                        if (firstOfRow)
                        {
                            firstTile.SetTile(newTile, Direction.DOWN);
                            firstOfRow = false;
                        }
                        else
                        {
                            firstTile.SetTile(newTile, Direction.RIGHT);
                        }
                    }
                    else
                    {
                        firstTile  = newTile;
                        firstOfRow = false;
                    }
                }
            }

            return(firstTile);
        }