minor options menu improvements
This commit is contained in:
parent
063807870e
commit
f21e35f459
4 changed files with 45 additions and 20 deletions
|
@ -348,7 +348,7 @@ static bool events_handler_key_down(SDL_Event *event, void *arg) {
|
|||
if(!repeat || transition.state == TRANS_IDLE) {
|
||||
for(struct eventmap_s *m = menu_event_map; m->scancode != SDL_SCANCODE_UNKNOWN; ++m) {
|
||||
if(scan == m->scancode) {
|
||||
events_emit(m->event, 0, NULL, NULL);
|
||||
events_emit(m->event, 0, (void*)(intptr_t)INDEV_KEYBOARD, NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -365,7 +365,7 @@ static bool events_handler_key_down(SDL_Event *event, void *arg) {
|
|||
int key = config_key_from_scancode(scan);
|
||||
|
||||
if(key >= 0) {
|
||||
events_emit(TE_GAME_KEY_DOWN, key, NULL, NULL);
|
||||
events_emit(TE_GAME_KEY_DOWN, key, (void*)(intptr_t)INDEV_KEYBOARD, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -383,7 +383,7 @@ static bool events_handler_key_up(SDL_Event *event, void *arg) {
|
|||
int key = config_key_from_scancode(scan);
|
||||
|
||||
if(key >= 0) {
|
||||
events_emit(TE_GAME_KEY_UP, key, NULL, NULL);
|
||||
events_emit(TE_GAME_KEY_UP, key, (void*)(intptr_t)INDEV_KEYBOARD, NULL);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -62,6 +62,11 @@ typedef enum {
|
|||
EFLAG_TEXT = (1 << 2),
|
||||
} EventFlags;
|
||||
|
||||
typedef enum {
|
||||
INDEV_KEYBOARD,
|
||||
INDEV_GAMEPAD,
|
||||
} InputDevice;
|
||||
|
||||
#define EPRIO_DEFAULT_REMAP EPRIO_NORMAL
|
||||
|
||||
// if the this returns true, the event won't be passed down to lower priority handlers
|
||||
|
|
|
@ -423,12 +423,12 @@ void gamepad_axis(SDL_GameControllerAxis id, int raw) {
|
|||
|
||||
if(key >= 0) {
|
||||
if(restricted) {
|
||||
events_emit(TE_GAME_KEY_DOWN, key, NULL, NULL);
|
||||
events_emit(TE_GAME_KEY_DOWN, key, (void*)(intptr_t)INDEV_GAMEPAD, NULL);
|
||||
}
|
||||
|
||||
int evt = gamepad_axis2menuevt(id, val);
|
||||
if(evt >= 0) {
|
||||
events_emit(evt, 0, NULL, NULL);
|
||||
events_emit(evt, 0, (void*)(intptr_t)INDEV_GAMEPAD, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -438,7 +438,7 @@ void gamepad_axis(SDL_GameControllerAxis id, int raw) {
|
|||
int key = gamepad_axis2gamekey(id, a[id]);
|
||||
|
||||
if(key >= 0) {
|
||||
events_emit(TE_GAME_KEY_UP, key, NULL, NULL);
|
||||
events_emit(TE_GAME_KEY_UP, key, (void*)(intptr_t)INDEV_GAMEPAD, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -449,45 +449,46 @@ void gamepad_axis(SDL_GameControllerAxis id, int raw) {
|
|||
void gamepad_button(SDL_GameControllerButton button, int state) {
|
||||
int gpkey = config_gamepad_key_from_gamepad_button(button);
|
||||
int key = config_key_from_gamepad_key(gpkey);
|
||||
void *indev = (void*)(intptr_t)INDEV_GAMEPAD;
|
||||
|
||||
if(state == SDL_PRESSED) {
|
||||
events_emit(TE_GAMEPAD_BUTTON_DOWN, button, NULL, NULL);
|
||||
events_emit(TE_GAMEPAD_BUTTON_DOWN, button, indev, NULL);
|
||||
|
||||
switch(button) {
|
||||
case SDL_CONTROLLER_BUTTON_START:
|
||||
events_emit(TE_MENU_ACCEPT, 0, NULL, NULL);
|
||||
events_emit(TE_GAME_PAUSE, 0, NULL, NULL);
|
||||
events_emit(TE_MENU_ACCEPT, 0, indev, NULL);
|
||||
events_emit(TE_GAME_PAUSE, 0, indev, NULL);
|
||||
break;
|
||||
|
||||
case SDL_CONTROLLER_BUTTON_BACK:
|
||||
events_emit(TE_MENU_ABORT, 0, NULL, NULL);
|
||||
events_emit(TE_GAME_PAUSE, 0, NULL, NULL);
|
||||
events_emit(TE_MENU_ABORT, 0, indev, NULL);
|
||||
events_emit(TE_GAME_PAUSE, 0, indev, NULL);
|
||||
break;
|
||||
|
||||
case SDL_CONTROLLER_BUTTON_DPAD_UP: events_emit(TE_MENU_CURSOR_UP, 0, NULL, NULL); break;
|
||||
case SDL_CONTROLLER_BUTTON_DPAD_DOWN: events_emit(TE_MENU_CURSOR_DOWN, 0, NULL, NULL); break;
|
||||
case SDL_CONTROLLER_BUTTON_DPAD_LEFT: events_emit(TE_MENU_CURSOR_LEFT, 0, NULL, NULL); break;
|
||||
case SDL_CONTROLLER_BUTTON_DPAD_RIGHT: events_emit(TE_MENU_CURSOR_RIGHT, 0, NULL, NULL); break;
|
||||
case SDL_CONTROLLER_BUTTON_DPAD_UP: events_emit(TE_MENU_CURSOR_UP, 0, indev, NULL); break;
|
||||
case SDL_CONTROLLER_BUTTON_DPAD_DOWN: events_emit(TE_MENU_CURSOR_DOWN, 0, indev, NULL); break;
|
||||
case SDL_CONTROLLER_BUTTON_DPAD_LEFT: events_emit(TE_MENU_CURSOR_LEFT, 0, indev, NULL); break;
|
||||
case SDL_CONTROLLER_BUTTON_DPAD_RIGHT: events_emit(TE_MENU_CURSOR_RIGHT, 0, indev, NULL); break;
|
||||
|
||||
case SDL_CONTROLLER_BUTTON_A:
|
||||
events_emit(TE_MENU_ACCEPT, 0, NULL, NULL);
|
||||
events_emit(TE_MENU_ACCEPT, 0, indev, NULL);
|
||||
break;
|
||||
|
||||
case SDL_CONTROLLER_BUTTON_B:
|
||||
events_emit(TE_MENU_ABORT, 0, NULL, NULL);
|
||||
events_emit(TE_MENU_ABORT, 0, indev, NULL);
|
||||
break;
|
||||
|
||||
default:
|
||||
if(key >= 0) {
|
||||
events_emit(TE_GAME_KEY_DOWN, key, NULL, NULL);
|
||||
events_emit(TE_GAME_KEY_DOWN, key, indev, NULL);
|
||||
} break;
|
||||
}
|
||||
|
||||
} else {
|
||||
events_emit(TE_GAMEPAD_BUTTON_UP, button, NULL, NULL);
|
||||
events_emit(TE_GAMEPAD_BUTTON_UP, button, indev, NULL);
|
||||
|
||||
if(key >= 0) {
|
||||
events_emit(TE_GAME_KEY_UP, key, NULL, NULL);
|
||||
events_emit(TE_GAME_KEY_UP, key, indev, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -925,6 +925,7 @@ static bool options_rebind_input_handler(SDL_Event *event, void *arg) {
|
|||
if(b->type != BT_KeyBinding) {
|
||||
if(esc) {
|
||||
b->blockinput = false;
|
||||
play_ui_sound("hit");
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -938,18 +939,28 @@ static bool options_rebind_input_handler(SDL_Event *event, void *arg) {
|
|||
}
|
||||
|
||||
config_set_int(b->configentry, scan);
|
||||
play_ui_sound("shot_special1");
|
||||
} else {
|
||||
play_ui_sound("hit");
|
||||
}
|
||||
|
||||
b->blockinput = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
if(t == MAKE_TAISEI_EVENT(TE_MENU_ABORT)) {
|
||||
play_ui_sound("hit");
|
||||
b->blockinput = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
if(t == MAKE_TAISEI_EVENT(TE_GAMEPAD_BUTTON_DOWN)) {
|
||||
SDL_GameControllerButton button = event->user.code;
|
||||
|
||||
if(b->type != BT_GamepadKeyBinding) {
|
||||
if(b->type == BT_GamepadAxisBinding) {
|
||||
b->blockinput = false;
|
||||
play_ui_sound("hit");
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -957,6 +968,7 @@ static bool options_rebind_input_handler(SDL_Event *event, void *arg) {
|
|||
|
||||
if(button == SDL_CONTROLLER_BUTTON_BACK || button == SDL_CONTROLLER_BUTTON_START) {
|
||||
b->blockinput = false;
|
||||
play_ui_sound("hit");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -968,6 +980,7 @@ static bool options_rebind_input_handler(SDL_Event *event, void *arg) {
|
|||
|
||||
config_set_int(b->configentry, button);
|
||||
b->blockinput = false;
|
||||
play_ui_sound("shot_special1");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1041,6 +1054,12 @@ static bool options_text_input_handler(SDL_Event *event, void *arg) {
|
|||
return true;
|
||||
}
|
||||
|
||||
if(t == MAKE_TAISEI_EVENT(TE_MENU_ABORT)) {
|
||||
play_ui_sound("hit");
|
||||
b->blockinput = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
if(t == SDL_KEYDOWN) {
|
||||
SDL_Scancode scan = event->key.keysym.scancode;
|
||||
|
||||
|
|
Loading…
Reference in a new issue