Removed old Menu::check_menu() and replaced it with Menu::menu_action()
authorIngo Ruhnke <grumbel@gmail.com>
Fri, 15 Aug 2014 08:17:37 +0000 (10:17 +0200)
committerIngo Ruhnke <grumbel@gmail.com>
Fri, 15 Aug 2014 08:22:32 +0000 (10:22 +0200)
25 files changed:
src/gui/menu.cpp
src/gui/menu.hpp
src/gui/menu_manager.cpp
src/gui/menu_manager.hpp
src/supertux/game_session.cpp
src/supertux/menu/addon_menu.cpp
src/supertux/menu/addon_menu.hpp
src/supertux/menu/cheat_menu.hpp
src/supertux/menu/contrib_levelset_menu.cpp
src/supertux/menu/contrib_levelset_menu.hpp
src/supertux/menu/contrib_menu.cpp
src/supertux/menu/contrib_menu.hpp
src/supertux/menu/game_menu.cpp
src/supertux/menu/game_menu.hpp
src/supertux/menu/joystick_menu.hpp
src/supertux/menu/keyboard_menu.hpp
src/supertux/menu/language_menu.hpp
src/supertux/menu/main_menu.cpp
src/supertux/menu/main_menu.hpp
src/supertux/menu/options_menu.hpp
src/supertux/menu/profile_menu.hpp
src/supertux/menu/worldmap_menu.cpp
src/supertux/menu/worldmap_menu.hpp
src/supertux/title_screen.cpp
src/worldmap/worldmap.cpp

index d6dff24..b45ae06 100644 (file)
@@ -36,7 +36,6 @@ static const float MENU_REPEAT_INITIAL = 0.4f;
 static const float MENU_REPEAT_RATE    = 0.1f;
 
 Menu::Menu() :
-  hit_item(),
   pos(),
   menuaction(),
   delete_character(),
@@ -46,7 +45,6 @@ Menu::Menu() :
   arrange_left(),
   active_item()
 {
-  hit_item = -1;
   menuaction = MENU_ACTION_NONE;
   delete_character = 0;
   mn_input_char = '\0';
@@ -234,7 +232,6 @@ Menu::process_input()
     menuaction = MENU_ACTION_BACK;
   }
 
-  hit_item = -1;
   if(items.size() == 0)
     return;
 
@@ -289,7 +286,6 @@ Menu::process_input()
       break;
 
     case MENU_ACTION_HIT: {
-      hit_item = active_item;
       switch (items[active_item]->kind) {
         case MN_GOTO:
           assert(items[active_item]->target_menu != 0);
@@ -372,20 +368,6 @@ Menu::process_input()
   assert(active_item < int(items.size()));
 }
 
-int
-Menu::check()
-{
-  if (hit_item != -1)
-  {
-    int id = items[hit_item]->id;
-    // Clear event when checked out.. (we would end up in a loop when we try to leave "fake" submenu like Addons or Contrib)
-    hit_item = -1;
-    return id;
-  }
-  else
-    return -1;
-}
-
 void
 Menu::menu_action(MenuItem* )
 {}
index 6ff1ed7..11bd45a 100644 (file)
@@ -67,7 +67,7 @@ public:
                              const std::string& mapping = "");
   MenuItem* add_string_select(int id, const std::string& text);
 
-  virtual void menu_action(MenuItem* item);
+  virtual void menu_action(MenuItem* item) = 0;
 
   void process_input();
 
@@ -77,8 +77,6 @@ public:
   /** Remove all entries from the menu */
   void clear();
 
-  virtual void check_menu() =0;
-
   MenuItem& get_item(int index)
   {
     return *(items[index]);
@@ -105,10 +103,6 @@ public:
   virtual void on_window_resize();
 
 protected:
-  /** Return the index of the menu item that was 'hit' (ie. the user
-      clicked on it) in the last event() call */
-  int check ();
-
   MenuItem* add_item(std::unique_ptr<MenuItem> menu_item);
 
 private:
@@ -116,10 +110,6 @@ private:
   void draw_item(DrawingContext& context, int index);
 
 private:
-  /** Number of the item that got 'hit' (ie. pressed) in the last
-      event()/update() call, -1 if none */
-  int hit_item;
-
   // position of the menu (ie. center of the menu, not top/left)
   Vector pos;
 
index 3f9ff8e..aae71e9 100644 (file)
@@ -201,20 +201,6 @@ MenuManager::draw(DrawingContext& context)
   }
 }
 
-bool
-MenuManager::check_menu()
-{
-  if (current())
-  {
-    current()->check_menu();
-    return true;
-  }
-  else
-  {
-    return false;
-  }
-}
-
 void
 MenuManager::push_menu(int id)
 {
index af86297..643841b 100644 (file)
@@ -49,7 +49,6 @@ public:
   void refresh();
 
   void draw(DrawingContext& context);
-  bool check_menu();
 
   void set_menu(int id);
   void set_menu(std::unique_ptr<Menu> menu);
index 3ddedfc..0a5195f 100644 (file)
@@ -428,7 +428,6 @@ GameSession::update(float elapsed_time)
   }
 
   process_events();
-  MenuManager::instance().check_menu();
 
   // Unpause the game if the menu has been closed
   if (game_pause && !MenuManager::instance().is_active()) {
index 3494062..a32d783 100644 (file)
@@ -22,6 +22,8 @@
 
 #include "addon/addon.hpp"
 #include "addon/addon_manager.hpp"
+#include "gui/menu.hpp"
+#include "gui/menu_item.hpp"
 #include "util/gettext.hpp"
 
 namespace {
@@ -120,9 +122,9 @@ AddonMenu::refresh()
 }
 
 void
-AddonMenu::check_menu()
+AddonMenu::menu_action(MenuItem* item)
 {
-  int index = check();
+  int index = item->id;
 
   if (index == -1)
   {
index a3b62a7..640c5bc 100644 (file)
@@ -34,7 +34,7 @@ public:
   AddonMenu();
 
   void refresh();
-  void check_menu();
+  void menu_action(MenuItem* item) override;
 
 private:
   AddonMenu(const AddonMenu&);
index 708b2d8..55a147f 100644 (file)
@@ -36,7 +36,6 @@ public:
   CheatMenu();
 
   void menu_action(MenuItem* item) override;
-  void check_menu() override {}
 
 private:
   CheatMenu(const CheatMenu&) = delete;
index 3ef0b3b..b0197d4 100644 (file)
@@ -69,20 +69,16 @@ ContribLevelsetMenu::ContribLevelsetMenu(std::unique_ptr<World> world) :
 }
 
 void
-ContribLevelsetMenu::check_menu()
+ContribLevelsetMenu::menu_action(MenuItem* item)
 {
-  int index = check();
-  if (index != -1)
+  if (item->kind == MN_ACTION)
   {
-    if (get_item_by_id(index).kind == MN_ACTION)
-    {
-      sound_manager->stop_music();
+    sound_manager->stop_music();
 
-      // reload the World so that we have something that we can safely
-      // std::move() around without wreaking the ContribMenu
-      std::unique_ptr<World> world = World::load(m_world->get_basedir());
-      GameManager::current()->start_level(std::move(world), m_levelset->get_level_filename(index));
-    }
+    // reload the World so that we have something that we can safely
+    // std::move() around without wreaking the ContribMenu
+    std::unique_ptr<World> world = World::load(m_world->get_basedir());
+    GameManager::current()->start_level(std::move(world), m_levelset->get_level_filename(item->id));
   }
 }
 
index 0374e92..7e1eae5 100644 (file)
@@ -31,7 +31,7 @@ private:
 public:
   ContribLevelsetMenu(std::unique_ptr<World> current_world);
 
-  void check_menu();
+  void menu_action(MenuItem* item) override;
 
 private:
   ContribLevelsetMenu(const ContribLevelsetMenu&);
index d4ae767..802c0ea 100644 (file)
@@ -19,6 +19,7 @@
 #include <physfs.h>
 #include <sstream>
 
+#include "gui/menu_item.hpp"
 #include "gui/menu_manager.hpp"
 #include "supertux/game_manager.hpp"
 #include "supertux/gameconfig.hpp"
@@ -134,9 +135,9 @@ ContribMenu::~ContribMenu()
 }
 
 void
-ContribMenu::check_menu()
+ContribMenu::menu_action(MenuItem* item)
 {
-  int index = check();
+  int index = item->id;
   if (index != -1)
   {
     // reload the World so that we have something that we can safely
index d83f8c2..f655c88 100644 (file)
@@ -31,7 +31,7 @@ public:
   ContribMenu();
   ~ContribMenu();
 
-  void check_menu();
+  void menu_action(MenuItem* item) override;
 
 private:
   ContribMenu(const ContribMenu&);
index 2398338..b73f249 100644 (file)
 
 #include "supertux/menu/game_menu.hpp"
 
+#include "gui/menu.hpp"
+#include "gui/menu_item.hpp"
 #include "gui/menu_manager.hpp"
 #include "supertux/game_session.hpp"
-#include "supertux/screen_manager.hpp"
 #include "supertux/level.hpp"
 #include "supertux/menu/menu_storage.hpp"
 #include "supertux/menu/options_menu.hpp"
+#include "supertux/screen_manager.hpp"
 #include "util/gettext.hpp"
 
 GameMenu::GameMenu()
@@ -37,9 +39,9 @@ GameMenu::GameMenu()
 }
 
 void
-GameMenu::check_menu()
+GameMenu::menu_action(MenuItem* item)
 {
-  switch (check())
+  switch (item->id)
   {
     case MNID_CONTINUE:
       MenuManager::instance().clear_menu_stack();
index 5b34851..4ffaac9 100644 (file)
@@ -32,7 +32,7 @@ private:
 public:
   GameMenu();
 
-  void check_menu() override;
+  void menu_action(MenuItem* item) override;
 
 private:
   GameMenu(const GameMenu&);
index dd4ba14..469ed0d 100644 (file)
@@ -31,8 +31,7 @@ public:
   void refresh_menu_item(Controller::Control id);
 
   std::string get_button_name(int button);
-  virtual void menu_action(MenuItem* item);
-  void check_menu() {}
+  void menu_action(MenuItem* item) override;
 
 private:
   void recreate_menu();
index 054a9ed..83f8f59 100644 (file)
@@ -29,9 +29,9 @@ public:
 
   void refresh();
   std::string get_key_name(SDL_Keycode key);
-  virtual void menu_action(MenuItem* item);
+  void menu_action(MenuItem* item) override;
   InputManager* controller;
-  void check_menu() {}
+
 private:
   KeyboardMenu(const KeyboardMenu&);
   KeyboardMenu& operator=(const KeyboardMenu&);
index 0c4fade..991ce45 100644 (file)
@@ -26,8 +26,7 @@ class LanguageMenu : public Menu
 public:
   LanguageMenu();
 
-  void menu_action(MenuItem* item);
-  void check_menu() {}
+  void menu_action(MenuItem* item) override;
 };
 
 #endif
index a93ff54..acd9b29 100644 (file)
@@ -17,6 +17,7 @@
 #include "supertux/menu/main_menu.hpp"
 
 #include "audio/sound_manager.hpp"
+#include "gui/menu_item.hpp"
 #include "gui/menu_manager.hpp"
 #include "supertux/fadeout.hpp"
 #include "supertux/game_manager.hpp"
@@ -51,9 +52,9 @@ MainMenu::on_window_resize()
 }
 
 void
-MainMenu::check_menu()
+MainMenu::menu_action(MenuItem* item)
 {
-  switch (check())
+  switch (item->id)
   {
     case MNID_STARTGAME:
       {
index 3f0f778..54f8187 100644 (file)
@@ -39,7 +39,7 @@ public:
   MainMenu();
 
   void on_window_resize() override;
-  void check_menu();
+  void menu_action(MenuItem* item) override;
 
 private:
   MainMenu(const MainMenu&);
index 9980e06..84ee8ae 100644 (file)
@@ -26,7 +26,7 @@ public:
   OptionsMenu(bool complete);
   virtual ~OptionsMenu();
 
-  void menu_action(MenuItem* item);
+  void menu_action(MenuItem* item) override;
   void check_menu();
 };
 
index 5ed4648..1e89545 100644 (file)
@@ -24,7 +24,7 @@ class ProfileMenu : public Menu
 public:
   ProfileMenu();
 
-  void menu_action(MenuItem* item);
+  void menu_action(MenuItem* item) override;
 
   void check_menu() {}
 };
index 68a7ab2..f252325 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "supertux/menu/worldmap_menu.hpp"
 
+#include "gui/menu_item.hpp"
 #include "gui/menu_manager.hpp"
 #include "supertux/menu/menu_storage.hpp"
 #include "supertux/menu/options_menu.hpp"
@@ -34,9 +35,9 @@ WorldmapMenu::WorldmapMenu()
 }
 
 void
-WorldmapMenu::check_menu()
+WorldmapMenu::menu_action(MenuItem* item)
 {
-  switch (check())
+  switch (item->id)
   {
     case MNID_RETURNWORLDMAP:
       MenuManager::instance().clear_menu_stack();
index 2ddfd2b..358dabb 100644 (file)
@@ -30,7 +30,7 @@ private:
 public:
   WorldmapMenu();
 
-  void check_menu() override;
+  void menu_action(MenuItem* item) override;
 
 private:
   WorldmapMenu(const WorldmapMenu&);
index ec22c8b..3f7f845 100644 (file)
@@ -137,8 +137,6 @@ TitleScreen::update(float elapsed_time)
 
   make_tux_jump();
 
-  MenuManager::instance().check_menu();
-
   // reopen menu if user closed it (so that the app doesn't close when user
   // accidently hit ESC)
   if(!MenuManager::instance().is_active() && !g_screen_manager->has_pending_fadeout())
index ca70b83..5b69ad2 100644 (file)
@@ -568,12 +568,8 @@ WorldMap::clamp_camera_position(Vector& c) {
 void
 WorldMap::update(float delta)
 {
-  if(!in_level) {
-    if (MenuManager::instance().check_menu())
-    {
-      return;
-    }
-
+  if (!in_level && !MenuManager::instance().is_active())
+  {
     // update GameObjects
     for(size_t i = 0; i < game_objects.size(); ++i) {
       GameObject* object = game_objects[i];