#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()
{
}
{
}
-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()) {
}
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;
result->merge(tileset, start, end, offset);
}
- return result.release();
+ return std::move(result);
}
/* EOF */