Mercurial > projects > myrrdin
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; |