From 6946abadb8e25f7a4e73c7bd07e0afa22741360c Mon Sep 17 00:00:00 2001 From: Wlowscha <54003515+Wlowscha@users.noreply.github.com> Date: Mon, 30 Dec 2024 16:35:45 +0100 Subject: [PATCH] [UI/UX] Add cursor memory option (#5028) * Adding a new key determining whether the command cursor resets at the beginning of each new battle. * Allowing user to toggle commandCursorReset on and off. * Changing option name to commandCursorMemory * Fixed caps in settings.ts * Moved Command_Cursor_Memory from Display settings to General settings --- src/battle-scene.ts | 1 + src/phases/command-phase.ts | 8 +++++++- src/system/settings/settings.ts | 11 +++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index c430a12ae3e..11950f0a47f 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -147,6 +147,7 @@ export default class BattleScene extends SceneBase { public damageNumbersMode: integer = 0; public reroll: boolean = false; public shopCursorTarget: number = ShopCursorTarget.REWARDS; + public commandCursorMemory: boolean = false; public showMovesetFlyout: boolean = true; public showArenaFlyout: boolean = true; public showTimeOfDayWidget: boolean = true; diff --git a/src/phases/command-phase.ts b/src/phases/command-phase.ts index eab76282908..fa85f2427e5 100644 --- a/src/phases/command-phase.ts +++ b/src/phases/command-phase.ts @@ -35,8 +35,14 @@ export class CommandPhase extends FieldPhase { this.scene.updateGameInfo(); const commandUiHandler = this.scene.ui.handlers[Mode.COMMAND]; + + // If one of these conditions is true, we always reset the cursor to Command.FIGHT + const cursorResetEvent = this.scene.currentBattle.battleType === BattleType.MYSTERY_ENCOUNTER || + this.scene.currentBattle.battleType === BattleType.TRAINER || + this.scene.arena.biomeType === Biome.END; + if (commandUiHandler) { - if (this.scene.currentBattle.turn === 1 || commandUiHandler.getCursor() === Command.POKEMON) { + if ((this.scene.currentBattle.turn === 1 && (!this.scene.commandCursorMemory || cursorResetEvent)) || commandUiHandler.getCursor() === Command.POKEMON) { commandUiHandler.setCursor(Command.FIGHT); } else { commandUiHandler.setCursor(commandUiHandler.getCursor()); diff --git a/src/system/settings/settings.ts b/src/system/settings/settings.ts index 64ddfdae5cf..ebdcad1c4f9 100644 --- a/src/system/settings/settings.ts +++ b/src/system/settings/settings.ts @@ -157,6 +157,7 @@ export const SettingKeys = { Move_Animations: "MOVE_ANIMATIONS", Show_Stats_on_Level_Up: "SHOW_LEVEL_UP_STATS", Shop_Cursor_Target: "SHOP_CURSOR_TARGET", + Command_Cursor_Memory: "COMMAND_CURSOR_MEMORY", Candy_Upgrade_Notification: "CANDY_UPGRADE_NOTIFICATION", Candy_Upgrade_Display: "CANDY_UPGRADE_DISPLAY", Move_Info: "MOVE_INFO", @@ -339,6 +340,13 @@ export const Setting: Array<Setting> = [ default: 0, type: SettingType.GENERAL }, + { + key: SettingKeys.Command_Cursor_Memory, + label: i18next.t("settings:commandCursorMemory"), + options: OFF_ON, + default: 0, + type: SettingType.GENERAL + }, { key: SettingKeys.Enable_Retries, label: i18next.t("settings:enableRetries"), @@ -827,6 +835,9 @@ export function setSetting(scene: BattleScene, setting: string, value: integer): const selectedValue = shopCursorTargetIndexMap[value]; scene.shopCursorTarget = selectedValue; break; + case SettingKeys.Command_Cursor_Memory: + scene.commandCursorMemory = Setting[index].options[value].value === "On"; + break; case SettingKeys.EXP_Gains_Speed: scene.expGainsSpeed = value; break;