From ba2158ec640da8913e7b8de39b79c0dd7392aa70 Mon Sep 17 00:00:00 2001 From: Dobin Shin <34051876+Gamez0@users.noreply.github.com> Date: Thu, 12 Jun 2025 08:24:27 +0900 Subject: [PATCH] [UI/UX] Default cursor to no when stop trying to teach move https://github.com/pagefaultgames/pokerogue/pull/5924 * [UI/UX] "Stop trying to teach move" Defaulting to "No" * [Test] setCursor to 0, 'Yes' to end learning move * Move confirmUIMode to its own file in enums, add docs --------- Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> --- src/enums/confirm-ui-mode.ts | 13 +++++++++++++ src/phases/learn-move-phase.ts | 5 +++++ src/ui/confirm-ui-handler.ts | 14 +++++++++++++- test/phases/learn-move-phase.test.ts | 4 ++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/enums/confirm-ui-mode.ts diff --git a/src/enums/confirm-ui-mode.ts b/src/enums/confirm-ui-mode.ts new file mode 100644 index 00000000000..46bc42374cd --- /dev/null +++ b/src/enums/confirm-ui-mode.ts @@ -0,0 +1,13 @@ +// biome-ignore lint/correctness/noUnusedImports: Used in tsdoc +import type ConfirmUiHandler from "#app/ui/confirm-ui-handler"; + +/** + * Used by {@linkcode ConfirmUiHandler} to determine whether the cursor should start on Yes or No + */ +export const ConfirmUiMode = Object.freeze({ + /** Start cursor on Yes */ + DEFAULT_YES: 1, + /** Start cursor on No */ + DEFAULT_NO: 2 +}); +export type ConfirmUiMode = typeof ConfirmUiMode[keyof typeof ConfirmUiMode]; \ No newline at end of file diff --git a/src/phases/learn-move-phase.ts b/src/phases/learn-move-phase.ts index e24efa63b5a..e197f876d76 100644 --- a/src/phases/learn-move-phase.ts +++ b/src/phases/learn-move-phase.ts @@ -12,6 +12,7 @@ import { UiMode } from "#enums/ui-mode"; import i18next from "i18next"; import { PlayerPartyMemberPokemonPhase } from "#app/phases/player-party-member-pokemon-phase"; import type Pokemon from "#app/field/pokemon"; +import { ConfirmUiMode } from "#enums/confirm-ui-mode"; import { LearnMoveType } from "#enums/learn-move-type"; export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { @@ -163,6 +164,10 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { globalScene.ui.setMode(this.messageMode); this.replaceMoveCheck(move, pokemon); }, + false, + 0, + 0, + ConfirmUiMode.DEFAULT_NO, ); } diff --git a/src/ui/confirm-ui-handler.ts b/src/ui/confirm-ui-handler.ts index 7b5ca3d7e63..37fd50ca671 100644 --- a/src/ui/confirm-ui-handler.ts +++ b/src/ui/confirm-ui-handler.ts @@ -4,8 +4,11 @@ import { UiMode } from "#enums/ui-mode"; import i18next from "i18next"; import { Button } from "#enums/buttons"; import { globalScene } from "#app/global-scene"; +import { ConfirmUiMode } from "#enums/confirm-ui-mode"; export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { + private confirmUiMode: ConfirmUiMode; + public static readonly windowWidth: number = 48; private switchCheck: boolean; @@ -105,7 +108,16 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler { this.optionSelectContainer.setPosition(globalScene.game.canvas.width / 6 - 1 + xOffset, -48 + yOffset); - this.setCursor(this.switchCheck ? this.switchCheckCursor : 0); + this.confirmUiMode = args.length >= 6 ? (args[5] as ConfirmUiMode) : ConfirmUiMode.DEFAULT_YES; + + switch (this.confirmUiMode) { + case ConfirmUiMode.DEFAULT_YES: + this.setCursor(this.switchCheck ? this.switchCheckCursor : 0); + break; + case ConfirmUiMode.DEFAULT_NO: + this.setCursor(this.switchCheck ? this.switchCheckCursor : 1); + break; + } return true; } diff --git a/test/phases/learn-move-phase.test.ts b/test/phases/learn-move-phase.test.ts index 88b8187069b..05dbf71d1f4 100644 --- a/test/phases/learn-move-phase.test.ts +++ b/test/phases/learn-move-phase.test.ts @@ -92,6 +92,10 @@ describe("Learn Move Phase", () => { game.onNextPrompt("LearnMovePhase", UiMode.CONFIRM, () => { game.scene.ui.processInput(Button.ACTION); }); + game.onNextPrompt("LearnMovePhase", UiMode.CONFIRM, () => { + game.scene.ui.setCursor(0); + game.scene.ui.processInput(Button.ACTION); + }); await game.phaseInterceptor.to(LearnMovePhase); const levelReq = bulbasaur.getLevelMoves(5)[0][0];