Move style guide stuff into separate file
[supertux.git] / src / control / keyboard_menu.cpp
1 //  SuperTux
2 //  Copyright (C) 2006 Matthias Braun <matze@braunis.de>,
3 //                2007 Ingo Ruhnke <grumbel@gmx.de>
4 //
5 //  This program is free software: you can redistribute it and/or modify
6 //  it under the terms of the GNU General Public License as published by
7 //  the Free Software Foundation, either version 3 of the License, or
8 //  (at your option) any later version.
9 //
10 //  This program is distributed in the hope that it will be useful,
11 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
12 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 //  GNU General Public License for more details.
14 //
15 //  You should have received a copy of the GNU General Public License
16 //  along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
18 #include "control/keyboard_menu.hpp"
19
20 #include "util/gettext.hpp"
21 #include "supertux/gameconfig.hpp"
22
23 KeyboardMenu::KeyboardMenu(JoystickKeyboardController* _controller) :
24   controller(_controller)
25 {
26   add_label(_("Setup Keyboard"));
27   add_hl();
28   add_controlfield(Controller::UP,         _("Up"));
29   add_controlfield(Controller::DOWN,       _("Down"));
30   add_controlfield(Controller::LEFT,       _("Left"));
31   add_controlfield(Controller::RIGHT,      _("Right"));
32   add_controlfield(Controller::JUMP,       _("Jump"));
33   add_controlfield(Controller::ACTION,     _("Action"));
34   add_controlfield(Controller::PEEK_LEFT,  _("Peek Left"));
35   add_controlfield(Controller::PEEK_RIGHT, _("Peek Right"));
36   add_controlfield(Controller::PEEK_UP,    _("Peek Up"));
37   add_controlfield(Controller::PEEK_DOWN,  _("Peek Down"));
38   if (g_config->console_enabled) {
39     add_controlfield(Controller::CONSOLE, _("Console"));
40   }
41   add_toggle(Controller::CONTROLCOUNT, _("Jump with Up"), controller->jump_with_up_kbd);
42   add_hl();
43   add_back(_("Back"));
44   update();
45 }
46
47 KeyboardMenu::~KeyboardMenu()
48 {}
49
50 std::string
51 KeyboardMenu::get_key_name(SDLKey key)
52 {
53   switch(key) {
54     case SDLK_UNKNOWN:
55       return _("None");
56     case SDLK_UP:
57       return _("Up cursor");
58     case SDLK_DOWN:
59       return _("Down cursor");
60     case SDLK_LEFT:
61       return _("Left cursor");
62     case SDLK_RIGHT:
63       return _("Right cursor");
64     case SDLK_RETURN:
65       return _("Return");
66     case SDLK_SPACE:
67       return _("Space");
68     case SDLK_RSHIFT:
69       return _("Right Shift");
70     case SDLK_LSHIFT:
71       return _("Left Shift");
72     case SDLK_RCTRL:
73       return _("Right Control");
74     case SDLK_LCTRL:
75       return _("Left Control");
76     case SDLK_RALT:
77       return _("Right Alt");
78     case SDLK_LALT:
79       return _("Left Alt");
80     default:
81       return SDL_GetKeyName((SDLKey) key);
82   }
83 }
84
85 void
86 KeyboardMenu::menu_action(MenuItem* item)
87 {
88   if(item->id >= 0 && item->id < Controller::CONTROLCOUNT){
89     item->change_input(_("Press Key"));
90     controller->wait_for_key = item->id;
91   } else if( item->id == Controller::CONTROLCOUNT) {
92     controller->jump_with_up_kbd = item->toggled;
93   } 
94 }
95
96 void
97 KeyboardMenu::update()
98 {
99   // update menu
100   get_item_by_id((int) Controller::UP).change_input(get_key_name(
101                                                       controller->reversemap_key(Controller::UP)));
102   get_item_by_id((int) Controller::DOWN).change_input(get_key_name(
103                                                         controller->reversemap_key(Controller::DOWN)));
104   get_item_by_id((int) Controller::LEFT).change_input(get_key_name(
105                                                         controller->reversemap_key(Controller::LEFT)));
106   get_item_by_id((int) Controller::RIGHT).change_input(get_key_name(
107                                                          controller->reversemap_key(Controller::RIGHT)));
108   get_item_by_id((int) Controller::JUMP).change_input(get_key_name(
109                                                         controller->reversemap_key(Controller::JUMP)));
110   get_item_by_id((int) Controller::ACTION).change_input(get_key_name(
111                                                           controller->reversemap_key(Controller::ACTION)));
112   get_item_by_id((int) Controller::PEEK_LEFT).change_input(get_key_name(
113                                                              controller->reversemap_key(Controller::PEEK_LEFT)));
114   get_item_by_id((int) Controller::PEEK_RIGHT).change_input(get_key_name(
115                                                               controller->reversemap_key(Controller::PEEK_RIGHT)));
116   get_item_by_id((int) Controller::PEEK_UP).change_input(get_key_name(
117                                                            controller->reversemap_key(Controller::PEEK_UP)));
118   get_item_by_id((int) Controller::PEEK_DOWN).change_input(get_key_name(
119                                                              controller->reversemap_key(Controller::PEEK_DOWN)));
120   if (g_config->console_enabled) {
121     get_item_by_id((int) Controller::CONSOLE).change_input(get_key_name(
122                                                              controller->reversemap_key(Controller::CONSOLE)));
123   }
124   get_item_by_id(Controller::CONTROLCOUNT).toggled = controller->jump_with_up_kbd;
125 }
126
127 /* EOF */