# 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