Patch for multiple joysticks from const86 <const@mimas.ru>
[supertux.git] / src / supertux / menu / menu_storage.cpp
index 22a6949..3a3ea91 100644 (file)
 
 #include "supertux/menu/options_menu.hpp"
 #include "supertux/menu/profile_menu.hpp"
+#include "supertux/menu/joystick_menu.hpp"
+#include "supertux/menu/keyboard_menu.hpp"
+#include "supertux/globals.hpp"
 
-Menu* MenuStorage::options_menu = 0;
-Menu* MenuStorage::profile_menu = 0;
+OptionsMenu*  MenuStorage::options_menu = 0;
+ProfileMenu*  MenuStorage::profile_menu = 0;
+KeyboardMenu* MenuStorage::key_options_menu = 0;
+JoystickMenu* MenuStorage::joystick_options_menu = 0;
 
-Menu*
+OptionsMenu*
 MenuStorage::get_options_menu()
 {
   options_menu = new OptionsMenu();
   return options_menu;
 }
 
-void
-MenuStorage::free_options_menu()
-{
-  delete options_menu;
-  options_menu = 0;
-}
-
-Menu*
+ProfileMenu*
 MenuStorage::get_profile_menu()
 {
   profile_menu = new ProfileMenu();
   return profile_menu;
 }
 
-void
-MenuStorage::free_profile_menu()
+KeyboardMenu*
+MenuStorage::get_key_options_menu()
+{
+  if (!key_options_menu)
+  { // FIXME: this in never freed
+    key_options_menu = new KeyboardMenu(g_jk_controller);
+  }
+
+  return key_options_menu;
+}
+
+JoystickMenu*
+MenuStorage::get_joystick_options_menu()
 {
-  delete profile_menu;
-  profile_menu = 0;
+  if (!joystick_options_menu)
+  { // FIXME: this in never freed
+    joystick_options_menu = new JoystickMenu(g_jk_controller);
+  }
+
+  return joystick_options_menu;
 }
 
 /* EOF */