comparison src/tilemap.d @ 1:f193d0c14685

layer support
author fred@reichbier.de
date Thu, 17 Jul 2008 20:19:24 +0200
parents a2d653eb9e99
children a9af6ec19195
comparison
equal deleted inserted replaced
0:a2d653eb9e99 1:f193d0c14685
9 import tileset; 9 import tileset;
10 10
11 typedef Sprite[] SpriteArray; 11 typedef Sprite[] SpriteArray;
12 12
13 class Tilemap { 13 class Tilemap {
14 public int[int][int] map; 14 public int[int][int][int] map; // Layer: x: y: Tile-ID
15 private Tileset tileset; 15 private Tileset tileset;
16 public int width, height, tilewidth, tileheight; 16 public int width, height, tilewidth, tileheight;
17 17
18 this(Tileset tileset, int width, int height, int tilewidth, int tileheight) { 18 this(Tileset tileset, int width, int height, int tilewidth, int tileheight) {
19 this.tileset = tileset; 19 this.tileset = tileset;
35 35
36 SpriteArray get_sprites() { 36 SpriteArray get_sprites() {
37 SpriteArray sprites; 37 SpriteArray sprites;
38 Sprite sprite; 38 Sprite sprite;
39 int real_x, real_y; 39 int real_x, real_y;
40 for(int x=0; x<width; x++) { 40 foreach(int[int][int] layer; map) {
41 if(x in this.map) { 41 for(int x=0; x<width; x++) {
42 for(int y=0; y<height; y++) { 42 if(x in layer) {
43 if(y in this.map[x]) { 43 for(int y=0; y<height; y++) {
44 sprite = new Sprite; 44 if(y in layer[x]) {
45 tile_to_real(x, y, real_x, real_y); 45 sprite = new Sprite;
46 sprite.setX(real_x); 46 tile_to_real(x, y, real_x, real_y);
47 sprite.setY(real_y); 47 sprite.setX(real_x);
48 sprite.setImage(this.tileset.tiles[this.map[x][y]]); 48 sprite.setY(real_y);
49 sprites ~= sprite; 49 sprite.setImage(this.tileset.tiles[layer[x][y]]);
50 sprites ~= sprite;
51 }
50 } 52 }
51 } 53 }
52 } 54 }
53 } 55 }
54 return sprites; 56 return sprites;