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