Mercurial > projects > myrrdin
changeset 1:f193d0c14685
layer support
author | fred@reichbier.de |
---|---|
date | Thu, 17 Jul 2008 20:19:24 +0200 |
parents | a2d653eb9e99 |
children | fc2f936a961c |
files | src/test.d src/tilemap.d |
diffstat | 2 files changed, 21 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/test.d Thu Jul 17 18:52:55 2008 +0200 +++ b/src/test.d Thu Jul 17 20:19:24 2008 +0200 @@ -10,15 +10,22 @@ import imagecache; import tilemap; import tileset; +import xmlmap; +import tools; int main(char[][] args) { +// Tilemap map = parse_map(read_file_contents("map-example.xml")); Cache cache = new Cache("gfx"); 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++) { - map.map[x][x] = 0; + 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);
--- a/src/tilemap.d Thu Jul 17 18:52:55 2008 +0200 +++ b/src/tilemap.d Thu Jul 17 20:19:24 2008 +0200 @@ -11,7 +11,7 @@ typedef Sprite[] SpriteArray; class Tilemap { - public int[int][int] map; + public int[int][int][int] map; // Layer: x: y: Tile-ID private Tileset tileset; public int width, height, tilewidth, tileheight; @@ -37,16 +37,18 @@ SpriteArray sprites; Sprite sprite; int real_x, real_y; - for(int x=0; x<width; x++) { - if(x in this.map) { - for(int y=0; y<height; y++) { - if(y in this.map[x]) { - sprite = new Sprite; - tile_to_real(x, y, real_x, real_y); - sprite.setX(real_x); - sprite.setY(real_y); - sprite.setImage(this.tileset.tiles[this.map[x][y]]); - sprites ~= sprite; + foreach(int[int][int] layer; map) { + for(int x=0; x<width; x++) { + if(x in layer) { + for(int y=0; y<height; y++) { + if(y in layer[x]) { + sprite = new Sprite; + tile_to_real(x, y, real_x, real_y); + sprite.setX(real_x); + sprite.setY(real_y); + sprite.setImage(this.tileset.tiles[layer[x][y]]); + sprites ~= sprite; + } } } }