Changed egg shadow draw layer so it will no longer appear in front of bonusblocks...
[supertux.git] / src / supertux / tile_manager.cpp
index a6873de..e3072a7 100644 (file)
 #include "supertux/tile_manager.hpp"
 
 #include <limits>
-#include <memory>
 
 #include "lisp/list_iterator.hpp"
 #include "supertux/tile_set.hpp"
 
-TileManager* tile_manager    = NULL;
-TileSet*     current_tileset = NULL;
-
-TileManager::TileManager()
+TileManager::TileManager() :
+  tilesets()
 {
 }
 
@@ -34,21 +31,27 @@ TileManager::~TileManager()
 {
 }
 
-TileSet* TileManager::get_tileset(const std::string &filename)
+TileSet*
+TileManager::get_tileset(const std::string &filename)
 {
   TileSets::const_iterator i = tilesets.find(filename);
   if(i != tilesets.end())
-    return i->second;
-
-  std::auto_ptr<TileSet> tileset (new TileSet(filename));
-  tilesets.insert(std::make_pair(filename, tileset.get()));
-
-  return tileset.release();
+  {
+    return i->second.get();
+  }
+  else
+  {
+    std::unique_ptr<TileSet> tileset(new TileSet(filename));
+    TileSet* result = tileset.get();
+    tilesets.insert(std::make_pair(filename, std::move(tileset)));
+    return result;
+  }
 }
 
-TileSet* TileManager::parse_tileset_definition(const Reader& reader)
+std::unique_ptr<TileSet>
+TileManager::parse_tileset_definition(const Reader& reader)
 {
-  std::auto_ptr<TileSet> result(new TileSet());
+  std::unique_ptr<TileSet> result(new TileSet);
 
   lisp::ListIterator iter(&reader);
   while(iter.next()) {
@@ -59,7 +62,7 @@ TileSet* TileManager::parse_tileset_definition(const Reader& reader)
     }
     const lisp::Lisp* tileset_reader = iter.lisp();
 
-    std::string file; 
+    std::string file;
     if (!tileset_reader->get("file", file)) {
       log_warning << "Skipping tileset import without file name" << std::endl;
       continue;
@@ -77,7 +80,7 @@ TileSet* TileManager::parse_tileset_definition(const Reader& reader)
     result->merge(tileset, start, end, offset);
   }
 
-  return result.release();
+  return std::move(result);
 }
 
 /* EOF */