From 1f7da035155856584e0dc21464592a3f36e533d9 Mon Sep 17 00:00:00 2001 From: Colin McMillen Date: Sun, 2 Feb 2020 10:32:32 -0500 Subject: [PATCH] make char-to-terrain lookup dictionary-based instead of switch-based GitOrigin-RevId: 0d81e95bf047fab204bff8cf46ece2ab5470bf09 --- Shared/World.cs | 47 +++++++++++++++++------------------------------ 1 file changed, 17 insertions(+), 30 deletions(-) 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();