Renamed namespaces to all lowercase
[supertux.git] / src / supertux / menu / contrib_menu.cpp
index 092a947..5b6ee41 100644 (file)
 
 #include <physfs.h>
 
+#include "gui/menu_manager.hpp"
+#include "supertux/menu/contrib_world_menu.hpp"
+#include "supertux/title_screen.hpp"
 #include "supertux/world.hpp"
 #include "util/gettext.hpp"
 
-ContribMenu::ContribMenu()
+ContribMenu::ContribMenu() :
+  m_contrib_world_menu(),
+  m_contrib_worlds()
 {
   /** Generating contrib levels list by making use of Level Subset  */
   std::vector<std::string> level_worlds;
@@ -33,7 +38,6 @@ ContribMenu::ContribMenu()
   }
   PHYSFS_freeList(files);
 
-
   add_label(_("Contrib Levels"));
   add_hl();
 
@@ -46,7 +50,7 @@ ContribMenu::ContribMenu()
       world->load(*it + "/info");
       if (!world->hide_from_contribs) 
       {
-        add_entry(i++, world->title);
+        add_entry(i++, world->get_title());
         m_contrib_worlds.push_back(world.release());
       }
     }
@@ -69,17 +73,23 @@ ContribMenu::~ContribMenu()
   m_contrib_worlds.clear();
 }
 
-World*
-ContribMenu::get_current_world()
+void
+ContribMenu::check_menu()
 {
   int index = check();
-  if (index == -1)
-  {
-    return 0;
-  }
-  else
+  if (index != -1)
   {
-    return m_contrib_worlds[index];
+    World* world = m_contrib_worlds[index];
+    
+    if (!world->is_levelset) 
+    {
+      TitleScreen::start_game(world);
+    }
+    else 
+    {
+      m_contrib_world_menu.reset(new ContribWorldMenu(*world));
+      MenuManager::push_current(m_contrib_world_menu.get());
+    }
   }
 }