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();
}
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');

View File

@ -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',

View File

@ -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();

View File

@ -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();