Enable swapping A and B buttons on keyboard controls, swaps action and cancel between z and x

This commit is contained in:
jatinkohli 2024-05-14 13:59:36 -04:00
parent 89411d7b3e
commit 3a0c4fe06f
4 changed files with 18 additions and 6 deletions

View File

@ -259,6 +259,11 @@ export default class BattleScene extends SceneBase {
this.ui?.update(); this.ui?.update();
} }
updateKeyboard () {
this.inputController.setupKeyboardControls();
this.uiInputs.updateKeyboard();
}
launchBattle() { launchBattle() {
this.arenaBg = this.add.sprite(0, 0, 'plains_bg'); this.arenaBg = this.add.sprite(0, 0, 'plains_bg');
this.arenaBgTransition = this.add.sprite(0, 0, 'plains_bg'); this.arenaBgTransition = this.add.sprite(0, 0, 'plains_bg');

View File

@ -336,8 +336,8 @@ export class InputsController {
[Button.LEFT]: [keyCodes.LEFT, keyCodes.A], [Button.LEFT]: [keyCodes.LEFT, keyCodes.A],
[Button.RIGHT]: [keyCodes.RIGHT, keyCodes.D], [Button.RIGHT]: [keyCodes.RIGHT, keyCodes.D],
[Button.SUBMIT]: [keyCodes.ENTER], [Button.SUBMIT]: [keyCodes.ENTER],
[Button.ACTION]: [keyCodes.SPACE, keyCodes.Z], [Button.ACTION]: this.scene.abSwapped ? [keyCodes.SPACE, keyCodes.Z] : [keyCodes.BACKSPACE, keyCodes.X],
[Button.CANCEL]: [keyCodes.BACKSPACE, keyCodes.X], [Button.CANCEL]: this.scene.abSwapped ? [keyCodes.BACKSPACE, keyCodes.X] : [keyCodes.SPACE, keyCodes.Z],
[Button.MENU]: [keyCodes.ESC, keyCodes.M], [Button.MENU]: [keyCodes.ESC, keyCodes.M],
[Button.STATS]: [keyCodes.SHIFT, keyCodes.C], [Button.STATS]: [keyCodes.SHIFT, keyCodes.C],
[Button.CYCLE_SHINY]: [keyCodes.R], [Button.CYCLE_SHINY]: [keyCodes.R],
@ -385,6 +385,7 @@ export class InputsController {
listenInputKeyboard(): void { listenInputKeyboard(): void {
this.buttonKeys.forEach((row, index) => { this.buttonKeys.forEach((row, index) => {
for (const key of row) { for (const key of row) {
key.removeAllListeners()
key.on('down', () => { key.on('down', () => {
this.events.emit('input_down', { this.events.emit('input_down', {
controller_type: 'keyboard', controller_type: 'keyboard',

View File

@ -160,7 +160,9 @@ export function setSetting(scene: BattleScene, setting: Setting, value: integer)
scene.inputController.setGamepadSupport(settingOptions[setting][value] !== 'Disabled'); scene.inputController.setGamepadSupport(settingOptions[setting][value] !== 'Disabled');
break; break;
case Setting.Swap_A_and_B: case Setting.Swap_A_and_B:
console.log("Swapping A and B")
scene.abSwapped = settingOptions[setting][value] !== 'Disabled'; scene.abSwapped = settingOptions[setting][value] !== 'Disabled';
scene.updateKeyboard();
break; break;
case Setting.Touch_Controls: case Setting.Touch_Controls:
scene.enableTouchControls = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen(); scene.enableTouchControls = settingOptions[setting][value] !== 'Disabled' && hasTouchscreen();

View File

@ -14,19 +14,23 @@ export interface ActionKeys {
export class UiInputs { export class UiInputs {
private scene: Phaser.Scene; private scene: Phaser.Scene;
private events: Phaser.Events; 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.scene = scene;
this.inputsController = inputsController; this.inputController = inputController;
this.init(); this.init();
} }
init(): void { init(): void {
this.events = this.inputsController.events; this.events = this.inputController.events;
this.listenInputs(); this.listenInputs();
} }
updateKeyboard () {
this.inputController.setupKeyboardControls();
}
listenInputs(): void { listenInputs(): void {
this.events.on('input_down', (event) => { this.events.on('input_down', (event) => {
const actions = this.getActionsKeyDown(); const actions = this.getActionsKeyDown();