cleaned up a bit the code + added some more config

pull/685/head
Greenlamp 2024-05-11 13:33:13 +02:00
parent 931ec61f87
commit cffcf9afd0
5 changed files with 41 additions and 13 deletions

View File

@ -48,6 +48,17 @@ const pad_dualshock = {
setting: {
RC_S: SettingGamepad.Button_Action,
RC_E: SettingGamepad.Button_Cancel,
RC_W: SettingGamepad.Button_Cycle_Nature,
RC_N: SettingGamepad.Button_Cycle_Variant,
START: SettingGamepad.Button_Menu,
SELECT: SettingGamepad.Button_Stats,
LB: SettingGamepad.Button_Cycle_Form,
RB: SettingGamepad.Button_Cycle_Shiny,
LT: SettingGamepad.Button_Cycle_Gender,
RT: SettingGamepad.Button_Cycle_Ability,
LS: SettingGamepad.Button_Speed_Up,
RS: SettingGamepad.Button_Slow_Down,
TOUCH: SettingGamepad.Button_Submit,
},
default: {
RC_S: Button.ACTION,

View File

@ -42,11 +42,20 @@ const pad_generic = {
LC_S: "T_X_Dpad_Down_Alt.png",
LC_W: "T_X_Dpad_Left_Alt.png",
LC_E: "T_X_Dpad_Right_Alt.png",
MENU: ""
},
setting: {
RC_S: SettingGamepad.Button_Action,
RC_E: SettingGamepad.Button_Cancel,
RC_W: SettingGamepad.Button_Cycle_Nature,
RC_N: SettingGamepad.Button_Cycle_Variant,
START: SettingGamepad.Button_Menu,
SELECT: SettingGamepad.Button_Stats,
LB: SettingGamepad.Button_Cycle_Form,
RB: SettingGamepad.Button_Cycle_Shiny,
LT: SettingGamepad.Button_Cycle_Gender,
RT: SettingGamepad.Button_Cycle_Ability,
LS: SettingGamepad.Button_Speed_Up,
RS: SettingGamepad.Button_Slow_Down,
},
default: {
RC_S: Button.ACTION,
@ -65,7 +74,6 @@ const pad_generic = {
LC_S: Button.DOWN,
LC_W: Button.LEFT,
LC_E: Button.RIGHT,
TOUCH: Button.SUBMIT,
}
};

View File

@ -38,6 +38,12 @@ const pad_unlicensedSNES = {
setting: {
RC_S: SettingGamepad.Button_Action,
RC_E: SettingGamepad.Button_Cancel,
RC_W: SettingGamepad.Button_Cycle_Nature,
RC_N: SettingGamepad.Button_Cycle_Variant,
START: SettingGamepad.Button_Menu,
SELECT: SettingGamepad.Button_Stats,
LB: SettingGamepad.Button_Cycle_Form,
RB: SettingGamepad.Button_Cycle_Shiny,
},
default: {
RC_S: Button.ACTION,
@ -52,7 +58,6 @@ const pad_unlicensedSNES = {
LC_S: Button.DOWN,
LC_W: Button.LEFT,
LC_E: Button.RIGHT,
TOUCH: Button.SUBMIT,
}
};

View File

@ -1,4 +1,3 @@
import Phaser, {Time} from "phaser";
import * as Utils from "./utils";
import {initTouchControls} from './touch-controls';
import pad_generic from "./configs/pad_generic";
@ -65,13 +64,14 @@ const repeatInputDelayMillis = 250;
*/
export class InputsController {
private buttonKeys: Phaser.Input.Keyboard.Key[][];
private gamepads: Array<string> = new Array();
private gamepads: Array<Phaser.Input.Gamepad.Gamepad> = new Array();
private scene: Phaser.Scene;
private events: Phaser.Events.EventEmitter;
private buttonLock: Button;
private buttonLock2: Button;
private interactions: Map<Button, Map<string, boolean>> = new Map();
private time: Time;
private time: Phaser.Time.Clock;
private player;
private gamepadSupport: boolean = true;
@ -118,7 +118,7 @@ export class InputsController {
* Additionally, it manages the game's behavior when it loses focus to prevent unwanted game actions during this state.
*/
init(): void {
this.events = new Phaser.Events.EventEmitter();
this.events = this.scene.game.events;
if (localStorage.hasOwnProperty('chosenGamepad')) {
this.chosenGamepad = localStorage.getItem('chosenGamepad');
@ -206,16 +206,16 @@ export class InputsController {
for (const b of Utils.getEnumValues(Button).reverse()) {
if (
this.interactions.hasOwnProperty(b) &&
this.repeatInputDurationJustPassed(b) &&
this.repeatInputDurationJustPassed(b as Button) &&
this.interactions[b].isPressed
) {
// Prevents repeating button interactions when gamepad support is disabled.
if (
(!this.gamepadSupport && this.interactions[b].source === 'gamepad') ||
(this.interactions[b].sourceName !== null && this.interactions[b].sourceName !== this.chosenGamepad)
(this.interactions[b].sourceName && this.interactions[b].sourceName !== this.chosenGamepad)
) {
// Deletes the last interaction for a button if gamepad is disabled.
this.delLastProcessedMovementTime(b);
this.delLastProcessedMovementTime(b as Button);
return;
}
// Emits an event for the button press.
@ -223,7 +223,7 @@ export class InputsController {
controller_type: this.interactions[b].source,
button: b,
});
this.setLastProcessedMovementTime(b, this.interactions[b].source, this.interactions[b].sourceName);
this.setLastProcessedMovementTime(b as Button, this.interactions[b].source, this.interactions[b].sourceName);
}
}
}
@ -572,7 +572,7 @@ export class InputsController {
*
* Additionally, this method locks the button (by calling `setButtonLock`) to prevent it from being re-processed until it is released, ensuring that each press is handled distinctly.
*/
setLastProcessedMovementTime(button: Button, source: String = 'keyboard', sourceName: String): void {
setLastProcessedMovementTime(button: Button, source: String = 'keyboard', sourceName?: String): void {
if (!this.interactions.hasOwnProperty(button)) return;
this.setButtonLock(button);
this.interactions[button].pressTime = this.time.now;

View File

@ -21,6 +21,7 @@ export enum SettingGamepad {
Button_Cycle_Variant = "BUTTON_CYCLE_VARIANT",
Button_Speed_Up = "BUTTON_SPEED_UP",
Button_Slow_Down = "BUTTON_SLOW_DOWN",
Button_Submit = "BUTTON_SUBMIT",
}
export const settingGamepadOptions: SettingOptions = {
@ -38,7 +39,8 @@ export const settingGamepadOptions: SettingOptions = {
[SettingGamepad.Button_Cycle_Nature]: [`KEY ${Button.CYCLE_NATURE.toString()}`, 'Change'],
[SettingGamepad.Button_Cycle_Variant]: [`KEY ${Button.CYCLE_VARIANT.toString()}`, 'Change'],
[SettingGamepad.Button_Speed_Up]: [`KEY ${Button.SPEED_UP.toString()}`, 'Change'],
[SettingGamepad.Button_Slow_Down]: [`KEY ${Button.SLOW_DOWN.toString()}`, 'Change']
[SettingGamepad.Button_Slow_Down]: [`KEY ${Button.SLOW_DOWN.toString()}`, 'Change'],
[SettingGamepad.Button_Submit]: [`KEY ${Button.SUBMIT.toString()}`, 'Change']
};
export const settingGamepadDefaults: SettingDefaults = {
@ -57,6 +59,7 @@ export const settingGamepadDefaults: SettingDefaults = {
[SettingGamepad.Button_Cycle_Variant]: 0,
[SettingGamepad.Button_Speed_Up]: 0,
[SettingGamepad.Button_Slow_Down]: 0,
[SettingGamepad.Button_Submit]: 0,
};
export const noOptionsCursors: Array<SettingGamepad> = [
@ -72,6 +75,7 @@ export const noOptionsCursors: Array<SettingGamepad> = [
SettingGamepad.Button_Cycle_Variant,
SettingGamepad.Button_Speed_Up,
SettingGamepad.Button_Slow_Down,
SettingGamepad.Button_Submit,
];
export function setSettingGamepad(scene: BattleScene, setting: SettingGamepad, value: integer): boolean {