diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 111e5439b12..981217a47f8 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -259,6 +259,11 @@ export default class BattleScene extends SceneBase { this.ui?.update(); } + updateKeyboard () { + this.inputController.setupKeyboardControls(); + this.uiInputs.updateKeyboard(); + } + launchBattle() { this.arenaBg = this.add.sprite(0, 0, 'plains_bg'); this.arenaBgTransition = this.add.sprite(0, 0, 'plains_bg'); diff --git a/src/inputs-controller.ts b/src/inputs-controller.ts index 7de0969869d..7c0c04c7764 100644 --- a/src/inputs-controller.ts +++ b/src/inputs-controller.ts @@ -336,8 +336,8 @@ export class InputsController { [Button.LEFT]: [keyCodes.LEFT, keyCodes.A], [Button.RIGHT]: [keyCodes.RIGHT, keyCodes.D], [Button.SUBMIT]: [keyCodes.ENTER], - [Button.ACTION]: [keyCodes.SPACE, keyCodes.Z], - [Button.CANCEL]: [keyCodes.BACKSPACE, keyCodes.X], + [Button.ACTION]: this.scene.abSwapped ? [keyCodes.SPACE, keyCodes.Z] : [keyCodes.BACKSPACE, keyCodes.X], + [Button.CANCEL]: this.scene.abSwapped ? [keyCodes.BACKSPACE, keyCodes.X] : [keyCodes.SPACE, keyCodes.Z], [Button.MENU]: [keyCodes.ESC, keyCodes.M], [Button.STATS]: [keyCodes.SHIFT, keyCodes.C], [Button.CYCLE_SHINY]: [keyCodes.R], @@ -385,6 +385,7 @@ export class InputsController { listenInputKeyboard(): void { this.buttonKeys.forEach((row, index) => { for (const key of row) { + key.removeAllListeners() key.on('down', () => { this.events.emit('input_down', { controller_type: 'keyboard', diff --git a/src/system/settings.ts b/src/system/settings.ts index 15c1f19aa04..7039bb5b0a9 100644 --- a/src/system/settings.ts +++ b/src/system/settings.ts @@ -160,7 +160,9 @@ export function setSetting(scene: BattleScene, setting: Setting, value: integer) scene.inputController.setGamepadSupport(settingOptions[setting][value] !== 'Disabled'); break; case Setting.Swap_A_and_B: + console.log("Swapping A and B") scene.abSwapped = settingOptions[setting][value] !== 'Disabled'; + scene.updateKeyboard(); break; case Setting.Touch_Controls: scene.enableTouchControls = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen(); diff --git a/src/ui-inputs.ts b/src/ui-inputs.ts index 38d8e7830c4..d169093bc91 100644 --- a/src/ui-inputs.ts +++ b/src/ui-inputs.ts @@ -14,19 +14,23 @@ export interface ActionKeys { export class UiInputs { private scene: Phaser.Scene; private events: Phaser.Events; - private inputsController: InputsController; + private inputController: InputsController; - constructor(scene: Phaser.Scene, inputsController: InputsController) { + constructor(scene: Phaser.Scene, inputController: InputsController) { this.scene = scene; - this.inputsController = inputsController; + this.inputController = inputController; this.init(); } init(): void { - this.events = this.inputsController.events; + this.events = this.inputController.events; this.listenInputs(); } + updateKeyboard () { + this.inputController.setupKeyboardControls(); + } + listenInputs(): void { this.events.on('input_down', (event) => { const actions = this.getActionsKeyDown();