Mercurial > projects > myrrdin
diff src/tilemap.d @ 1:f193d0c14685
layer support
author | fred@reichbier.de |
---|---|
date | Thu, 17 Jul 2008 20:19:24 +0200 |
parents | a2d653eb9e99 |
children | a9af6ec19195 |
line wrap: on
line diff
--- 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; + } } } }