diff --git a/Shared/World.cs b/Shared/World.cs index 803c144..d405776 100644 --- a/Shared/World.cs +++ b/Shared/World.cs @@ -90,6 +90,18 @@ namespace SemiColinGames { ====================> <====..========..======..=========..=========> <=============> <==============================================================> <=======..==============..============================== ....................] [............................................] [.............] [..............................................................] [......................................................."; + private static readonly Dictionary charToTerrain = + new Dictionary() { + { '=', Terrain.Grass }, + { '<', Terrain.GrassL }, + { '>', Terrain.GrassR }, + { '.', Terrain.Rock }, + { '[', Terrain.RockL }, + { ']', Terrain.RockR }, + { '~', Terrain.Water }, + { 'X', Terrain.Block } + }; + public World(Texture2D texture) { var tilesList = new List(); string[] worldDesc = worldString.Split('\n'); @@ -98,39 +110,14 @@ namespace SemiColinGames { Debug.WriteLine("world size: {0}x{1}", tileWidth, tileHeight); for (int i = 0; i < tileWidth; i++) { for (int j = 0; j < tileHeight; j++) { - Terrain? terrain = null; if (i < worldDesc[j].Length) { - switch (worldDesc[j][i]) { - case '=': - terrain = Terrain.Grass; - break; - case '<': - terrain = Terrain.GrassL; - break; - case '>': - terrain = Terrain.GrassR; - break; - case '.': - terrain = Terrain.Rock; - break; - case '[': - terrain = Terrain.RockL; - break; - case ']': - terrain = Terrain.RockR; - break; - case '~': - terrain = Terrain.Water; - break; - case 'X': - terrain = Terrain.Block; - break; + char key = worldDesc[j][i]; + if (charToTerrain.ContainsKey(key)) { + Terrain terrain = charToTerrain[key]; + var position = new Rectangle(i * TileSize, j * TileSize, TileSize, TileSize); + tilesList.Add(new Tile(texture, terrain, position)); } } - if (terrain != null) { - var position = new Rectangle(i * TileSize, j * TileSize, TileSize, TileSize); - tilesList.Add(new Tile(texture, terrain.Value, position)); - } } } tiles = tilesList.ToArray();