|
|
@ -90,6 +90,18 @@ namespace SemiColinGames { |
|
|
|
====================> <====..========..======..=========..=========> <=============> <==============================================================> <=======..==============..============================== |
|
|
|
....................] [............................................] [.............] [..............................................................] [.......................................................";
|
|
|
|
|
|
|
|
private static readonly Dictionary<char, Terrain> charToTerrain = |
|
|
|
new Dictionary<char, Terrain>() { |
|
|
|
{ '=', 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<Tile>(); |
|
|
|
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(); |
|
|
|