From b731e1a785df042dc69a585e89d5d49dc2941094 Mon Sep 17 00:00:00 2001 From: Colin McMillen Date: Sun, 2 Feb 2020 10:24:21 -0500 Subject: [PATCH] make tile-texture lookup dictioanry-based instead of switch-based GitOrigin-RevId: 2f0c215bf9e79e92f2c7a5011d8df3d9d80a0dff --- Shared/World.cs | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/Shared/World.cs b/Shared/World.cs index dcee7b3..803c144 100644 --- a/Shared/World.cs +++ b/Shared/World.cs @@ -20,6 +20,18 @@ namespace SemiColinGames { readonly Texture2D texture; readonly Rectangle textureSource; + static readonly Dictionary terrainToTilePosition = + new Dictionary() { + { Terrain.Grass, new Point(3, 0) }, + { Terrain.GrassL, new Point(2, 0) }, + { Terrain.GrassR, new Point(4, 0) }, + { Terrain.Rock, new Point(3, 1) }, + { Terrain.RockL, new Point(1, 2) }, + { Terrain.RockR, new Point(5, 2) }, + { Terrain.Water, new Point(9, 2) }, + { Terrain.Block, new Point(6, 3) }, + }; + public Tile(Texture2D texture, Terrain terrain, Rectangle position) { this.texture = texture; Terrain = terrain; @@ -37,27 +49,8 @@ namespace SemiColinGames { private Rectangle TextureSource() { int size = World.TileSize; - switch (Terrain) { - case Terrain.Grass: - return new Rectangle(3 * size, 0 * size, size, size); - case Terrain.GrassL: - return new Rectangle(2 * size, 0 * size, size, size); - case Terrain.GrassR: - return new Rectangle(4 * size, 0 * size, size, size); - case Terrain.Rock: - return new Rectangle(3 * size, 1 * size, size, size); - case Terrain.RockL: - return new Rectangle(1 * size, 2 * size, size, size); - case Terrain.RockR: - return new Rectangle(5 * size, 2 * size, size, size); - case Terrain.Water: - return new Rectangle(9 * size, 2 * size, size, size); - case Terrain.Block: - return new Rectangle(6 * size, 3 * size, size, size); - default: - Debug.WriteLine("Tile.TextureSource(): rectangle not found"); - return new Rectangle(); - } + Point pos = terrainToTilePosition[Terrain]; + return new Rectangle(pos.X * size, pos.Y * size, size, size); } }