Moved World loading into a factory method World::load()
authorIngo Ruhnke <grumbel@gmail.com>
Sun, 10 Aug 2014 20:52:49 +0000 (22:52 +0200)
committerIngo Ruhnke <grumbel@gmail.com>
Mon, 11 Aug 2014 22:21:35 +0000 (00:21 +0200)
src/supertux/menu/contrib_menu.cpp
src/supertux/menu/main_menu.cpp
src/supertux/world.cpp
src/supertux/world.hpp

index adeaa42..d957e1e 100644 (file)
@@ -50,9 +50,7 @@ ContribMenu::ContribMenu() :
   {
     try
     {
-      std::unique_ptr<World> world (new World);
-
-      world->load(*it + "/info");
+      std::unique_ptr<World> world = World::load(*it + "/info");
 
       if (!world->hide_from_contribs())
       {
index 61c54fe..65ed61d 100644 (file)
@@ -57,8 +57,7 @@ MainMenu::check_menu()
   {
     case MNID_STARTGAME:
       {
-        std::unique_ptr<World> world(new World);
-        world->load("levels/world1/info");
+        std::unique_ptr<World> world = World::load("levels/world1/info");
         GameManager::current()->start_game(std::move(world));
       }
       break;
index fbfe809..794f8ae 100644 (file)
 #include "util/string_util.hpp"
 #include "worldmap/worldmap.hpp"
 
+std::unique_ptr<World>
+World::load(const std::string& filename)
+{
+  std::unique_ptr<World> world(new World);
+  world->load_(filename);
+  return std::move(world);
+}
+
 World::World() :
   m_worldmap_filename(),
   m_levels(),
@@ -74,7 +82,7 @@ World::set_savegame_filename(const std::string& filename)
 }
 
 void
-World::load(const std::string& filename)
+World::load_(const std::string& filename)
 {
   m_basedir = FileSystem::dirname(filename);
   m_worldmap_filename = m_basedir + "worldmap.stwm";
index a7ffd27..5d305bc 100644 (file)
@@ -17,6 +17,7 @@
 #ifndef HEADER_SUPERTUX_SUPERTUX_WORLD_HPP
 #define HEADER_SUPERTUX_SUPERTUX_WORLD_HPP
 
+#include <memory>
 #include <squirrel.h>
 #include <string>
 #include <vector>
@@ -27,12 +28,18 @@ class PlayerStatus;
 
 class World : public Currenton<World>
 {
-public:
+private:
   World();
+
+  void load_(const std::string& filename);
+
+public:
+  static std::unique_ptr<World> load(const std::string& filename);
+
+public:
   ~World();
 
   void set_savegame_filename(const std::string& filename);
-  void load(const std::string& filename);
 
   void save_state();
   void load_state();