|
@ -18,63 +18,53 @@ namespace SemiColinGames { |
|
|
|
|
|
|
|
|
class Tile { |
|
|
class Tile { |
|
|
readonly Texture2D texture; |
|
|
readonly Texture2D texture; |
|
|
|
|
|
readonly Rectangle textureSource; |
|
|
|
|
|
|
|
|
public Tile(Texture2D texture, Terrain terrain, Rectangle position) { |
|
|
public Tile(Texture2D texture, Terrain terrain, Rectangle position) { |
|
|
this.texture = texture; |
|
|
this.texture = texture; |
|
|
Terrain = terrain; |
|
|
Terrain = terrain; |
|
|
Position = position; |
|
|
Position = position; |
|
|
|
|
|
this.textureSource = TextureSource(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public Rectangle Position { get; private set; } |
|
|
public Rectangle Position { get; private set; } |
|
|
public Terrain Terrain { get; private set; } |
|
|
public Terrain Terrain { get; private set; } |
|
|
|
|
|
|
|
|
public void Draw(SpriteBatch spriteBatch, Camera camera) { |
|
|
public void Draw(SpriteBatch spriteBatch, Camera camera) { |
|
|
int size = World.TileSize; |
|
|
|
|
|
Vector2 drawPos = new Vector2(Position.Left - camera.Left, Position.Top); |
|
|
Vector2 drawPos = new Vector2(Position.Left - camera.Left, Position.Top); |
|
|
|
|
|
spriteBatch.Draw(texture, drawPos, textureSource, Color.White); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Rectangle TextureSource() { |
|
|
|
|
|
int size = World.TileSize; |
|
|
switch (Terrain) { |
|
|
switch (Terrain) { |
|
|
case Terrain.Grass: { |
|
|
case Terrain.Grass: { |
|
|
Rectangle source = new Rectangle(3 * size, 0 * size, size, size); |
|
|
|
|
|
spriteBatch.Draw(texture, drawPos, source, Color.White); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return new Rectangle(3 * size, 0 * size, size, size); |
|
|
|
|
|
} |
|
|
case Terrain.GrassL: { |
|
|
case Terrain.GrassL: { |
|
|
Rectangle source = new Rectangle(2 * size, 0 * size, size, size); |
|
|
|
|
|
spriteBatch.Draw(texture, drawPos, source, Color.White); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return new Rectangle(2 * size, 0 * size, size, size); |
|
|
|
|
|
} |
|
|
case Terrain.GrassR: { |
|
|
case Terrain.GrassR: { |
|
|
Rectangle source = new Rectangle(4 * size, 0 * size, size, size); |
|
|
|
|
|
spriteBatch.Draw(texture, drawPos, source, Color.White); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return new Rectangle(4 * size, 0 * size, size, size); |
|
|
|
|
|
} |
|
|
case Terrain.Rock: { |
|
|
case Terrain.Rock: { |
|
|
Rectangle source = new Rectangle(3 * size, 1 * size, size, size); |
|
|
|
|
|
spriteBatch.Draw(texture, drawPos, source, Color.White); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return new Rectangle(3 * size, 1 * size, size, size); |
|
|
|
|
|
} |
|
|
case Terrain.RockL: { |
|
|
case Terrain.RockL: { |
|
|
Rectangle source = new Rectangle(1 * size, 2 * size, size, size); |
|
|
|
|
|
spriteBatch.Draw(texture, drawPos, source, Color.White); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return new Rectangle(1 * size, 2 * size, size, size); |
|
|
|
|
|
} |
|
|
case Terrain.RockR: { |
|
|
case Terrain.RockR: { |
|
|
Rectangle source = new Rectangle(5 * size, 2 * size, size, size); |
|
|
|
|
|
spriteBatch.Draw(texture, drawPos, source, Color.White); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return new Rectangle(5 * size, 2 * size, size, size); |
|
|
|
|
|
} |
|
|
case Terrain.Water: { |
|
|
case Terrain.Water: { |
|
|
Rectangle source = new Rectangle(9 * size, 2 * size, size, size); |
|
|
|
|
|
spriteBatch.Draw(texture, drawPos, source, Color.White); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return new Rectangle(9 * size, 2 * size, size, size); |
|
|
|
|
|
} |
|
|
case Terrain.Block: { |
|
|
case Terrain.Block: { |
|
|
Rectangle source = new Rectangle(6 * size, 3 * size, size, size); |
|
|
|
|
|
spriteBatch.Draw(texture, drawPos, source, Color.White); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return new Rectangle(6 * size, 3 * size, size, size); |
|
|
|
|
|
} |
|
|
case Terrain.Empty: |
|
|
case Terrain.Empty: |
|
|
default: |
|
|
default: |
|
|
break; |
|
|
|
|
|
|
|
|
return new Rectangle(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|