diff --git a/src/configs/cfg_keyboard_azerty.ts b/src/configs/cfg_keyboard_azerty.ts index b7d1b09a86f..e0a1fac2936 100644 --- a/src/configs/cfg_keyboard_azerty.ts +++ b/src/configs/cfg_keyboard_azerty.ts @@ -183,6 +183,24 @@ const cfg_keyboard_azerty = { KEY_V: SettingKeyboard.Button_Cycle_Variant, KEY_PLUS: SettingKeyboard.Button_Speed_Up, KEY_MINUS: SettingKeyboard.Button_Slow_Down, + + KEY_Z: SettingKeyboard.Alt_Button_Up, + KEY_S: SettingKeyboard.Alt_Button_Down, + KEY_Q: SettingKeyboard.Alt_Button_Left, + KEY_D: SettingKeyboard.Alt_Button_Right, + KEY_CTRL: SettingKeyboard.Alt_Button_Submit, + KEY_W: SettingKeyboard.Alt_Button_Action, + KEY_X: SettingKeyboard.Alt_Button_Cancel, + KEY_TAB: SettingKeyboard.Alt_Button_Menu, + KEY_SHIFT: SettingKeyboard.Alt_Button_Stats, + KEY_P: SettingKeyboard.Alt_Button_Cycle_Shiny, + KEY_M: SettingKeyboard.Alt_Button_Cycle_Form, + KEY_O: SettingKeyboard.Alt_Button_Cycle_Gender, + KEY_L: SettingKeyboard.Alt_Button_Cycle_Ability, + KEY_I: SettingKeyboard.Alt_Button_Cycle_Nature, + KEY_K: SettingKeyboard.Alt_Button_Cycle_Variant, + KEY_PAGE_UP: SettingKeyboard.Alt_Button_Speed_Up, + KEY_PAGE_DOWN: SettingKeyboard.Alt_Button_Slow_Down, }, default: { KEY_ARROW_UP: Button.UP, @@ -204,23 +222,23 @@ const cfg_keyboard_azerty = { KEY_MINUS: Button.SLOW_DOWN, KEY_A: -1, KEY_B: -1, - KEY_D: -1, + KEY_D: Button.RIGHT, KEY_H: -1, - KEY_I: -1, + KEY_I: Button.CYCLE_NATURE, KEY_J: -1, - KEY_K: -1, - KEY_L: -1, - KEY_M: -1, - KEY_O: -1, - KEY_P: -1, - KEY_Q: -1, - KEY_S: -1, + KEY_K: Button.CYCLE_VARIANT, + KEY_L: Button.CYCLE_ABILITY, + KEY_M: Button.CYCLE_FORM, + KEY_O: Button.CYCLE_GENDER, + KEY_P: Button.CYCLE_SHINY, + KEY_Q: Button.LEFT, + KEY_S: Button.DOWN, KEY_T: -1, KEY_U: -1, - KEY_W: -1, - KEY_X: -1, + KEY_W: Button.ACTION, + KEY_X: Button.CANCEL, KEY_Y: -1, - KEY_Z: -1, + KEY_Z: Button.UP, KEY_0: -1, KEY_1: -1, KEY_2: -1, @@ -231,7 +249,7 @@ const cfg_keyboard_azerty = { KEY_7: -1, KEY_8: -1, KEY_9: -1, - KEY_CTRL: -1, + KEY_CTRL: Button.SUBMIT, KEY_DEL: -1, KEY_END: -1, KEY_F1: -1, @@ -248,11 +266,11 @@ const cfg_keyboard_azerty = { KEY_F12: -1, KEY_HOME: -1, KEY_INSERT: -1, - KEY_PAGE_DOWN: -1, - KEY_PAGE_UP: -1, + KEY_PAGE_DOWN: Button.SLOW_DOWN, + KEY_PAGE_UP: Button.SPEED_UP, KEY_QUOTATION: -1, - KEY_SHIFT: -1, - KEY_TAB: -1, + KEY_SHIFT: Button.STATS, + KEY_TAB: Button.MENU, KEY_TILDE: -1, KEY_LEFT_BRACKET: -1, KEY_RIGHT_BRACKET: -1, diff --git a/src/configs/gamepad-utils.ts b/src/configs/gamepad-utils.ts index 362bf95e8bf..5142dcdec07 100644 --- a/src/configs/gamepad-utils.ts +++ b/src/configs/gamepad-utils.ts @@ -25,7 +25,8 @@ export function getKeyForSettingName(config: InterfaceConfig, settingName: strin } // Given a Button, return the custom key assigned to it from the config file -export function getCurrenlyAssignedKeyToAction(config: InterfaceConfig, action: Button): String | null { +export function getCurrenlyAssignedKeyToAction(config: InterfaceConfig, action: Button, alt: boolean = false): String | null { + // need to find a way to differentiate main/alt button for (const key of Object.keys(config.custom)) { if (config.custom[key] === action) return key; } @@ -36,7 +37,7 @@ export function getCurrenlyAssignedKeyToAction(config: InterfaceConfig, action: export function getCurrentlyAssignedToSettingName(config: InterfaceConfig, settingName: string): String { const oldKey = getKeyForSettingName(config, settingName) const action = config.default[oldKey]; - const key = getCurrenlyAssignedKeyToAction(config, action); + const key = getCurrenlyAssignedKeyToAction(config, action, settingName.includes("ALT_BUTTON_")); return key; } diff --git a/src/system/settings-keyboard.ts b/src/system/settings-keyboard.ts index 62bcbbfd200..b308153fbb7 100644 --- a/src/system/settings-keyboard.ts +++ b/src/system/settings-keyboard.ts @@ -7,64 +7,115 @@ import SettingsKeyboardUiHandler from "#app/ui/settings/settings-keyboard-ui-han export enum SettingKeyboard { Default_Layout = "DEFAULT_LAYOUT", Button_Up = "BUTTON_UP", + Alt_Button_Up = "ALT_BUTTON_UP", Button_Down = "BUTTON_DOWN", + Alt_Button_Down = "ALT_BUTTON_DOWN", Button_Left = "BUTTON_LEFT", + Alt_Button_Left = "ALT_BUTTON_LEFT", Button_Right = "BUTTON_RIGHT", + Alt_Button_Right = "ALT_BUTTON_RIGHT", Button_Action = "BUTTON_ACTION", + Alt_Button_Action = "ALT_BUTTON_ACTION", Button_Cancel = "BUTTON_CANCEL", + Alt_Button_Cancel = "ALT_BUTTON_CANCEL", Button_Menu = "BUTTON_MENU", + Alt_Button_Menu = "ALT_BUTTON_MENU", Button_Stats = "BUTTON_STATS", + Alt_Button_Stats = "ALT_BUTTON_STATS", Button_Cycle_Form = "BUTTON_CYCLE_FORM", + Alt_Button_Cycle_Form = "ALT_BUTTON_CYCLE_FORM", Button_Cycle_Shiny = "BUTTON_CYCLE_SHINY", + Alt_Button_Cycle_Shiny = "ALT_BUTTON_CYCLE_SHINY", Button_Cycle_Gender = "BUTTON_CYCLE_GENDER", + Alt_Button_Cycle_Gender = "ALT_BUTTON_CYCLE_GENDER", Button_Cycle_Ability = "BUTTON_CYCLE_ABILITY", + Alt_Button_Cycle_Ability = "ALT_BUTTON_CYCLE_ABILITY", Button_Cycle_Nature = "BUTTON_CYCLE_NATURE", + Alt_Button_Cycle_Nature = "ALT_BUTTON_CYCLE_NATURE", Button_Cycle_Variant = "BUTTON_CYCLE_VARIANT", + Alt_Button_Cycle_Variant = "ALT_BUTTON_CYCLE_VARIANT", Button_Speed_Up = "BUTTON_SPEED_UP", + Alt_Button_Speed_Up = "ALT_BUTTON_SPEED_UP", Button_Slow_Down = "BUTTON_SLOW_DOWN", + Alt_Button_Slow_Down = "ALT_BUTTON_SLOW_DOWN", Button_Submit = "BUTTON_SUBMIT", + Alt_Button_Submit = "ALT_BUTTON_SUBMIT", } export const settingKeyboardOptions: SettingOptions = { [SettingKeyboard.Default_Layout]: ['Default', 'Change'], [SettingKeyboard.Button_Up]: [`KEY ${Button.UP.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Up]: [`KEY ${Button.UP.toString()}`, 'Change'], [SettingKeyboard.Button_Down]: [`KEY ${Button.DOWN.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Down]: [`KEY ${Button.DOWN.toString()}`, 'Change'], [SettingKeyboard.Button_Left]: [`KEY ${Button.LEFT.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Left]: [`KEY ${Button.LEFT.toString()}`, 'Change'], [SettingKeyboard.Button_Right]: [`KEY ${Button.RIGHT.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Right]: [`KEY ${Button.RIGHT.toString()}`, 'Change'], [SettingKeyboard.Button_Action]: [`KEY ${Button.ACTION.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Action]: [`KEY ${Button.ACTION.toString()}`, 'Change'], [SettingKeyboard.Button_Cancel]: [`KEY ${Button.CANCEL.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Cancel]: [`KEY ${Button.CANCEL.toString()}`, 'Change'], [SettingKeyboard.Button_Menu]: [`KEY ${Button.MENU.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Menu]: [`KEY ${Button.MENU.toString()}`, 'Change'], [SettingKeyboard.Button_Stats]: [`KEY ${Button.STATS.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Stats]: [`KEY ${Button.STATS.toString()}`, 'Change'], [SettingKeyboard.Button_Cycle_Form]: [`KEY ${Button.CYCLE_FORM.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Cycle_Form]: [`KEY ${Button.CYCLE_FORM.toString()}`, 'Change'], [SettingKeyboard.Button_Cycle_Shiny]: [`KEY ${Button.CYCLE_SHINY.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Cycle_Shiny]: [`KEY ${Button.CYCLE_SHINY.toString()}`, 'Change'], [SettingKeyboard.Button_Cycle_Gender]: [`KEY ${Button.CYCLE_GENDER.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Cycle_Gender]: [`KEY ${Button.CYCLE_GENDER.toString()}`, 'Change'], [SettingKeyboard.Button_Cycle_Ability]: [`KEY ${Button.CYCLE_ABILITY.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Cycle_Ability]: [`KEY ${Button.CYCLE_ABILITY.toString()}`, 'Change'], [SettingKeyboard.Button_Cycle_Nature]: [`KEY ${Button.CYCLE_NATURE.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Cycle_Nature]: [`KEY ${Button.CYCLE_NATURE.toString()}`, 'Change'], [SettingKeyboard.Button_Cycle_Variant]: [`KEY ${Button.CYCLE_VARIANT.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Cycle_Variant]: [`KEY ${Button.CYCLE_VARIANT.toString()}`, 'Change'], [SettingKeyboard.Button_Speed_Up]: [`KEY ${Button.SPEED_UP.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Speed_Up]: [`KEY ${Button.SPEED_UP.toString()}`, 'Change'], [SettingKeyboard.Button_Slow_Down]: [`KEY ${Button.SLOW_DOWN.toString()}`, 'Change'], - [SettingKeyboard.Button_Submit]: [`KEY ${Button.SUBMIT.toString()}`, 'Change'] + [SettingKeyboard.Alt_Button_Slow_Down]: [`KEY ${Button.SLOW_DOWN.toString()}`, 'Change'], + [SettingKeyboard.Button_Submit]: [`KEY ${Button.SUBMIT.toString()}`, 'Change'], + [SettingKeyboard.Alt_Button_Submit]: [`KEY ${Button.SUBMIT.toString()}`, 'Change'] }; export const settingKeyboardDefaults: SettingDefaults = { [SettingKeyboard.Default_Layout]: 0, [SettingKeyboard.Button_Up]: 0, + [SettingKeyboard.Alt_Button_Up]: 0, [SettingKeyboard.Button_Down]: 0, + [SettingKeyboard.Alt_Button_Down]: 0, [SettingKeyboard.Button_Left]: 0, + [SettingKeyboard.Alt_Button_Left]: 0, [SettingKeyboard.Button_Right]: 0, + [SettingKeyboard.Alt_Button_Right]: 0, [SettingKeyboard.Button_Action]: 0, + [SettingKeyboard.Alt_Button_Action]: 0, [SettingKeyboard.Button_Cancel]: 0, + [SettingKeyboard.Alt_Button_Cancel]: 0, [SettingKeyboard.Button_Menu]: 0, + [SettingKeyboard.Alt_Button_Menu]: 0, [SettingKeyboard.Button_Stats]: 0, + [SettingKeyboard.Alt_Button_Stats]: 0, [SettingKeyboard.Button_Cycle_Form]: 0, + [SettingKeyboard.Alt_Button_Cycle_Form]: 0, [SettingKeyboard.Button_Cycle_Shiny]: 0, + [SettingKeyboard.Alt_Button_Cycle_Shiny]: 0, [SettingKeyboard.Button_Cycle_Gender]: 0, + [SettingKeyboard.Alt_Button_Cycle_Gender]: 0, [SettingKeyboard.Button_Cycle_Ability]: 0, + [SettingKeyboard.Alt_Button_Cycle_Ability]: 0, [SettingKeyboard.Button_Cycle_Nature]: 0, + [SettingKeyboard.Alt_Button_Cycle_Nature]: 0, [SettingKeyboard.Button_Cycle_Variant]: 0, + [SettingKeyboard.Alt_Button_Cycle_Variant]: 0, [SettingKeyboard.Button_Speed_Up]: 0, + [SettingKeyboard.Alt_Button_Speed_Up]: 0, [SettingKeyboard.Button_Slow_Down]: 0, + [SettingKeyboard.Alt_Button_Slow_Down]: 0, [SettingKeyboard.Button_Submit]: 0, + [SettingKeyboard.Alt_Button_Submit]: 0, }; @@ -86,6 +137,22 @@ export function setSettingKeyboard(scene: BattleScene, setting: SettingKeyboard, case SettingKeyboard.Button_Cycle_Variant: case SettingKeyboard.Button_Speed_Up: case SettingKeyboard.Button_Slow_Down: + case SettingKeyboard.Alt_Button_Up: + case SettingKeyboard.Alt_Button_Down: + case SettingKeyboard.Alt_Button_Left: + case SettingKeyboard.Alt_Button_Right: + case SettingKeyboard.Alt_Button_Action: + case SettingKeyboard.Alt_Button_Cancel: + case SettingKeyboard.Alt_Button_Menu: + case SettingKeyboard.Alt_Button_Stats: + case SettingKeyboard.Alt_Button_Cycle_Shiny: + case SettingKeyboard.Alt_Button_Cycle_Form: + case SettingKeyboard.Alt_Button_Cycle_Gender: + case SettingKeyboard.Alt_Button_Cycle_Ability: + case SettingKeyboard.Alt_Button_Cycle_Nature: + case SettingKeyboard.Alt_Button_Cycle_Variant: + case SettingKeyboard.Alt_Button_Speed_Up: + case SettingKeyboard.Alt_Button_Slow_Down: if (value) { if (scene.ui) { const cancelHandler = (success: boolean = false) : boolean => { diff --git a/src/ui/settings/abstract-settings-ui-handler.ts b/src/ui/settings/abstract-settings-ui-handler.ts index b001495f588..4b87a72141f 100644 --- a/src/ui/settings/abstract-settings-ui-handler.ts +++ b/src/ui/settings/abstract-settings-ui-handler.ts @@ -57,7 +57,7 @@ export default abstract class AbstractSettingsUiUiHandler extends UiHandler { abstract navigateMenuLeft(): boolean; abstract navigateMenuRight(): boolean; abstract saveSettingToLocalStorage(setting, cursor): void; - abstract getActiveConfig(): void; + abstract getActiveConfig(): InterfaceConfig; constructor(scene: BattleScene, mode?: Mode) { super(scene, mode); diff --git a/src/ui/settings/settings-gamepad-ui-handler.ts b/src/ui/settings/settings-gamepad-ui-handler.ts index f4d85cf0cd3..450a328d8da 100644 --- a/src/ui/settings/settings-gamepad-ui-handler.ts +++ b/src/ui/settings/settings-gamepad-ui-handler.ts @@ -38,7 +38,7 @@ export default class SettingsGamepadUiHandler extends AbstractSettingsUiUiHandle this.layout['noGamepads'].label = label; } - getActiveConfig() { + getActiveConfig(): InterfaceConfig { return this.scene.inputController.getActiveConfig(); } diff --git a/src/ui/settings/settings-keyboard-ui-handler.ts b/src/ui/settings/settings-keyboard-ui-handler.ts index dbb342c5a62..fdbbb5c07a1 100644 --- a/src/ui/settings/settings-keyboard-ui-handler.ts +++ b/src/ui/settings/settings-keyboard-ui-handler.ts @@ -4,6 +4,7 @@ import cfg_keyboard_azerty from "#app/configs/cfg_keyboard_azerty"; import {SettingKeyboard, settingKeyboardDefaults, settingKeyboardOptions} from "#app/system/settings-keyboard"; import {truncateString} from "#app/utils"; import AbstractSettingsUiUiHandler from "#app/ui/settings/abstract-settings-ui-handler"; +import {InterfaceConfig} from "#app/inputs-controller"; export default class SettingsKeyboardUiHandler extends AbstractSettingsUiUiHandler { @@ -19,7 +20,7 @@ export default class SettingsKeyboardUiHandler extends AbstractSettingsUiUiHandl this.localStoragePropertyName = 'settingsKeyboard'; } - getActiveConfig() { + getActiveConfig(): InterfaceConfig { return this.scene.inputController.getActiveKeyboardConfig(); }