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); }
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); }