4 #include "display_manager.h"
9 TileMap::TileMap(DisplayManager& display_manager, Level* newlevel)
12 display_manager.add_drawable(this, LAYER_BACKGROUNDTILES);
13 display_manager.add_drawable(this, LAYER_TILES);
14 display_manager.add_drawable(this, LAYER_FOREGROUNDTILES);
22 TileMap::action(float )
27 TileMap::draw(ViewPort& viewport, int layer)
29 std::vector<std::vector<unsigned int> >* tiles;
31 case LAYER_BACKGROUNDTILES:
32 tiles = &level->bg_tiles; break;
34 tiles = &level->ia_tiles; break;
35 case LAYER_FOREGROUNDTILES:
36 tiles = &level->fg_tiles; break;
38 assert(!"Wrong layer when drawing tilemap.");
41 int tsx = int(viewport.get_translation().x / 32); // tilestartindex x
42 int tsy = int(viewport.get_translation().y / 32); // tilestartindex y
43 int sx = - (int(viewport.get_translation().x) % 32);
44 int sy = - (int(viewport.get_translation().y) % 32);
45 for(int x = sx, tx = tsx; x < screen->w && tx < int((*tiles)[0].size());
47 for(int y = sy, ty = tsy; y < screen->h && ty < int(tiles->size());
49 Tile::draw(x, y, (*tiles) [ty][tx]);