diff --git a/src/inputs-controller.ts b/src/inputs-controller.ts index c778463d5f5..3bbce891e6c 100644 --- a/src/inputs-controller.ts +++ b/src/inputs-controller.ts @@ -691,6 +691,13 @@ export class InputsController { this.configs[selectedDevice].custom = mappingConfigs.custom; } + resetConfigs(): void { + this.configs = new Map(); + if (this.getGamepadsName()?.length) + this.setupGamepad(this.selectedDevice[Device.GAMEPAD]); + this.setupKeyboard(); + } + /** * Swaps a binding in the configuration. * diff --git a/src/system/game-data.ts b/src/system/game-data.ts index bb1cfb3262b..c83e5f4c194 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -589,6 +589,13 @@ export class GameData { return true; // Return true to indicate the operation was successful } + public resetMappingToFactory(): boolean { + if (!localStorage.hasOwnProperty('mappingConfigs')) // Check if 'mappingConfigs' exists in localStorage + return false; // If 'mappingConfigs' does not exist, return false + localStorage.removeItem('mappingConfigs'); + this.scene.inputController.resetConfigs(); + } + /** * Saves a gamepad setting to localStorage. * diff --git a/src/ui/settings/settings-keyboard-ui-handler.ts b/src/ui/settings/settings-keyboard-ui-handler.ts index 301be63faf8..d72a5ba8040 100644 --- a/src/ui/settings/settings-keyboard-ui-handler.ts +++ b/src/ui/settings/settings-keyboard-ui-handler.ts @@ -40,7 +40,9 @@ export default class SettingsKeyboardUiHandler extends AbstractSettingsUiUiHandl this.settingBlacklisted = settingKeyboardBlackList; const deleteEvent = scene.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.DELETE); + const restoreDefaultEvent = scene.input.keyboard.addKey(Phaser.Input.Keyboard.KeyCodes.HOME); deleteEvent.on('up', this.onDeleteDown, this); + restoreDefaultEvent.on('up', this.onHomeDown, this); } setSetting(scene: BattleScene, setting, value: integer): boolean { @@ -66,6 +68,14 @@ export default class SettingsKeyboardUiHandler extends AbstractSettingsUiUiHandl this.layout['noKeyboard'].label = label; } + /** + * Handle the home key press event. + */ + onHomeDown(): void { + if (![Mode.SETTINGS_KEYBOARD, Mode.SETTINGS, Mode.SETTINGS_GAMEPAD].includes(this.scene.ui.getMode())) return; + this.scene.gameData.resetMappingToFactory(); + } + /** * Handle the delete key press event. */