X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Ftile_manager.h;h=6c2e8cc1323304e4a1e0bfd82358b8a11c982dd1;hb=f41a5719a2dc1a50674c69fa511c38a152cc4b03;hp=a55fcb84d8f228fe04af0fce23835ab9bc9665a1;hpb=c79b901309bf5e0544fef1e92d264f51402f4370;p=supertux.git diff --git a/src/tile_manager.h b/src/tile_manager.h index a55fcb84d..6c2e8cc13 100644 --- a/src/tile_manager.h +++ b/src/tile_manager.h @@ -24,6 +24,9 @@ #include #include #include +#include +#include +#include class Tile; @@ -44,9 +47,11 @@ class TileManager TileManager(); ~TileManager(); - std::vector 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; @@ -57,23 +62,29 @@ 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; } - Tile& get(unsigned int id) { + const std::set& get_tilegroups() const + { + return tilegroups; + } - if(id < tiles.size()) + const Tile* get(uint32_t id) const + { + assert(id < tiles.size()); + Tile* t = tiles[id]; + if (t) { - return *tiles[id]; + return t; } else { - // Never return 0, but return the 0th tile instead so that - // user code doesn't have to check for NULL pointers all over - // the place - return *tiles[0]; - } + std::cout << "TileManager: Invalid tile: " << id << std::endl; + return tiles[0]; + } + } + + uint32_t get_max_tileid() const + { + return tiles.size(); } };