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;
+			}
 		    }
 		}
 	    }