Browse Source

make tile-texture lookup dictioanry-based instead of switch-based

GitOrigin-RevId: 2f0c215bf9
master
Colin McMillen 4 years ago
parent
commit
b731e1a785
  1. 35
      Shared/World.cs

35
Shared/World.cs

@ -20,6 +20,18 @@ namespace SemiColinGames {
readonly Texture2D texture;
readonly Rectangle textureSource;
static readonly Dictionary<Terrain, Point> terrainToTilePosition =
new Dictionary<Terrain, Point>() {
{ 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);
}
}

Loading…
Cancel
Save