make joystick_options_menu and key_options_menu part of joystickkeyboardcontroller...
authormathnerd314 <mathnerd314@837edb03-e0f3-0310-88ca-d4d4e8b29345>
Sun, 7 Mar 2010 23:47:14 +0000 (23:47 +0000)
committermathnerd314 <mathnerd314@837edb03-e0f3-0310-88ca-d4d4e8b29345>
Sun, 7 Mar 2010 23:47:14 +0000 (23:47 +0000)
git-svn-id: http://supertux.lethargik.org/svn/supertux/trunk/supertux@6576 837edb03-e0f3-0310-88ca-d4d4e8b29345

src/control/joystickkeyboardcontroller.cpp
src/control/joystickkeyboardcontroller.hpp
src/supertux/menu/menu_storage.cpp
src/supertux/menu/menu_storage.hpp
src/supertux/menu/options_menu.cpp

index 761c6a0..d007cc1 100644 (file)
@@ -45,7 +45,9 @@ JoystickKeyboardController::JoystickKeyboardController() :
   jump_with_up_joy(),
   jump_with_up_kbd(),
   wait_for_key(-1), 
-  wait_for_joystick(-1)
+  wait_for_joystick(-1),
+  key_options_menu(0),
+  joystick_options_menu(0)
 {
   // initialize default keyboard map
   keymap[SDLK_LEFT]     = LEFT;
@@ -108,6 +110,8 @@ JoystickKeyboardController::~JoystickKeyboardController()
     if(*i != 0)
       SDL_JoystickClose(*i);
   }
+  delete key_options_menu;
+  delete joystick_options_menu;
 }
 
 void
@@ -171,6 +175,22 @@ JoystickKeyboardController::updateAvailableJoysticks()
   }
 }
 
+KeyboardMenu*
+JoystickKeyboardController::get_key_options_menu()
+{
+       if (!key_options_menu)
+               key_options_menu = new KeyboardMenu(this);
+       return key_options_menu;
+}
+
+JoystickMenu*
+JoystickKeyboardController::get_joystick_options_menu()
+{
+       if (!joystick_options_menu)
+               joystick_options_menu = new JoystickMenu(this);
+       return joystick_options_menu;
+}
+
 void
 JoystickKeyboardController::read(const Reader& lisp)
 {
@@ -353,7 +373,7 @@ JoystickKeyboardController::process_button_event(const SDL_JoyButtonEvent& jbutt
     if(jbutton.state == SDL_PRESSED)
     {
       bind_joybutton(jbutton.button, (Control)wait_for_joystick);
-      MenuStorage::get_joystick_options_menu()->update();
+      get_joystick_options_menu()->update();
       reset();
       wait_for_joystick = -1;
     }
@@ -380,7 +400,7 @@ JoystickKeyboardController::process_axis_event(const SDL_JoyAxisEvent& jaxis)
       else
         bind_joyaxis(jaxis.axis + 1, Control(wait_for_joystick));
 
-      MenuStorage::get_joystick_options_menu()->update();
+      get_joystick_options_menu()->update();
       wait_for_joystick = -1;
     }
   }
@@ -436,7 +456,7 @@ JoystickKeyboardController::process_hat_event(const SDL_JoyHatEvent& jhat)
     if (changed & SDL_HAT_RIGHT && jhat.value & SDL_HAT_RIGHT)
       bind_joyhat(SDL_HAT_RIGHT, (Control)wait_for_joystick);
 
-    MenuStorage::get_joystick_options_menu()->update();
+    get_joystick_options_menu()->update();
     wait_for_joystick = -1;
   }
   else
@@ -563,14 +583,14 @@ JoystickKeyboardController::process_menu_key_event(const SDL_Event& event)
       bind_key(event.key.keysym.sym, (Control) wait_for_key);
     }
     reset();
-    MenuStorage::get_key_options_menu()->update();
+    get_key_options_menu()->update();
     wait_for_key = -1;
     return;
   }
   if(wait_for_joystick >= 0) {
     if(event.key.keysym.sym == SDLK_ESCAPE) {
       reset();
-      MenuStorage::get_joystick_options_menu()->update();
+      get_joystick_options_menu()->update();
       wait_for_joystick = -1;
     }
     return;
index 33d6020..7ef6882 100644 (file)
@@ -46,8 +46,8 @@ public:
   void read(const Reader& lisp);
   void reset();
 
-  Menu* get_key_options_menu();
-  Menu* get_joystick_options_menu();
+  KeyboardMenu* get_key_options_menu();
+  JoystickMenu* get_joystick_options_menu();
   void updateAvailableJoysticks();
 
 private:
@@ -114,6 +114,9 @@ private:
   int wait_for_key;
   int wait_for_joystick;
 
+  KeyboardMenu* key_options_menu;
+  JoystickMenu* joystick_options_menu;
+
 private:
   JoystickKeyboardController(const JoystickKeyboardController&);
   JoystickKeyboardController& operator=(const JoystickKeyboardController&);
index ea1ae46..e2b5a2f 100644 (file)
@@ -24,8 +24,6 @@
 
 OptionsMenu*  MenuStorage::options_menu = 0;
 ProfileMenu*  MenuStorage::profile_menu = 0;
-KeyboardMenu* MenuStorage::key_options_menu = 0;
-JoystickMenu* MenuStorage::joystick_options_menu = 0;
 
 OptionsMenu*
 MenuStorage::get_options_menu()
@@ -41,26 +39,4 @@ MenuStorage::get_profile_menu()
   return profile_menu;
 }
 
-KeyboardMenu*
-MenuStorage::get_key_options_menu()
-{
-  if (!key_options_menu)
-  { // FIXME: this in never freed
-    key_options_menu = new KeyboardMenu(g_main_controller);
-  }
-
-  return key_options_menu;
-}
-
-JoystickMenu*
-MenuStorage::get_joystick_options_menu()
-{
-  if (!joystick_options_menu)
-  { // FIXME: this in never freed
-    joystick_options_menu = new JoystickMenu(g_main_controller);
-  }
-
-  return joystick_options_menu;
-}
-
 /* EOF */
index 8ac6bf2..9fb5a3d 100644 (file)
@@ -30,14 +30,10 @@ public:
 
   static OptionsMenu*  get_options_menu();
   static ProfileMenu*  get_profile_menu();
-  static KeyboardMenu* get_key_options_menu();
-  static JoystickMenu* get_joystick_options_menu();
 
 private:
   static OptionsMenu*  options_menu;
   static ProfileMenu*  profile_menu;
-  static KeyboardMenu* key_options_menu;
-  static JoystickMenu* joystick_options_menu;
 
 private:
   MenuStorage(const MenuStorage&);
index f01b402..913da5e 100644 (file)
@@ -157,10 +157,10 @@ OptionsMenu::OptionsMenu() :
     add_inactive(MNID_MUSIC, _("Music (disabled)"));
   }
   
-  add_submenu(_("Setup Keyboard"), MenuStorage::get_key_options_menu())
+  add_submenu(_("Setup Keyboard"), g_main_controller->get_key_options_menu())
     ->set_help(_("Configure key-action mappings"));
 
-  add_submenu(_("Setup Joystick"), MenuStorage::get_joystick_options_menu())
+  add_submenu(_("Setup Joystick"), g_main_controller->get_joystick_options_menu())
     ->set_help(_("Configure joystick control-action mappings"));
   add_hl();
   add_back(_("Back"));