X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fmenu.cpp;h=a69dcfdb99a599bf56feb9aa22e5f1ff5c233359;hb=d805b06e883e19e0222fcb13a88780f89b6b0546;hp=5f6d56156d0678b2f442d0fe2c4b7cf037c5a712;hpb=3e894ce62040e302fc86a234e068a67bf337b8a0;p=supertux.git diff --git a/src/menu.cpp b/src/menu.cpp index 5f6d56156..a69dcfdb9 100644 --- a/src/menu.cpp +++ b/src/menu.cpp @@ -214,6 +214,7 @@ Menu::action() case MN_ACTION: case MN_TEXTFIELD: case MN_NUMFIELD: + case MN_CONTROLFIELD: item[active_item].toggled = true; break; @@ -376,6 +377,7 @@ Menu::draw_item(int index, // Position of the current item in the menu } case MN_TEXTFIELD: case MN_NUMFIELD: + case MN_CONTROLFIELD: { int input_pos = input_width/2; int text_pos = (text_width + font_width)/2; @@ -517,76 +519,94 @@ void menu_process_current(void) } /* Check for menu event */ -void menu_event(SDL_keysym* keysym) +void menu_event(SDL_Event& event) { - SDLKey key = keysym->sym; - SDLMod keymod; - char ch[2]; - keymod = SDL_GetModState(); - - /* If the current unicode character is an ASCII character, - assign it to ch. */ - if ( (keysym->unicode & 0xFF80) == 0 ) + SDLKey key; + switch(event.type) { - ch[0] = keysym->unicode & 0x7F; - ch[1] = '\0'; - } - else - { - /* An International Character. */ - } + case SDL_KEYDOWN: + key = event.key.keysym.sym; + SDLMod keymod; + char ch[2]; + keymod = SDL_GetModState(); + + /* If the current unicode character is an ASCII character, + assign it to ch. */ + if ( (event.key.keysym.unicode & 0xFF80) == 0 ) + { + ch[0] = event.key.keysym.unicode & 0x7F; + ch[1] = '\0'; + } + else + { + /* An International Character. */ + } - switch(key) - { - case SDLK_UP: /* Menu Up */ - menuaction = MENU_ACTION_UP; - menu_change = true; - break; - case SDLK_DOWN: /* Menu Down */ - menuaction = MENU_ACTION_DOWN; - menu_change = true; - break; - case SDLK_LEFT: /* Menu Up */ - menuaction = MENU_ACTION_LEFT; - menu_change = true; - break; - case SDLK_RIGHT: /* Menu Down */ - menuaction = MENU_ACTION_RIGHT; - menu_change = true; - break; - case SDLK_SPACE: - if(current_menu->item[current_menu->active_item].kind == MN_TEXTFIELD) + switch(key) { - menuaction = MENU_ACTION_INPUT; + case SDLK_UP: /* Menu Up */ + menuaction = MENU_ACTION_UP; menu_change = true; - mn_input_char = ' '; break; - } - case SDLK_RETURN: /* Menu Hit */ - menuaction = MENU_ACTION_HIT; - menu_change = true; - break; - case SDLK_DELETE: - case SDLK_BACKSPACE: - menuaction = MENU_ACTION_REMOVE; - menu_change = true; - delete_character++; - break; - default: - if( (key >= SDLK_0 && key <= SDLK_9) || (key >= SDLK_a && key <= SDLK_z) || (key >= SDLK_SPACE && key <= SDLK_SLASH)) - { - menuaction = MENU_ACTION_INPUT; + case SDLK_DOWN: /* Menu Down */ + menuaction = MENU_ACTION_DOWN; menu_change = true; - mn_input_char = *ch; + break; + case SDLK_LEFT: /* Menu Up */ + menuaction = MENU_ACTION_LEFT; + menu_change = true; + break; + case SDLK_RIGHT: /* Menu Down */ + menuaction = MENU_ACTION_RIGHT; + menu_change = true; + break; + case SDLK_SPACE: + if(current_menu->item[current_menu->active_item].kind == MN_TEXTFIELD) + { + menuaction = MENU_ACTION_INPUT; + menu_change = true; + mn_input_char = ' '; + break; + } + case SDLK_RETURN: /* Menu Hit */ + menuaction = MENU_ACTION_HIT; + menu_change = true; + break; + case SDLK_DELETE: + case SDLK_BACKSPACE: + menuaction = MENU_ACTION_REMOVE; + menu_change = true; + delete_character++; + break; + default: + if( (key >= SDLK_0 && key <= SDLK_9) || (key >= SDLK_a && key <= SDLK_z) || (key >= SDLK_SPACE && key <= SDLK_SLASH)) + { + menuaction = MENU_ACTION_INPUT; + menu_change = true; + mn_input_char = *ch; + } + else + { + mn_input_char = '\0'; + } + break; } - else + break; + case SDL_JOYAXISMOTION: + if(event.jaxis.axis == JOY_Y) { - mn_input_char = '\0'; + if (event.jaxis.value > 1024) + menuaction = MENU_ACTION_DOWN; + else if (event.jaxis.value < -1024) + menuaction = MENU_ACTION_UP; } break; + case SDL_JOYBUTTONDOWN: + menuaction = MENU_ACTION_HIT; + break; + default: + break; } - - /* FIXME: NO JOYSTICK SUPPORT */ /*#ifdef JOY_YES else if (event.type == SDL_JOYBUTTONDOWN)