added bastis csound files
[supertux.git] / src / tile_manager.h
index 2faa362..961e077 100644 (file)
@@ -27,8 +27,7 @@
 #include <map>
 #include <stdint.h>
 #include <assert.h>
-
-class Tile;
+#include "tile.h"
 
 struct TileGroup
 {
@@ -43,24 +42,20 @@ struct TileGroup
 
 class TileManager
 {
- private:
-  TileManager();
-  ~TileManager();
-  
+private:
   typedef std::vector<Tile*> Tiles;
   Tiles tiles;
 
   static TileManager* instance_ ;
   std::set<TileGroup> tilegroups;
-  void load_tileset(std::string filename);
 
-  std::string current_tileset;
+  std::string tiles_path;
   
- public:
-  static TileManager* instance()
-  { return instance_ ? instance_ : instance_ = new TileManager(); }
-  static void destroy_instance()
-  { delete instance_; instance_ = 0; }
+  void load_tileset(std::string filename);
+
+public:
+  TileManager(const std::string& filename);
+  ~TileManager();
 
   const std::set<TileGroup>& get_tilegroups() const
   {
@@ -70,22 +65,32 @@ class TileManager
   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* 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(tiles_path);
+    
+    return tile;
   }
 
   uint32_t get_max_tileid() const
   {
     return tiles.size();
   }
+
+  int get_default_width() const
+  {
+    return 32;
+  }
+
+  int get_default_height() const
+  {
+    return 32;
+  }
 };
 
 #endif