|
@ -1,7 +1,7 @@ |
|
|
using Microsoft.Xna.Framework; |
|
|
using Microsoft.Xna.Framework; |
|
|
using Microsoft.Xna.Framework.Graphics; |
|
|
using Microsoft.Xna.Framework.Graphics; |
|
|
using System; |
|
|
|
|
|
using System.Collections.Generic; |
|
|
using System.Collections.Generic; |
|
|
|
|
|
using System.Linq; |
|
|
|
|
|
|
|
|
namespace SemiColinGames { |
|
|
namespace SemiColinGames { |
|
|
enum Terrain { |
|
|
enum Terrain { |
|
@ -111,41 +111,44 @@ namespace SemiColinGames { |
|
|
"...................................................................] [.............] [..............................................................] [......................................................." }; |
|
|
"...................................................................] [.............] [..............................................................] [......................................................." }; |
|
|
|
|
|
|
|
|
public World(Texture2D texture) { |
|
|
public World(Texture2D texture) { |
|
|
width = worldDesc[0].Length; |
|
|
|
|
|
|
|
|
width = worldDesc.AsQueryable().Max(a => a.Length); |
|
|
height = worldDesc.Length; |
|
|
height = worldDesc.Length; |
|
|
|
|
|
Debug.WriteLine("world size: {0}x{1}", width, height); |
|
|
tiles = new Tile[width, height]; |
|
|
tiles = new Tile[width, height]; |
|
|
for (int j = 0; j < height; j++) { |
|
|
for (int j = 0; j < height; j++) { |
|
|
for (int i = 0; i < width; i++) { |
|
|
for (int i = 0; i < width; i++) { |
|
|
Terrain terrain; |
|
|
|
|
|
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; |
|
|
|
|
|
case ' ': |
|
|
|
|
|
default: |
|
|
|
|
|
terrain = Terrain.Empty; |
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
Terrain terrain = Terrain.Empty; |
|
|
|
|
|
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; |
|
|
|
|
|
case ' ': |
|
|
|
|
|
default: |
|
|
|
|
|
terrain = Terrain.Empty; |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
var position = new Rectangle(i * TileSize, j * TileSize, TileSize, TileSize); |
|
|
var position = new Rectangle(i * TileSize, j * TileSize, TileSize, TileSize); |
|
|
tiles[i, j] = new Tile(texture, terrain, position); |
|
|
tiles[i, j] = new Tile(texture, terrain, position); |
|
|