lazily load tile images to speedup startup times
[supertux.git] / src / tile_manager.h
index 3e9052f..0e58613 100644 (file)
@@ -27,8 +27,7 @@
 #include <map>
 #include <stdint.h>
 #include <assert.h>
-
-class Tile;
+#include "tile.h"
 
 struct TileGroup
 {
@@ -43,7 +42,7 @@ struct TileGroup
 
 class TileManager
 {
- private:
+private:
   TileManager();
   ~TileManager();
   
@@ -54,9 +53,7 @@ class TileManager
   std::set<TileGroup> tilegroups;
   void load_tileset(std::string filename);
 
-  std::string current_tileset;
-  
- public:
+public:
   static TileManager* instance()
   { return instance_ ? instance_ : instance_ = new TileManager(); }
   static void destroy_instance()
@@ -70,7 +67,16 @@ class TileManager
   const Tile* get(uint32_t id) const
   {
     assert(id < tiles.size());
-    return tiles[id];
+    Tile* tile = tiles[id];
+    if(!tile) {
+      std::cout << "TileManager: Invalid tile: " << id << std::endl;
+      return tiles[0];
+    }
+
+    if(tile->images.size() == 0 && tile->imagespecs.size() != 0)
+      tile->load_images();
+    
+    return tile;
   }
 
   uint32_t get_max_tileid() const
@@ -80,5 +86,3 @@ class TileManager
 };
 
 #endif
-
-/* EOF */