Moved TitleScreen::get_level_name() into GameManager, not a great place either, but...
authorIngo Ruhnke <grumbel@gmail.com>
Mon, 11 Aug 2014 03:08:50 +0000 (05:08 +0200)
committerIngo Ruhnke <grumbel@gmail.com>
Mon, 11 Aug 2014 22:21:35 +0000 (00:21 +0200)
src/supertux/game_manager.cpp
src/supertux/game_manager.hpp
src/supertux/menu/contrib_world_menu.cpp
src/supertux/title_screen.cpp
src/supertux/title_screen.hpp

index ba5e72f..1d20184 100644 (file)
@@ -19,6 +19,8 @@
 #include <sstream>
 
 #include "gui/menu_manager.hpp"
+#include "lisp/lisp.hpp"
+#include "lisp/parser.hpp"
 #include "supertux/game_session.hpp"
 #include "supertux/gameconfig.hpp"
 #include "supertux/globals.hpp"
@@ -65,4 +67,28 @@ GameManager::start_game(std::unique_ptr<World> world)
   }
 }
 
+std::string
+GameManager::get_level_name(const std::string& filename) const
+{
+  try
+  {
+    lisp::Parser parser;
+    const lisp::Lisp* root = parser.parse(filename);
+
+    const lisp::Lisp* level = root->get_lisp("supertux-level");
+    if(!level)
+      return "";
+
+    std::string name;
+    level->get("name", name);
+    return name;
+  }
+  catch(const std::exception& e)
+  {
+    log_warning << "Problem getting name of '" << filename << "': "
+                << e.what() << std::endl;
+    return "";
+  }
+}
+
 /* EOF */
index 2e87896..f349032 100644 (file)
@@ -35,6 +35,8 @@ public:
   void start_game(std::unique_ptr<World> world);
   void start_level(std::unique_ptr<World> world, int index);
 
+  std::string get_level_name(const std::string& levelfile) const;
+
 private:
   GameManager(const GameManager&) = delete;
   GameManager& operator=(const GameManager&) = delete;
index c03c543..799e410 100644 (file)
@@ -32,11 +32,11 @@ ContribWorldMenu::ContribWorldMenu(std::unique_ptr<World> world) :
   add_label(m_world->get_title());
   add_hl();
 
-  for (unsigned int i = 0; i < m_world->get_num_levels(); ++i)
+  for (int i = 0; i < m_world->get_num_levels(); ++i)
   {
     /** get level's title */
     std::string filename = m_world->get_level_filename(i);
-    std::string title = TitleScreen::get_level_name(filename);
+    std::string title = GameManager::current()->get_level_name(filename);
     add_entry(i, title);
   }
 
index 62d810e..7b687b1 100644 (file)
@@ -61,27 +61,6 @@ TitleScreen::TitleScreen(PlayerStatus* player_status) :
    );
 }
 
-std::string
-TitleScreen::get_level_name(const std::string& filename)
-{
-  try {
-    lisp::Parser parser;
-    const lisp::Lisp* root = parser.parse(filename);
-
-    const lisp::Lisp* level = root->get_lisp("supertux-level");
-    if(!level)
-      return "";
-
-    std::string name;
-    level->get("name", name);
-    return name;
-  } catch(std::exception& e) {
-    log_warning << "Problem getting name of '" << filename << "': "
-                << e.what() << std::endl;
-    return "";
-  }
-}
-
 void
 TitleScreen::make_tux_jump()
 {
index 69354c1..a749791 100644 (file)
@@ -34,9 +34,6 @@ class World;
 class TitleScreen : public Screen
 {
 public:
-  static std::string get_level_name(const std::string& levelfile);
-
-public:
   TitleScreen(PlayerStatus* player_status);
   virtual ~TitleScreen();