Possible fix for expression that's always false
[supertux.git] / src / supertux / menu / joystick_menu.cpp
index 7a8f7cc..adde0c5 100644 (file)
@@ -1,6 +1,6 @@
 //  SuperTux
 //  Copyright (C) 2006 Matthias Braun <matze@braunis.de>,
-//                2007 Ingo Ruhnke <grumbel@gmx.de>
+//           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->get_num_joysticks() > 0)
     {
       m_joysticks_available = true;
 
@@ -68,13 +70,18 @@ JoystickMenu::recreate_menu()
       add_controlfield(Controller::RIGHT,       _("Right"));
       add_controlfield(Controller::JUMP,        _("Jump"));
       add_controlfield(Controller::ACTION,      _("Action"));
-      add_controlfield(Controller::PAUSE_MENU,  _("Pause/Menu"));
+      add_controlfield(Controller::START,       _("Pause/Menu"));
       add_controlfield(Controller::PEEK_LEFT,   _("Peek Left"));
       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->bind_next_event_to(static_cast<Controller::Control>(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)
   {
@@ -156,9 +163,9 @@ JoystickMenu::refresh_menu_item(Controller::Control id)
       name << "X";
     else if (abs(axis) == 2)
       name << "Y";
-    else if (abs(axis) == 2)
-      name << "X2";
     else if (abs(axis) == 3)
+      name << "X2";
+    else if (abs(axis) == 4)
       name << "Y2";
     else
       name << abs(axis);
@@ -212,11 +219,18 @@ JoystickMenu::refresh()
 
     refresh_menu_item(Controller::JUMP);
     refresh_menu_item(Controller::ACTION);
-    refresh_menu_item(Controller::PAUSE_MENU);
+    refresh_menu_item(Controller::START);
     refresh_menu_item(Controller::PEEK_LEFT);
     refresh_menu_item(Controller::PEEK_RIGHT);
     refresh_menu_item(Controller::PEEK_UP);
     refresh_menu_item(Controller::PEEK_DOWN);
+
+    if (g_config->developer_mode || g_config->console_enabled) {
+      refresh_menu_item(Controller::CONSOLE);
+    }
+    if (g_config->developer_mode) {
+      refresh_menu_item(Controller::CHEAT_MENU);
+    }
   }
 }