Added cheat menu keyboard and joystick bindings, only visible in developer mode
[supertux.git] / src / supertux / menu / joystick_menu.cpp
index ca32948..fa4545a 100644 (file)
@@ -1,6 +1,6 @@
 //  SuperTux
 //  Copyright (C) 2006 Matthias Braun <matze@braunis.de>,
-//                2007 Ingo Ruhnke <grumbel@gmail.com>
+//           2007,2014 Ingo Ruhnke <grumbel@gmail.com>
 //
 //  This program is free software: you can redistribute it and/or modify
 //  it under the terms of the GNU General Public License as published by
@@ -20,6 +20,7 @@
 #include <sstream>
 
 #include "control/joystick_manager.hpp"
+#include "supertux/gameconfig.hpp"
 #include "util/gettext.hpp"
 
 namespace {
@@ -32,7 +33,7 @@ enum {
 
 } // namespace
 
-JoystickMenu::JoystickMenu(InputManager* input_manager) :
+JoystickMenu::JoystickMenu(InputManager& input_manager) :
   m_input_manager(input_manager),
   m_joysticks_available(false)
 {
@@ -49,16 +50,17 @@ JoystickMenu::recreate_menu()
   add_label(_("Setup Joystick"));
   add_hl();
 
-  add_toggle(MNID_AUTO_JOYSTICK_CFG, _("Manual Joystick Configuration"),
-             !m_input_manager->use_game_controller());
+  add_toggle(MNID_AUTO_JOYSTICK_CFG, _("Manual Configuration"),
+             !m_input_manager.use_game_controller())
+    ->set_help(_("Use manual configuration instead of SDL2's automatic GameController support"));
 
-  if (m_input_manager->use_game_controller())
+  if (m_input_manager.use_game_controller())
   {
     m_joysticks_available = false;
   }
   else
   {
-    if (m_input_manager->joystick_manager->joysticks.size() > 0)
+    if (m_input_manager.joystick_manager->joysticks.size() > 0)
     {
       m_joysticks_available = true;
 
@@ -73,8 +75,13 @@ JoystickMenu::recreate_menu()
       add_controlfield(Controller::PEEK_RIGHT,  _("Peek Right"));
       add_controlfield(Controller::PEEK_UP,     _("Peek Up"));
       add_controlfield(Controller::PEEK_DOWN,   _("Peek Down"));
-
-      add_toggle(MNID_JUMP_WITH_UP, _("Jump with Up"), m_input_manager->joystick_manager->jump_with_up_joy);
+      if (g_config->developer_mode || g_config->console_enabled) {
+        add_controlfield(Controller::CONSOLE, _("Console"));
+      }
+      if (g_config->developer_mode) {
+        add_controlfield(Controller::CHEAT_MENU, _("Cheat Menu"));
+      }
+      add_toggle(MNID_JUMP_WITH_UP, _("Jump with Up"), g_config->joystick_config.jump_with_up_joy);
     }
     else
     {
@@ -111,21 +118,21 @@ JoystickMenu::menu_action(MenuItem* item)
   if (0 <= item->id && item->id < Controller::CONTROLCOUNT)
   {
     item->change_input(_("Press Button"));
-    m_input_manager->joystick_manager->wait_for_joystick = item->id;
+    m_input_manager.joystick_manager->wait_for_joystick = item->id;
   }
   else if (item->id == MNID_JUMP_WITH_UP)
   {
-    m_input_manager->joystick_manager->jump_with_up_joy = item->toggled;
+    g_config->joystick_config.jump_with_up_joy = item->toggled;
   }
   else if (item->id == MNID_AUTO_JOYSTICK_CFG)
   {
-    m_input_manager->use_game_controller(!item->toggled);
-    m_input_manager->reset();
+    m_input_manager.use_game_controller(!item->toggled);
+    m_input_manager.reset();
     recreate_menu();
   }
   else if(item->id == MNID_SCAN_JOYSTICKS)
   {
-    m_input_manager->reset();
+    m_input_manager.reset();
     recreate_menu();
   }
 }
@@ -133,9 +140,9 @@ JoystickMenu::menu_action(MenuItem* item)
 void
 JoystickMenu::refresh_menu_item(Controller::Control id)
 {
-  int button  = m_input_manager->joystick_manager->reversemap_joybutton(id);
-  int axis    = m_input_manager->joystick_manager->reversemap_joyaxis(id);
-  int hat_dir = m_input_manager->joystick_manager->reversemap_joyhat(id);
+  int button  = g_config->joystick_config.reversemap_joybutton(id);
+  int axis    = g_config->joystick_config.reversemap_joyaxis(id);
+  int hat_dir = g_config->joystick_config.reversemap_joyhat(id);
 
   if (button != -1)
   {
@@ -217,6 +224,7 @@ JoystickMenu::refresh()
     refresh_menu_item(Controller::PEEK_RIGHT);
     refresh_menu_item(Controller::PEEK_UP);
     refresh_menu_item(Controller::PEEK_DOWN);
+    refresh_menu_item(Controller::CHEAT_MENU);
   }
 }