# HG changeset patch
# User fred@reichbier.de
# Date 1216323293 -7200
# Node ID a9af6ec19195f298d15e660100f06ec8eee6b45c
# Parent fc2f936a961cdae2983b1fc0c9242dccdafff12d
working map and tileset loading
diff -r fc2f936a961c -r a9af6ec19195 bin/tileset-example.xml
--- a/bin/tileset-example.xml Thu Jul 17 21:06:43 2008 +0200
+++ b/bin/tileset-example.xml Thu Jul 17 21:34:53 2008 +0200
@@ -1,3 +1,4 @@
+
diff -r fc2f936a961c -r a9af6ec19195 src/test.d
--- a/src/test.d Thu Jul 17 21:06:43 2008 +0200
+++ b/src/test.d Thu Jul 17 21:34:53 2008 +0200
@@ -16,22 +16,10 @@
int main(char[][] args) {
Cache cache = new Cache("gfx");
Tilemap map = parse_map(cache, read_file_contents("map-example.xml"));
-/*
- Tileset tileset = new Tileset(cache);
- Tilemap map = new Tilemap(tileset, 5, 5, 32, 32);
- tileset.add_tile(0, "grass.png");
- tileset.add_tile(1, "grass-stone-water-east.png");
- for(int x=0; x < 5; x++) {
- for(int y=0; y < 5; y++) {
- map.map[0][x][y] = 0;
- }
- }
- map.map[1][1][1] = 1;
-
Renderer render = new Renderer("Blubb", 600, 480, 32);
TileConsumer consumer = new TileConsumer(render, map);
render.add_consumer(consumer);
- render.mainloop();*/
+ render.mainloop();
return 0;
}
diff -r fc2f936a961c -r a9af6ec19195 src/tilemap.d
--- a/src/tilemap.d Thu Jul 17 21:06:43 2008 +0200
+++ b/src/tilemap.d Thu Jul 17 21:34:53 2008 +0200
@@ -12,6 +12,7 @@
class Tilemap {
public int[int][int][int] map; // Layer: x: y: Tile-ID
+ public Vector2i[int] layer_tsizes; // Layer: Tile size
private Tileset tileset;
public int width, height, tilewidth, tileheight;
@@ -23,35 +24,35 @@
this.tileheight = tileheight;
}
- void real_to_tile(int real_x, int real_y, inout int tile_x, inout int tile_y) {
- tile_x = rndint(floor(real_x / this.tilewidth));
- tile_y = rndint(floor(real_y / this.tileheight));
+ Vector2i real_to_tile(int layer, int real_x, int real_y) {
+ return Vector2i(rndint(floor(real_x / this.layer_tsizes[layer].x)), rndint(floor(real_y / this.layer_tsizes[layer].y)));
}
- void tile_to_real(int tile_x, int tile_y, inout int real_x, inout int real_y) {
- real_x = tile_x*this.tilewidth;
- real_y = tile_y*this.tileheight;
+ Vector2i tile_to_real(int layer, int tile_x, int tile_y) {
+ return Vector2i(tile_x*this.layer_tsizes[layer].x, tile_y*this.layer_tsizes[layer].y);
}
SpriteArray get_sprites() {
SpriteArray sprites;
Sprite sprite;
- int real_x, real_y;
+ int layer_id=0;
+ Vector2i pos;
foreach(int[int][int] layer; map) {
for(int x=0; x