X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftile_manager.h;h=6c2e8cc1323304e4a1e0bfd82358b8a11c982dd1;hb=f41a5719a2dc1a50674c69fa511c38a152cc4b03;hp=67c7512227c6779a7afe8b74b6f7e0e84c1c7c79;hpb=9f43687076203b3769cd2b9a499d1fb57cd8c40f;p=supertux.git diff --git a/src/tile_manager.h b/src/tile_manager.h index 67c751222..6c2e8cc13 100644 --- a/src/tile_manager.h +++ b/src/tile_manager.h @@ -25,6 +25,8 @@ #include #include #include +#include +#include class Tile; @@ -45,12 +47,11 @@ class TileManager TileManager(); ~TileManager(); -// std::vector tiles; - typedef std::map Tiles; + typedef std::vector Tiles; Tiles tiles; static TileManager* instance_ ; - static std::set* tilegroups_; + std::set tilegroups; void load_tileset(std::string filename); std::string current_tileset; @@ -61,15 +62,30 @@ class TileManager static void destroy_instance() { delete instance_; instance_ = 0; } - void draw_tile(DrawingContext& context, unsigned int id, - const Vector& pos, int layer); - - static std::set* tilegroups() { if(!instance_) { instance_ = new TileManager(); } return tilegroups_ ? tilegroups_ : tilegroups_ = new std::set; } + const std::set& get_tilegroups() const + { + return tilegroups; + } - unsigned int total_ids() - { return tiles.size(); } + const Tile* get(uint32_t id) const + { + assert(id < tiles.size()); + Tile* t = tiles[id]; + if (t) + { + return t; + } + else + { + std::cout << "TileManager: Invalid tile: " << id << std::endl; + return tiles[0]; + } + } - Tile* get(unsigned int id); + uint32_t get_max_tileid() const + { + return tiles.size(); + } }; #endif