X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fsupertux%2Fmenu%2Fjoystick_menu.cpp;h=96c9e03abd568306c667cffde6f1e64677038fe6;hb=fdd4409cae442e2ccf092da87f4b7c6e0a6d7382;hp=9a81e37467241818e80f032f687e180dec531068;hpb=24fc5a4c6959f07a6925dd2ab1af3da7fd982007;p=supertux.git diff --git a/src/supertux/menu/joystick_menu.cpp b/src/supertux/menu/joystick_menu.cpp index 9a81e3746..96c9e03ab 100644 --- a/src/supertux/menu/joystick_menu.cpp +++ b/src/supertux/menu/joystick_menu.cpp @@ -1,5 +1,6 @@ // SuperTux -// Copyright (C) 2009 Ingo Ruhnke +// Copyright (C) 2006 Matthias Braun , +// 2007 Ingo Ruhnke // // 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 @@ -18,15 +19,12 @@ #include +#include "control/joystick_manager.hpp" #include "util/gettext.hpp" -#include "supertux/gameconfig.hpp" -namespace{ - const int SCAN_JOYSTICKS = Controller::CONTROLCOUNT + 1; -} - -JoystickMenu::JoystickMenu(JoystickKeyboardController* _controller) : - controller(_controller) +JoystickMenu::JoystickMenu(InputManager* _controller) : + controller(_controller), + joysticks_available(false) { recreateMenu(); } @@ -40,7 +38,9 @@ JoystickMenu::recreateMenu() clear(); add_label(_("Setup Joystick")); add_hl(); - if(controller->joysticks.size() > 0) { + if(controller->joystick_manager->joysticks.size() > 0) { + joysticks_available = true; + add_controlfield(Controller::UP, _("Up")); add_controlfield(Controller::DOWN, _("Down")); add_controlfield(Controller::LEFT, _("Left")); @@ -53,18 +53,10 @@ JoystickMenu::recreateMenu() add_controlfield(Controller::PEEK_UP, _("Peek Up")); add_controlfield(Controller::PEEK_DOWN, _("Peek Down")); - add_toggle(Controller::CONTROLCOUNT, _("Jump with Up"), controller->jump_with_up_joy); + add_toggle(Controller::CONTROLCOUNT, _("Jump with Up"), controller->joystick_manager->jump_with_up_joy); } else { add_inactive(-1, _("No Joysticks found")); - } - add_inactive(-1,""); - add_entry(SCAN_JOYSTICKS, _("Scan for Joysticks")); - - //Show Joysticks currently activated: - for(std::vector::iterator i = controller->joysticks.begin(); - i != controller->joysticks.end(); ++i) { - if(*i != 0) - add_inactive(-1, SDL_JoystickName(SDL_JoystickIndex(*i)) ); + joysticks_available = false; } add_hl(); @@ -88,21 +80,18 @@ JoystickMenu::menu_action(MenuItem* item) { if (item->id >= 0 && item->id < Controller::CONTROLCOUNT) { item->change_input(_("Press Button")); - controller->wait_for_joystick = item->id; + controller->joystick_manager->wait_for_joystick = item->id; } else if (item->id == Controller::CONTROLCOUNT) { - controller->jump_with_up_joy = item->toggled; - } else if( item->id == SCAN_JOYSTICKS) { - controller->updateAvailableJoysticks(); - recreateMenu(); + controller->joystick_manager->jump_with_up_joy = item->toggled; } } void JoystickMenu::update_menu_item(Controller::Control id) { - int button = controller->reversemap_joybutton(id); - int axis = controller->reversemap_joyaxis(id); - int hat_dir = controller->reversemap_joyhat(id); + int button = controller->joystick_manager->reversemap_joybutton(id); + int axis = controller->joystick_manager->reversemap_joyaxis(id); + int hat_dir = controller->joystick_manager->reversemap_joyhat(id); if (button != -1) { get_item_by_id((int)id).change_input(get_button_name(button)); @@ -163,23 +152,34 @@ JoystickMenu::update_menu_item(Controller::Control id) void JoystickMenu::update() { - if(controller->joysticks.size() == 0) - return; - - update_menu_item(Controller::UP); - update_menu_item(Controller::DOWN); - update_menu_item(Controller::LEFT); - update_menu_item(Controller::RIGHT); - - update_menu_item(Controller::JUMP); - update_menu_item(Controller::ACTION); - update_menu_item(Controller::PAUSE_MENU); - update_menu_item(Controller::PEEK_LEFT); - update_menu_item(Controller::PEEK_RIGHT); - update_menu_item(Controller::PEEK_UP); - update_menu_item(Controller::PEEK_DOWN); - - get_item_by_id(Controller::CONTROLCOUNT).toggled = controller->jump_with_up_joy; + log_info << controller->joystick_manager->joysticks.size() << std::endl; + + if(true) //controller->joysticks.size() == 0) + { + // do nothing + } + else + { + if (!joysticks_available) + { + recreateMenu(); + } + + update_menu_item(Controller::UP); + update_menu_item(Controller::DOWN); + update_menu_item(Controller::LEFT); + update_menu_item(Controller::RIGHT); + + update_menu_item(Controller::JUMP); + update_menu_item(Controller::ACTION); + update_menu_item(Controller::PAUSE_MENU); + update_menu_item(Controller::PEEK_LEFT); + update_menu_item(Controller::PEEK_RIGHT); + update_menu_item(Controller::PEEK_UP); + update_menu_item(Controller::PEEK_DOWN); + + //get_item_by_id(Controller::CONTROLCOUNT).toggled = controller->jump_with_up_joy; + } } /* EOF */