Extract Mode enum out of UI and into its own file

Reduces circular imports from 909 to 773
This commit is contained in:
Sirz Benjie 2025-04-14 14:29:59 -05:00
parent 54ce58411b
commit 82ef32e033
No known key found for this signature in database
GPG Key ID: 4A524B4D196C759E
138 changed files with 867 additions and 852 deletions

View File

@ -33,7 +33,7 @@ import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/myst
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode"; import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { randSeedInt, randSeedShuffle } from "#app/utils"; import { randSeedInt, randSeedShuffle } from "#app/utils";
import { showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { showEncounterDialogue, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import type { OptionSelectConfig } from "#app/ui/abstact-option-select-ui-handler"; import type { OptionSelectConfig } from "#app/ui/abstact-option-select-ui-handler";
import type { PlayerPokemon } from "#app/field/pokemon"; import type { PlayerPokemon } from "#app/field/pokemon";
@ -437,7 +437,7 @@ async function handleSwapAbility() {
await showEncounterDialogue(`${namespace}:option.1.apply_ability_dialogue`, `${namespace}:speaker`); await showEncounterDialogue(`${namespace}:option.1.apply_ability_dialogue`, `${namespace}:speaker`);
await showEncounterText(`${namespace}:option.1.apply_ability_message`); await showEncounterText(`${namespace}:option.1.apply_ability_message`);
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
displayYesNoOptions(resolve); displayYesNoOptions(resolve);
}); });
}); });
@ -467,7 +467,7 @@ function displayYesNoOptions(resolve) {
maxOptions: 7, maxOptions: 7,
yOffset: 0, yOffset: 0,
}; };
globalScene.ui.setModeWithoutClear(Mode.OPTION_SELECT, config, null, true); globalScene.ui.setModeWithoutClear(UiMode.OPTION_SELECT, config, null, true);
} }
function onYesAbilitySwap(resolve) { function onYesAbilitySwap(resolve) {
@ -477,11 +477,11 @@ function onYesAbilitySwap(resolve) {
applyAbilityOverrideToPokemon(pokemon, encounter.misc.ability); applyAbilityOverrideToPokemon(pokemon, encounter.misc.ability);
encounter.setDialogueToken("chosenPokemon", pokemon.getNameToRender()); encounter.setDialogueToken("chosenPokemon", pokemon.getNameToRender());
globalScene.ui.setMode(Mode.MESSAGE).then(() => resolve(true)); globalScene.ui.setMode(UiMode.MESSAGE).then(() => resolve(true));
}; };
const onPokemonNotSelected = () => { const onPokemonNotSelected = () => {
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
displayYesNoOptions(resolve); displayYesNoOptions(resolve);
}); });
}; };

View File

@ -30,7 +30,7 @@ import type PokemonData from "#app/system/pokemon-data";
import type { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import type { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler";
import type { PartyOption, PokemonSelectFilter } from "#app/ui/party-ui-handler"; import type { PartyOption, PokemonSelectFilter } from "#app/ui/party-ui-handler";
import { PartyUiMode } from "#app/ui/party-ui-handler"; import { PartyUiMode } from "#app/ui/party-ui-handler";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { isNullOrUndefined, randSeedInt, randomString, randSeedItem } from "#app/utils"; import { isNullOrUndefined, randSeedInt, randomString, randSeedItem } from "#app/utils";
import type { BattlerTagType } from "#enums/battler-tag-type"; import type { BattlerTagType } from "#enums/battler-tag-type";
import { Biome } from "#enums/biome"; import { Biome } from "#enums/biome";
@ -563,7 +563,7 @@ export function selectPokemonForOption(
// Open party screen to choose pokemon // Open party screen to choose pokemon
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.PARTY, UiMode.PARTY,
PartyUiMode.SELECT, PartyUiMode.SELECT,
-1, -1,
(slotIndex: number, _option: PartyOption) => { (slotIndex: number, _option: PartyOption) => {
@ -581,7 +581,7 @@ export function selectPokemonForOption(
} }
// There is a second option to choose after selecting the Pokemon // There is a second option to choose after selecting the Pokemon
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
const displayOptions = () => { const displayOptions = () => {
// Always appends a cancel option to bottom of options // Always appends a cancel option to bottom of options
const fullOptions = secondaryOptions const fullOptions = secondaryOptions
@ -623,7 +623,7 @@ export function selectPokemonForOption(
if (fullOptions[0].onHover) { if (fullOptions[0].onHover) {
fullOptions[0].onHover(); fullOptions[0].onHover();
} }
globalScene.ui.setModeWithoutClear(Mode.OPTION_SELECT, config, null, true); globalScene.ui.setModeWithoutClear(UiMode.OPTION_SELECT, config, null, true);
}; };
const textPromptKey = const textPromptKey =
@ -673,20 +673,20 @@ export function selectOptionThenPokemon(
const modeToSetOnExit = globalScene.ui.getMode(); const modeToSetOnExit = globalScene.ui.getMode();
const displayOptions = (config: OptionSelectConfig) => { const displayOptions = (config: OptionSelectConfig) => {
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
if (!optionSelectPromptKey) { if (!optionSelectPromptKey) {
// Do hover over the starting selection option // Do hover over the starting selection option
if (fullOptions[0].onHover) { if (fullOptions[0].onHover) {
fullOptions[0].onHover(); fullOptions[0].onHover();
} }
globalScene.ui.setMode(Mode.OPTION_SELECT, config); globalScene.ui.setMode(UiMode.OPTION_SELECT, config);
} else { } else {
showEncounterText(optionSelectPromptKey).then(() => { showEncounterText(optionSelectPromptKey).then(() => {
// Do hover over the starting selection option // Do hover over the starting selection option
if (fullOptions[0].onHover) { if (fullOptions[0].onHover) {
fullOptions[0].onHover(); fullOptions[0].onHover();
} }
globalScene.ui.setMode(Mode.OPTION_SELECT, config); globalScene.ui.setMode(UiMode.OPTION_SELECT, config);
}); });
} }
}); });
@ -695,7 +695,7 @@ export function selectOptionThenPokemon(
const selectPokemonAfterOption = (selectedOptionIndex: number) => { const selectPokemonAfterOption = (selectedOptionIndex: number) => {
// Open party screen to choose a Pokemon // Open party screen to choose a Pokemon
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.PARTY, UiMode.PARTY,
PartyUiMode.SELECT, PartyUiMode.SELECT,
-1, -1,
(slotIndex: number, _option: PartyOption) => { (slotIndex: number, _option: PartyOption) => {

View File

@ -14,7 +14,7 @@ import { PlayerGender } from "#enums/player-gender";
import { addPokeballCaptureStars, addPokeballOpenParticles } from "#app/field/anims"; import { addPokeballCaptureStars, addPokeballOpenParticles } from "#app/field/anims";
import { getStatusEffectCatchRateMultiplier } from "#app/data/status-effect"; import { getStatusEffectCatchRateMultiplier } from "#app/data/status-effect";
import { achvs } from "#app/system/achv"; import { achvs } from "#app/system/achv";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import type { PartyOption } from "#app/ui/party-ui-handler"; import type { PartyOption } from "#app/ui/party-ui-handler";
import { PartyUiMode } from "#app/ui/party-ui-handler"; import { PartyUiMode } from "#app/ui/party-ui-handler";
import { Species } from "#enums/species"; import { Species } from "#enums/species";
@ -714,7 +714,7 @@ export async function catchPokemon(
() => { () => {
globalScene.pokemonInfoContainer.makeRoomForConfirmUi(1, true); globalScene.pokemonInfoContainer.makeRoomForConfirmUi(1, true);
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
const newPokemon = globalScene.addPlayerPokemon( const newPokemon = globalScene.addPlayerPokemon(
pokemon.species, pokemon.species,
@ -729,12 +729,12 @@ export async function catchPokemon(
pokemon, pokemon,
); );
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.SUMMARY, UiMode.SUMMARY,
newPokemon, newPokemon,
0, 0,
SummaryUiMode.DEFAULT, SummaryUiMode.DEFAULT,
() => { () => {
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
promptRelease(); promptRelease();
}); });
}, },
@ -749,13 +749,13 @@ export async function catchPokemon(
female: pokemon.gender === Gender.FEMALE, female: pokemon.gender === Gender.FEMALE,
}; };
globalScene.ui.setOverlayMode( globalScene.ui.setOverlayMode(
Mode.POKEDEX_PAGE, UiMode.POKEDEX_PAGE,
pokemon.species, pokemon.species,
pokemon.formIndex, pokemon.formIndex,
attributes, attributes,
null, null,
() => { () => {
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
promptRelease(); promptRelease();
}); });
}, },
@ -763,11 +763,11 @@ export async function catchPokemon(
}, },
() => { () => {
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.PARTY, UiMode.PARTY,
PartyUiMode.RELEASE, PartyUiMode.RELEASE,
0, 0,
(slotIndex: number, _option: PartyOption) => { (slotIndex: number, _option: PartyOption) => {
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
if (slotIndex < 6) { if (slotIndex < 6) {
addToParty(slotIndex); addToParty(slotIndex);
} else { } else {
@ -778,7 +778,7 @@ export async function catchPokemon(
); );
}, },
() => { () => {
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
removePokemon(); removePokemon();
end(); end();
}); });

47
src/enums/ui-mode.ts Normal file
View File

@ -0,0 +1,47 @@
export enum UiMode {
MESSAGE,
TITLE,
COMMAND,
FIGHT,
BALL,
TARGET_SELECT,
MODIFIER_SELECT,
SAVE_SLOT,
PARTY,
SUMMARY,
STARTER_SELECT,
EVOLUTION_SCENE,
EGG_HATCH_SCENE,
EGG_HATCH_SUMMARY,
CONFIRM,
OPTION_SELECT,
MENU,
MENU_OPTION_SELECT,
SETTINGS,
SETTINGS_DISPLAY,
SETTINGS_AUDIO,
SETTINGS_GAMEPAD,
GAMEPAD_BINDING,
SETTINGS_KEYBOARD,
KEYBOARD_BINDING,
ACHIEVEMENTS,
GAME_STATS,
EGG_LIST,
EGG_GACHA,
POKEDEX,
POKEDEX_SCAN,
POKEDEX_PAGE,
LOGIN_FORM,
REGISTRATION_FORM,
LOADING,
SESSION_RELOAD,
UNAVAILABLE,
CHALLENGE_SELECT,
RENAME_POKEMON,
RUN_HISTORY,
RUN_INFO,
TEST_DIALOGUE,
AUTO_COMPLETE,
ADMIN,
MYSTERY_ENCOUNTER
}

View File

@ -193,7 +193,7 @@ import {
import { allAbilities } from "#app/data/data-lists"; import { allAbilities } from "#app/data/data-lists";
import type PokemonData from "#app/system/pokemon-data"; import type PokemonData from "#app/system/pokemon-data";
import { BattlerIndex } from "#app/battle"; import { BattlerIndex } from "#app/battle";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import type { PartyOption } from "#app/ui/party-ui-handler"; import type { PartyOption } from "#app/ui/party-ui-handler";
import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler"; import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler";
import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade";
@ -6581,7 +6581,7 @@ export class PlayerPokemon extends Pokemon {
this.leaveField(switchType === SwitchType.SWITCH); this.leaveField(switchType === SwitchType.SWITCH);
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.PARTY, UiMode.PARTY,
PartyUiMode.FAINT_SWITCH, PartyUiMode.FAINT_SWITCH,
this.getFieldIndex(), this.getFieldIndex(),
(slotIndex: number, option: PartyOption) => { (slotIndex: number, option: PartyOption) => {
@ -6599,7 +6599,7 @@ export class PlayerPokemon extends Pokemon {
MoveEndPhase, MoveEndPhase,
); );
} }
globalScene.ui.setMode(Mode.MESSAGE).then(resolve); globalScene.ui.setMode(UiMode.MESSAGE).then(resolve);
}, },
PartyUiHandler.FilterNonFainted, PartyUiHandler.FilterNonFainted,
); );

View File

@ -5,7 +5,7 @@ import pad_unlicensedSNES from "./configs/inputs/pad_unlicensedSNES";
import pad_xbox360 from "./configs/inputs/pad_xbox360"; import pad_xbox360 from "./configs/inputs/pad_xbox360";
import pad_dualshock from "./configs/inputs/pad_dualshock"; import pad_dualshock from "./configs/inputs/pad_dualshock";
import pad_procon from "./configs/inputs/pad_procon"; import pad_procon from "./configs/inputs/pad_procon";
import { Mode } from "./ui/ui"; import { UiMode } from "#enums/ui-mode";
import type SettingsGamepadUiHandler from "./ui/settings/settings-gamepad-ui-handler"; import type SettingsGamepadUiHandler from "./ui/settings/settings-gamepad-ui-handler";
import type SettingsKeyboardUiHandler from "./ui/settings/settings-keyboard-ui-handler"; import type SettingsKeyboardUiHandler from "./ui/settings/settings-keyboard-ui-handler";
import cfg_keyboard_qwerty from "./configs/inputs/cfg_keyboard_qwerty"; import cfg_keyboard_qwerty from "./configs/inputs/cfg_keyboard_qwerty";
@ -235,7 +235,7 @@ export class InputsController {
if (gamepadName) { if (gamepadName) {
this.selectedDevice[Device.GAMEPAD] = gamepadName.toLowerCase(); this.selectedDevice[Device.GAMEPAD] = gamepadName.toLowerCase();
} }
const handler = globalScene.ui?.handlers[Mode.SETTINGS_GAMEPAD] as SettingsGamepadUiHandler; const handler = globalScene.ui?.handlers[UiMode.SETTINGS_GAMEPAD] as SettingsGamepadUiHandler;
handler?.updateChosenGamepadDisplay(); handler?.updateChosenGamepadDisplay();
} }
@ -248,7 +248,7 @@ export class InputsController {
if (layoutKeyboard) { if (layoutKeyboard) {
this.selectedDevice[Device.KEYBOARD] = layoutKeyboard.toLowerCase(); this.selectedDevice[Device.KEYBOARD] = layoutKeyboard.toLowerCase();
} }
const handler = globalScene.ui?.handlers[Mode.SETTINGS_KEYBOARD] as SettingsKeyboardUiHandler; const handler = globalScene.ui?.handlers[UiMode.SETTINGS_KEYBOARD] as SettingsKeyboardUiHandler;
handler?.updateChosenKeyboardDisplay(); handler?.updateChosenKeyboardDisplay();
} }
@ -296,7 +296,7 @@ export class InputsController {
globalScene.gameData?.saveMappingConfigs(gamepadID, this.configs[gamepadID]); globalScene.gameData?.saveMappingConfigs(gamepadID, this.configs[gamepadID]);
} }
this.lastSource = "gamepad"; this.lastSource = "gamepad";
const handler = globalScene.ui?.handlers[Mode.SETTINGS_GAMEPAD] as SettingsGamepadUiHandler; const handler = globalScene.ui?.handlers[UiMode.SETTINGS_GAMEPAD] as SettingsGamepadUiHandler;
handler?.updateChosenGamepadDisplay(); handler?.updateChosenGamepadDisplay();
} }
@ -406,7 +406,7 @@ export class InputsController {
this.lastSource = "gamepad"; this.lastSource = "gamepad";
if ( if (
!this.selectedDevice[Device.GAMEPAD] || !this.selectedDevice[Device.GAMEPAD] ||
(globalScene.ui.getMode() !== Mode.GAMEPAD_BINDING && (globalScene.ui.getMode() !== UiMode.GAMEPAD_BINDING &&
this.selectedDevice[Device.GAMEPAD] !== pad.id.toLowerCase()) this.selectedDevice[Device.GAMEPAD] !== pad.id.toLowerCase())
) { ) {
this.setChosenGamepad(pad.id); this.setChosenGamepad(pad.id);

View File

@ -19,7 +19,7 @@ import { achvs } from "#app/system/achv";
import type { PartyOption } from "#app/ui/party-ui-handler"; import type { PartyOption } from "#app/ui/party-ui-handler";
import { PartyUiMode } from "#app/ui/party-ui-handler"; import { PartyUiMode } from "#app/ui/party-ui-handler";
import { SummaryUiMode } from "#app/ui/summary-ui-handler"; import { SummaryUiMode } from "#app/ui/summary-ui-handler";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import type { PokeballType } from "#enums/pokeball"; import type { PokeballType } from "#enums/pokeball";
import { StatusEffect } from "#enums/status-effect"; import { StatusEffect } from "#enums/status-effect";
import i18next from "i18next"; import i18next from "i18next";
@ -295,7 +295,7 @@ export class AttemptCapturePhase extends PokemonPhase {
() => { () => {
globalScene.pokemonInfoContainer.makeRoomForConfirmUi(1, true); globalScene.pokemonInfoContainer.makeRoomForConfirmUi(1, true);
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
const newPokemon = globalScene.addPlayerPokemon( const newPokemon = globalScene.addPlayerPokemon(
pokemon.species, pokemon.species,
@ -310,12 +310,12 @@ export class AttemptCapturePhase extends PokemonPhase {
pokemon, pokemon,
); );
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.SUMMARY, UiMode.SUMMARY,
newPokemon, newPokemon,
0, 0,
SummaryUiMode.DEFAULT, SummaryUiMode.DEFAULT,
() => { () => {
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
promptRelease(); promptRelease();
}); });
}, },
@ -329,19 +329,26 @@ export class AttemptCapturePhase extends PokemonPhase {
form: pokemon.formIndex, form: pokemon.formIndex,
female: pokemon.gender === Gender.FEMALE, female: pokemon.gender === Gender.FEMALE,
}; };
globalScene.ui.setOverlayMode(Mode.POKEDEX_PAGE, pokemon.species, attributes, null, null, () => { globalScene.ui.setOverlayMode(
globalScene.ui.setMode(Mode.MESSAGE).then(() => { UiMode.POKEDEX_PAGE,
pokemon.species,
attributes,
null,
null,
() => {
globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
promptRelease(); promptRelease();
}); });
}); },
);
}, },
() => { () => {
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.PARTY, UiMode.PARTY,
PartyUiMode.RELEASE, PartyUiMode.RELEASE,
this.fieldIndex, this.fieldIndex,
(slotIndex: number, _option: PartyOption) => { (slotIndex: number, _option: PartyOption) => {
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
if (slotIndex < 6) { if (slotIndex < 6) {
addToParty(slotIndex); addToParty(slotIndex);
} else { } else {
@ -352,7 +359,7 @@ export class AttemptCapturePhase extends PokemonPhase {
); );
}, },
() => { () => {
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
removePokemon(); removePokemon();
end(); end();
}); });

View File

@ -2,7 +2,7 @@ import { globalScene } from "#app/global-scene";
import { BattleStyle } from "#app/enums/battle-style"; import { BattleStyle } from "#app/enums/battle-style";
import { BattlerTagType } from "#app/enums/battler-tag-type"; import { BattlerTagType } from "#app/enums/battler-tag-type";
import { getPokemonNameWithAffix } from "#app/messages"; import { getPokemonNameWithAffix } from "#app/messages";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import { BattlePhase } from "./battle-phase"; import { BattlePhase } from "./battle-phase";
import { SummonMissingPhase } from "./summon-missing-phase"; import { SummonMissingPhase } from "./summon-missing-phase";
@ -64,14 +64,14 @@ export class CheckSwitchPhase extends BattlePhase {
null, null,
() => { () => {
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.unshiftPhase(new SwitchPhase(SwitchType.INITIAL_SWITCH, this.fieldIndex, false, true)); globalScene.unshiftPhase(new SwitchPhase(SwitchType.INITIAL_SWITCH, this.fieldIndex, false, true));
this.end(); this.end();
}, },
() => { () => {
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
this.end(); this.end();
}, },
); );

View File

@ -15,7 +15,7 @@ import type { PlayerPokemon, TurnMove } from "#app/field/pokemon";
import { FieldPosition } from "#app/field/pokemon"; import { FieldPosition } from "#app/field/pokemon";
import { getPokemonNameWithAffix } from "#app/messages"; import { getPokemonNameWithAffix } from "#app/messages";
import { Command } from "#app/ui/command-ui-handler"; import { Command } from "#app/ui/command-ui-handler";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import { FieldPhase } from "./field-phase"; import { FieldPhase } from "./field-phase";
import { SelectTargetPhase } from "./select-target-phase"; import { SelectTargetPhase } from "./select-target-phase";
@ -38,7 +38,7 @@ export class CommandPhase extends FieldPhase {
globalScene.updateGameInfo(); globalScene.updateGameInfo();
const commandUiHandler = globalScene.ui.handlers[Mode.COMMAND]; const commandUiHandler = globalScene.ui.handlers[UiMode.COMMAND];
// If one of these conditions is true, we always reset the cursor to Command.FIGHT // If one of these conditions is true, we always reset the cursor to Command.FIGHT
const cursorResetEvent = const cursorResetEvent =
@ -127,7 +127,7 @@ export class CommandPhase extends FieldPhase {
) { ) {
this.handleCommand(Command.FIGHT, moveIndex, queuedMove.ignorePP, queuedMove); this.handleCommand(Command.FIGHT, moveIndex, queuedMove.ignorePP, queuedMove);
} else { } else {
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
} }
} }
} else { } else {
@ -136,9 +136,9 @@ export class CommandPhase extends FieldPhase {
globalScene.currentBattle.mysteryEncounter?.skipToFightInput globalScene.currentBattle.mysteryEncounter?.skipToFightInput
) { ) {
globalScene.ui.clearText(); globalScene.ui.clearText();
globalScene.ui.setMode(Mode.FIGHT, this.fieldIndex); globalScene.ui.setMode(UiMode.FIGHT, this.fieldIndex);
} else { } else {
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
} }
} }
} }
@ -209,7 +209,7 @@ export class CommandPhase extends FieldPhase {
success = true; success = true;
} else if (cursor < playerPokemon.getMoveset().length) { } else if (cursor < playerPokemon.getMoveset().length) {
const move = playerPokemon.getMoveset()[cursor]; const move = playerPokemon.getMoveset()[cursor];
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
// Decides between a Disabled, Not Implemented, or No PP translation message // Decides between a Disabled, Not Implemented, or No PP translation message
const errorMessage = playerPokemon.isMoveRestricted(move.moveId, playerPokemon) const errorMessage = playerPokemon.isMoveRestricted(move.moveId, playerPokemon)
@ -226,7 +226,7 @@ export class CommandPhase extends FieldPhase {
null, null,
() => { () => {
globalScene.ui.clearText(); globalScene.ui.clearText();
globalScene.ui.setMode(Mode.FIGHT, this.fieldIndex); globalScene.ui.setMode(UiMode.FIGHT, this.fieldIndex);
}, },
null, null,
true, true,
@ -244,27 +244,27 @@ export class CommandPhase extends FieldPhase {
globalScene.arena.biomeType === Biome.END && globalScene.arena.biomeType === Biome.END &&
(!globalScene.gameMode.isClassic || globalScene.gameMode.isFreshStartChallenge() || notInDex) (!globalScene.gameMode.isClassic || globalScene.gameMode.isFreshStartChallenge() || notInDex)
) { ) {
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.showText( globalScene.ui.showText(
i18next.t("battle:noPokeballForce"), i18next.t("battle:noPokeballForce"),
null, null,
() => { () => {
globalScene.ui.showText("", 0); globalScene.ui.showText("", 0);
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
}, },
null, null,
true, true,
); );
} else if (globalScene.currentBattle.battleType === BattleType.TRAINER) { } else if (globalScene.currentBattle.battleType === BattleType.TRAINER) {
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.showText( globalScene.ui.showText(
i18next.t("battle:noPokeballTrainer"), i18next.t("battle:noPokeballTrainer"),
null, null,
() => { () => {
globalScene.ui.showText("", 0); globalScene.ui.showText("", 0);
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
}, },
null, null,
true, true,
@ -273,14 +273,14 @@ export class CommandPhase extends FieldPhase {
globalScene.currentBattle.isBattleMysteryEncounter() && globalScene.currentBattle.isBattleMysteryEncounter() &&
!globalScene.currentBattle.mysteryEncounter!.catchAllowed !globalScene.currentBattle.mysteryEncounter!.catchAllowed
) { ) {
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.showText( globalScene.ui.showText(
i18next.t("battle:noPokeballMysteryEncounter"), i18next.t("battle:noPokeballMysteryEncounter"),
null, null,
() => { () => {
globalScene.ui.showText("", 0); globalScene.ui.showText("", 0);
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
}, },
null, null,
true, true,
@ -291,14 +291,14 @@ export class CommandPhase extends FieldPhase {
.filter(p => p.isActive(true)) .filter(p => p.isActive(true))
.map(p => p.getBattlerIndex()); .map(p => p.getBattlerIndex());
if (targets.length > 1) { if (targets.length > 1) {
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.showText( globalScene.ui.showText(
i18next.t("battle:noPokeballMulti"), i18next.t("battle:noPokeballMulti"),
null, null,
() => { () => {
globalScene.ui.showText("", 0); globalScene.ui.showText("", 0);
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
}, },
null, null,
true, true,
@ -311,14 +311,14 @@ export class CommandPhase extends FieldPhase {
!targetPokemon?.hasAbility(Abilities.WONDER_GUARD, false, true) && !targetPokemon?.hasAbility(Abilities.WONDER_GUARD, false, true) &&
cursor < PokeballType.MASTER_BALL cursor < PokeballType.MASTER_BALL
) { ) {
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.showText( globalScene.ui.showText(
i18next.t("battle:noPokeballStrong"), i18next.t("battle:noPokeballStrong"),
null, null,
() => { () => {
globalScene.ui.showText("", 0); globalScene.ui.showText("", 0);
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
}, },
null, null,
true, true,
@ -347,14 +347,14 @@ export class CommandPhase extends FieldPhase {
(arena.biomeType === Biome.END || (arena.biomeType === Biome.END ||
(!isNullOrUndefined(mysteryEncounterFleeAllowed) && !mysteryEncounterFleeAllowed)) (!isNullOrUndefined(mysteryEncounterFleeAllowed) && !mysteryEncounterFleeAllowed))
) { ) {
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.showText( globalScene.ui.showText(
i18next.t("battle:noEscapeForce"), i18next.t("battle:noEscapeForce"),
null, null,
() => { () => {
globalScene.ui.showText("", 0); globalScene.ui.showText("", 0);
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
}, },
null, null,
true, true,
@ -364,14 +364,14 @@ export class CommandPhase extends FieldPhase {
(currentBattle.battleType === BattleType.TRAINER || (currentBattle.battleType === BattleType.TRAINER ||
currentBattle.mysteryEncounter?.encounterMode === MysteryEncounterMode.TRAINER_BATTLE) currentBattle.mysteryEncounter?.encounterMode === MysteryEncounterMode.TRAINER_BATTLE)
) { ) {
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.showText( globalScene.ui.showText(
i18next.t("battle:noEscapeTrainer"), i18next.t("battle:noEscapeTrainer"),
null, null,
() => { () => {
globalScene.ui.showText("", 0); globalScene.ui.showText("", 0);
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
}, },
null, null,
true, true,
@ -389,7 +389,7 @@ export class CommandPhase extends FieldPhase {
} }
} else if (trappedAbMessages.length > 0) { } else if (trappedAbMessages.length > 0) {
if (!isSwitch) { if (!isSwitch) {
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
} }
globalScene.ui.showText( globalScene.ui.showText(
trappedAbMessages[0], trappedAbMessages[0],
@ -397,7 +397,7 @@ export class CommandPhase extends FieldPhase {
() => { () => {
globalScene.ui.showText("", 0); globalScene.ui.showText("", 0);
if (!isSwitch) { if (!isSwitch) {
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
} }
}, },
null, null,
@ -412,8 +412,8 @@ export class CommandPhase extends FieldPhase {
break; break;
} }
if (!isSwitch) { if (!isSwitch) {
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
} }
const showNoEscapeText = (tag: any) => { const showNoEscapeText = (tag: any) => {
globalScene.ui.showText( globalScene.ui.showText(
@ -429,7 +429,7 @@ export class CommandPhase extends FieldPhase {
() => { () => {
globalScene.ui.showText("", 0); globalScene.ui.showText("", 0);
if (!isSwitch) { if (!isSwitch) {
globalScene.ui.setMode(Mode.COMMAND, this.fieldIndex); globalScene.ui.setMode(UiMode.COMMAND, this.fieldIndex);
} }
}, },
null, null,
@ -471,6 +471,6 @@ export class CommandPhase extends FieldPhase {
} }
end() { end() {
globalScene.ui.setMode(Mode.MESSAGE).then(() => super.end()); globalScene.ui.setMode(UiMode.MESSAGE).then(() => super.end());
} }
} }

View File

@ -8,7 +8,7 @@ import { achvs } from "#app/system/achv";
import EggCounterContainer from "#app/ui/egg-counter-container"; import EggCounterContainer from "#app/ui/egg-counter-container";
import type EggHatchSceneHandler from "#app/ui/egg-hatch-scene-handler"; import type EggHatchSceneHandler from "#app/ui/egg-hatch-scene-handler";
import PokemonInfoContainer from "#app/ui/pokemon-info-container"; import PokemonInfoContainer from "#app/ui/pokemon-info-container";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade";
import { fixedInt, getFrameMs, randInt } from "#app/utils"; import { fixedInt, getFrameMs, randInt } from "#app/utils";
@ -76,7 +76,7 @@ export class EggHatchPhase extends Phase {
start() { start() {
super.start(); super.start();
globalScene.ui.setModeForceTransition(Mode.EGG_HATCH_SCENE).then(() => { globalScene.ui.setModeForceTransition(UiMode.EGG_HATCH_SCENE).then(() => {
if (!this.egg) { if (!this.egg) {
return this.end(); return this.end();
} }

View File

@ -5,7 +5,7 @@ import { Phase } from "#app/phase";
import i18next from "i18next"; import i18next from "i18next";
import Overrides from "#app/overrides"; import Overrides from "#app/overrides";
import { EggHatchPhase } from "./egg-hatch-phase"; import { EggHatchPhase } from "./egg-hatch-phase";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { achvs } from "#app/system/achv"; import { achvs } from "#app/system/achv";
import type { PlayerPokemon } from "#app/field/pokemon"; import type { PlayerPokemon } from "#app/field/pokemon";
import { EggSummaryPhase } from "./egg-summary-phase"; import { EggSummaryPhase } from "./egg-summary-phase";
@ -41,7 +41,7 @@ export class EggLapsePhase extends Phase {
0, 0,
); );
globalScene.ui.setModeWithoutClear( globalScene.ui.setModeWithoutClear(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
this.hatchEggsSkipped(eggsToHatch); this.hatchEggsSkipped(eggsToHatch);
this.showSummary(); this.showSummary();

View File

@ -1,6 +1,6 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Phase } from "#app/phase"; import { Phase } from "#app/phase";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import type { EggHatchData } from "#app/data/egg-hatch-data"; import type { EggHatchData } from "#app/data/egg-hatch-data";
/** /**
@ -22,7 +22,7 @@ export class EggSummaryPhase extends Phase {
// updates next pokemon once the current update has been completed // updates next pokemon once the current update has been completed
const updateNextPokemon = (i: number) => { const updateNextPokemon = (i: number) => {
if (i >= this.eggHatchData.length) { if (i >= this.eggHatchData.length) {
globalScene.ui.setModeForceTransition(Mode.EGG_HATCH_SUMMARY, this.eggHatchData).then(() => { globalScene.ui.setModeForceTransition(UiMode.EGG_HATCH_SUMMARY, this.eggHatchData).then(() => {
globalScene.fadeOutBgm(undefined, false); globalScene.fadeOutBgm(undefined, false);
}); });
} else { } else {
@ -39,7 +39,7 @@ export class EggSummaryPhase extends Phase {
end() { end() {
globalScene.time.delayedCall(250, () => globalScene.setModifiersVisible(true)); globalScene.time.delayedCall(250, () => globalScene.setModifiersVisible(true));
globalScene.ui.setModeForceTransition(Mode.MESSAGE).then(() => { globalScene.ui.setModeForceTransition(UiMode.MESSAGE).then(() => {
super.end(); super.end();
}); });
} }

View File

@ -29,7 +29,7 @@ import { SummonPhase } from "#app/phases/summon-phase";
import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase"; import { ToggleDoublePositionPhase } from "#app/phases/toggle-double-position-phase";
import { achvs } from "#app/system/achv"; import { achvs } from "#app/system/achv";
import { handleTutorial, Tutorial } from "#app/tutorial"; import { handleTutorial, Tutorial } from "#app/tutorial";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { randSeedInt, randSeedItem } from "#app/utils"; import { randSeedInt, randSeedItem } from "#app/utils";
import { BattleSpec } from "#enums/battle-spec"; import { BattleSpec } from "#enums/battle-spec";
import { Biome } from "#enums/biome"; import { Biome } from "#enums/biome";
@ -298,7 +298,7 @@ export class EncounterPhase extends BattlePhase {
globalScene.currentBattle.trainer!.genAI(globalScene.getEnemyParty()); globalScene.currentBattle.trainer!.genAI(globalScene.getEnemyParty());
} }
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
if (!this.loaded) { if (!this.loaded) {
this.trySetWeatherIfNewBiome(); // Set weather before session gets saved this.trySetWeatherIfNewBiome(); // Set weather before session gets saved
// Game syncs to server on waves X1 and X6 (As of 1.2.0) // Game syncs to server on waves X1 and X6 (As of 1.2.0)

View File

@ -1,11 +1,11 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Phase } from "#app/phase"; import { Phase } from "#app/phase";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
export class EndEvolutionPhase extends Phase { export class EndEvolutionPhase extends Phase {
start() { start() {
super.start(); super.start();
globalScene.ui.setModeForceTransition(Mode.MESSAGE).then(() => this.end()); globalScene.ui.setModeForceTransition(UiMode.MESSAGE).then(() => this.end());
} }
} }

View File

@ -6,7 +6,7 @@ import type { SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"
import { FusionSpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions"; import { FusionSpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions";
import type EvolutionSceneHandler from "#app/ui/evolution-scene-handler"; import type EvolutionSceneHandler from "#app/ui/evolution-scene-handler";
import { fixedInt, getFrameMs, randInt } from "#app/utils"; import { fixedInt, getFrameMs, randInt } from "#app/utils";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { cos, sin } from "#app/field/anims"; import { cos, sin } from "#app/field/anims";
import type { PlayerPokemon } from "#app/field/pokemon"; import type { PlayerPokemon } from "#app/field/pokemon";
import type Pokemon from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon";
@ -53,7 +53,7 @@ export class EvolutionPhase extends Phase {
} }
setMode(): Promise<void> { setMode(): Promise<void> {
return globalScene.ui.setModeForceTransition(Mode.EVOLUTION_SCENE); return globalScene.ui.setModeForceTransition(UiMode.EVOLUTION_SCENE);
} }
start() { start() {
@ -280,7 +280,7 @@ export class EvolutionPhase extends Phase {
this.end(); this.end();
}; };
globalScene.ui.setOverlayMode( globalScene.ui.setOverlayMode(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
globalScene.ui.revertMode(); globalScene.ui.revertMode();
this.pokemon.pauseEvolutions = true; this.pokemon.pauseEvolutions = true;

View File

@ -4,7 +4,7 @@ import { achvs } from "../system/achv";
import type { SpeciesFormChange } from "../data/pokemon-forms"; import type { SpeciesFormChange } from "../data/pokemon-forms";
import { getSpeciesFormChangeMessage } from "../data/pokemon-forms"; import { getSpeciesFormChangeMessage } from "../data/pokemon-forms";
import type { PlayerPokemon } from "../field/pokemon"; import type { PlayerPokemon } from "../field/pokemon";
import { Mode } from "../ui/ui"; import { UiMode } from "#enums/ui-mode";
import type PartyUiHandler from "../ui/party-ui-handler"; import type PartyUiHandler from "../ui/party-ui-handler";
import { getPokemonNameWithAffix } from "../messages"; import { getPokemonNameWithAffix } from "../messages";
import { EndEvolutionPhase } from "./end-evolution-phase"; import { EndEvolutionPhase } from "./end-evolution-phase";
@ -31,7 +31,7 @@ export class FormChangePhase extends EvolutionPhase {
if (!this.modal) { if (!this.modal) {
return super.setMode(); return super.setMode();
} }
return globalScene.ui.setOverlayMode(Mode.EVOLUTION_SCENE); return globalScene.ui.setOverlayMode(UiMode.EVOLUTION_SCENE);
} }
doEvolution(): void { doEvolution(): void {
@ -181,7 +181,7 @@ export class FormChangePhase extends EvolutionPhase {
this.pokemon.findAndRemoveTags(t => t.tagType === BattlerTagType.AUTOTOMIZED); this.pokemon.findAndRemoveTags(t => t.tagType === BattlerTagType.AUTOTOMIZED);
if (this.modal) { if (this.modal) {
globalScene.ui.revertMode().then(() => { globalScene.ui.revertMode().then(() => {
if (globalScene.ui.getMode() === Mode.PARTY) { if (globalScene.ui.getMode() === UiMode.PARTY) {
const partyUiHandler = globalScene.ui.getHandler() as PartyUiHandler; const partyUiHandler = globalScene.ui.getHandler() as PartyUiHandler;
partyUiHandler.clearPartySlots(); partyUiHandler.clearPartySlots();
partyUiHandler.populatePartySlots(); partyUiHandler.populatePartySlots();

View File

@ -1,5 +1,5 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import { ModifierRewardPhase } from "./modifier-reward-phase"; import { ModifierRewardPhase } from "./modifier-reward-phase";
@ -10,7 +10,7 @@ export class GameOverModifierRewardPhase extends ModifierRewardPhase {
globalScene.addModifier(newModifier); globalScene.addModifier(newModifier);
// Sound loaded into game as is // Sound loaded into game as is
globalScene.playSound("level_up_fanfare"); globalScene.playSound("level_up_fanfare");
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.fadeIn(250).then(() => { globalScene.ui.fadeIn(250).then(() => {
globalScene.ui.showText( globalScene.ui.showText(
i18next.t("battle:rewardGain", { i18next.t("battle:rewardGain", {

View File

@ -19,7 +19,7 @@ import { SummonPhase } from "#app/phases/summon-phase";
import { UnlockPhase } from "#app/phases/unlock-phase"; import { UnlockPhase } from "#app/phases/unlock-phase";
import { achvs, ChallengeAchv } from "#app/system/achv"; import { achvs, ChallengeAchv } from "#app/system/achv";
import { Unlockables } from "#app/system/unlockables"; import { Unlockables } from "#app/system/unlockables";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { isLocal, isLocalServerConnected } from "#app/utils"; import { isLocal, isLocalServerConnected } from "#app/utils";
import { PlayerGender } from "#enums/player-gender"; import { PlayerGender } from "#enums/player-gender";
import { TrainerType } from "#enums/trainer-type"; import { TrainerType } from "#enums/trainer-type";
@ -78,7 +78,7 @@ export class GameOverPhase extends BattlePhase {
} else { } else {
globalScene.ui.showText(i18next.t("battle:retryBattle"), null, () => { globalScene.ui.showText(i18next.t("battle:retryBattle"), null, () => {
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
globalScene.ui.fadeOut(1250).then(() => { globalScene.ui.fadeOut(1250).then(() => {
globalScene.reset(); globalScene.reset();

View File

@ -8,7 +8,7 @@ import { getPokemonNameWithAffix } from "#app/messages";
import Overrides from "#app/overrides"; import Overrides from "#app/overrides";
import EvolutionSceneHandler from "#app/ui/evolution-scene-handler"; import EvolutionSceneHandler from "#app/ui/evolution-scene-handler";
import { SummaryUiMode } from "#app/ui/summary-ui-handler"; import { SummaryUiMode } from "#app/ui/summary-ui-handler";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import { PlayerPartyMemberPokemonPhase } from "#app/phases/player-party-member-pokemon-phase"; import { PlayerPartyMemberPokemonPhase } from "#app/phases/player-party-member-pokemon-phase";
import type Pokemon from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon";
@ -25,7 +25,7 @@ export enum LearnMoveType {
export class LearnMovePhase extends PlayerPartyMemberPokemonPhase { export class LearnMovePhase extends PlayerPartyMemberPokemonPhase {
private moveId: Moves; private moveId: Moves;
private messageMode: Mode; private messageMode: UiMode;
private learnMoveType: LearnMoveType; private learnMoveType: LearnMoveType;
private cost: number; private cost: number;
@ -55,7 +55,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase {
} }
this.messageMode = this.messageMode =
globalScene.ui.getHandler() instanceof EvolutionSceneHandler ? Mode.EVOLUTION_SCENE : Mode.MESSAGE; globalScene.ui.getHandler() instanceof EvolutionSceneHandler ? UiMode.EVOLUTION_SCENE : UiMode.MESSAGE;
globalScene.ui.setMode(this.messageMode); globalScene.ui.setMode(this.messageMode);
// If the Pokemon has less than 4 moves, the new move is added to the largest empty moveset index // If the Pokemon has less than 4 moves, the new move is added to the largest empty moveset index
// If it has 4 moves, the phase then checks if the player wants to replace the move itself. // If it has 4 moves, the phase then checks if the player wants to replace the move itself.
@ -90,7 +90,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase {
await globalScene.ui.showTextPromise(preQText); await globalScene.ui.showTextPromise(preQText);
await globalScene.ui.showTextPromise(shouldReplaceQ, undefined, false); await globalScene.ui.showTextPromise(shouldReplaceQ, undefined, false);
await globalScene.ui.setModeWithoutClear( await globalScene.ui.setModeWithoutClear(
Mode.CONFIRM, UiMode.CONFIRM,
() => this.forgetMoveProcess(move, pokemon), // Yes () => this.forgetMoveProcess(move, pokemon), // Yes
() => { () => {
// No // No
@ -115,7 +115,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase {
globalScene.ui.setMode(this.messageMode); globalScene.ui.setMode(this.messageMode);
await globalScene.ui.showTextPromise(i18next.t("battle:learnMoveForgetQuestion"), undefined, true); await globalScene.ui.showTextPromise(i18next.t("battle:learnMoveForgetQuestion"), undefined, true);
await globalScene.ui.setModeWithoutClear( await globalScene.ui.setModeWithoutClear(
Mode.SUMMARY, UiMode.SUMMARY,
pokemon, pokemon,
SummaryUiMode.LEARN_MOVE, SummaryUiMode.LEARN_MOVE,
move, move,
@ -153,7 +153,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase {
false, false,
); );
globalScene.ui.setModeWithoutClear( globalScene.ui.setModeWithoutClear(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
globalScene.ui.setMode(this.messageMode); globalScene.ui.setMode(this.messageMode);
globalScene.ui globalScene.ui
@ -228,7 +228,7 @@ export class LearnMovePhase extends PlayerPartyMemberPokemonPhase {
globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeMoveLearnedTrigger, true); globalScene.triggerPokemonFormChange(pokemon, SpeciesFormChangeMoveLearnedTrigger, true);
this.end(); this.end();
}, },
this.messageMode === Mode.EVOLUTION_SCENE ? 1000 : undefined, this.messageMode === UiMode.EVOLUTION_SCENE ? 1000 : undefined,
true, true,
); );
} }

View File

@ -1,5 +1,5 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import { FieldPhase } from "./field-phase"; import { FieldPhase } from "./field-phase";
@ -7,7 +7,7 @@ export class LevelCapPhase extends FieldPhase {
start(): void { start(): void {
super.start(); super.start();
globalScene.ui.setMode(Mode.MESSAGE).then(() => { globalScene.ui.setMode(UiMode.MESSAGE).then(() => {
// Sound loaded into game as is // Sound loaded into game as is
globalScene.playSound("level_up_fanfare"); globalScene.playSound("level_up_fanfare");
globalScene.ui.showText( globalScene.ui.showText(

View File

@ -3,7 +3,7 @@ import { bypassLogin } from "#app/battle-scene";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Phase } from "#app/phase"; import { Phase } from "#app/phase";
import { handleTutorial, Tutorial } from "#app/tutorial"; import { handleTutorial, Tutorial } from "#app/tutorial";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next, { t } from "i18next"; import i18next, { t } from "i18next";
import { getCookie, sessionIdKey, executeIf, removeCookie } from "#app/utils"; import { getCookie, sessionIdKey, executeIf, removeCookie } from "#app/utils";
import { SelectGenderPhase } from "./select-gender-phase"; import { SelectGenderPhase } from "./select-gender-phase";
@ -23,7 +23,7 @@ export class LoginPhase extends Phase {
const hasSession = !!getCookie(sessionIdKey); const hasSession = !!getCookie(sessionIdKey);
globalScene.ui.setMode(Mode.LOADING, { buttonActions: [] }); globalScene.ui.setMode(UiMode.LOADING, { buttonActions: [] });
executeIf(bypassLogin || hasSession, updateUserInfo).then(response => { executeIf(bypassLogin || hasSession, updateUserInfo).then(response => {
const success = response ? response[0] : false; const success = response ? response[0] : false;
const statusCode = response ? response[1] : null; const statusCode = response ? response[1] : null;
@ -46,7 +46,7 @@ export class LoginPhase extends Phase {
}); });
}; };
globalScene.ui.setMode(Mode.LOGIN_FORM, { globalScene.ui.setMode(UiMode.LOGIN_FORM, {
buttonActions: [ buttonActions: [
() => { () => {
globalScene.ui.playSelect(); globalScene.ui.playSelect();
@ -54,7 +54,7 @@ export class LoginPhase extends Phase {
}, },
() => { () => {
globalScene.playSound("menu_open"); globalScene.playSound("menu_open");
globalScene.ui.setMode(Mode.REGISTRATION_FORM, { globalScene.ui.setMode(UiMode.REGISTRATION_FORM, {
buttonActions: [ buttonActions: [
() => { () => {
globalScene.ui.playSelect(); globalScene.ui.playSelect();
@ -101,7 +101,7 @@ export class LoginPhase extends Phase {
if (success || bypassLogin) { if (success || bypassLogin) {
this.end(); this.end();
} else { } else {
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.showText(t("menu:failedToLoadSaveData")); globalScene.ui.showText(t("menu:failedToLoadSaveData"));
} }
}); });
@ -109,7 +109,7 @@ export class LoginPhase extends Phase {
} }
end(): void { end(): void {
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
if (!globalScene.gameData.gender) { if (!globalScene.gameData.gender) {
globalScene.unshiftPhase(new SelectGenderPhase()); globalScene.unshiftPhase(new SelectGenderPhase());

View File

@ -25,7 +25,7 @@ import { transitionMysteryEncounterIntroVisuals } from "../data/mystery-encounte
import { TrainerSlot } from "#enums/trainer-slot"; import { TrainerSlot } from "#enums/trainer-slot";
import { IvScannerModifier } from "../modifier/modifier"; import { IvScannerModifier } from "../modifier/modifier";
import { Phase } from "../phase"; import { Phase } from "../phase";
import { Mode } from "../ui/ui"; import { UiMode } from "#enums/ui-mode";
import { isNullOrUndefined, randSeedItem } from "#app/utils"; import { isNullOrUndefined, randSeedItem } from "#app/utils";
/** /**
@ -72,7 +72,7 @@ export class MysteryEncounterPhase extends Phase {
} }
// Initiates encounter dialogue window and option select // Initiates encounter dialogue window and option select
globalScene.ui.setMode(Mode.MYSTERY_ENCOUNTER, this.optionSelectSettings); globalScene.ui.setMode(UiMode.MYSTERY_ENCOUNTER, this.optionSelectSettings);
} }
/** /**
@ -130,7 +130,7 @@ export class MysteryEncounterPhase extends Phase {
const optionSelectDialogue = globalScene.currentBattle?.mysteryEncounter?.selectedOption?.dialogue; const optionSelectDialogue = globalScene.currentBattle?.mysteryEncounter?.selectedOption?.dialogue;
if (optionSelectDialogue?.selected && optionSelectDialogue.selected.length > 0) { if (optionSelectDialogue?.selected && optionSelectDialogue.selected.length > 0) {
// Handle intermediate dialogue (between player selection event and the onOptionSelect logic) // Handle intermediate dialogue (between player selection event and the onOptionSelect logic)
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
const selectedDialogue = optionSelectDialogue.selected; const selectedDialogue = optionSelectDialogue.selected;
let i = 0; let i = 0;
const showNextDialogue = () => { const showNextDialogue = () => {
@ -167,7 +167,7 @@ export class MysteryEncounterPhase extends Phase {
* Ends phase * Ends phase
*/ */
end() { end() {
globalScene.ui.setMode(Mode.MESSAGE).then(() => super.end()); globalScene.ui.setMode(UiMode.MESSAGE).then(() => super.end());
} }
} }
@ -629,7 +629,7 @@ export class PostMysteryEncounterPhase extends Phase {
} }
i++; i++;
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
if (title) { if (title) {
globalScene.ui.showDialogue( globalScene.ui.showDialogue(
text ?? "", text ?? "",

View File

@ -1,6 +1,6 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Phase } from "#app/phase"; import { Phase } from "#app/phase";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { fixedInt } from "#app/utils"; import { fixedInt } from "#app/utils";
export class ReloadSessionPhase extends Phase { export class ReloadSessionPhase extends Phase {
@ -13,7 +13,7 @@ export class ReloadSessionPhase extends Phase {
} }
start(): void { start(): void {
globalScene.ui.setMode(Mode.SESSION_RELOAD); globalScene.ui.setMode(UiMode.SESSION_RELOAD);
let delayElapsed = false; let delayElapsed = false;
let loaded = false; let loaded = false;

View File

@ -2,7 +2,7 @@ import { SwitchType } from "#enums/switch-type";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { PartyOption } from "#app/ui/party-ui-handler"; import type { PartyOption } from "#app/ui/party-ui-handler";
import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler"; import PartyUiHandler, { PartyUiMode } from "#app/ui/party-ui-handler";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import { toDmgValue, isNullOrUndefined } from "#app/utils"; import { toDmgValue, isNullOrUndefined } from "#app/utils";
import { BattlePhase } from "#app/phases/battle-phase"; import { BattlePhase } from "#app/phases/battle-phase";
@ -21,7 +21,7 @@ export class RevivalBlessingPhase extends BattlePhase {
public override start(): void { public override start(): void {
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.PARTY, UiMode.PARTY,
PartyUiMode.REVIVAL_BLESSING, PartyUiMode.REVIVAL_BLESSING,
this.user.getFieldIndex(), this.user.getFieldIndex(),
(slotIndex: integer, _option: PartyOption) => { (slotIndex: integer, _option: PartyOption) => {
@ -63,7 +63,7 @@ export class RevivalBlessingPhase extends BattlePhase {
} }
} }
} }
globalScene.ui.setMode(Mode.MESSAGE).then(() => this.end()); globalScene.ui.setMode(UiMode.MESSAGE).then(() => this.end());
}, },
PartyUiHandler.FilterFainted, PartyUiHandler.FilterFainted,
); );

View File

@ -1,7 +1,7 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type PokemonSpecies from "#app/data/pokemon-species"; import type PokemonSpecies from "#app/data/pokemon-species";
import type { ModifierTypeFunc } from "#app/modifier/modifier-type"; import type { ModifierTypeFunc } from "#app/modifier/modifier-type";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import { ModifierRewardPhase } from "./modifier-reward-phase"; import { ModifierRewardPhase } from "./modifier-reward-phase";
@ -19,7 +19,7 @@ export class RibbonModifierRewardPhase extends ModifierRewardPhase {
const newModifier = this.modifierType.newModifier(); const newModifier = this.modifierType.newModifier();
globalScene.addModifier(newModifier); globalScene.addModifier(newModifier);
globalScene.playSound("level_up_fanfare"); globalScene.playSound("level_up_fanfare");
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.showText( globalScene.ui.showText(
i18next.t("battle:beatModeFirstTime", { i18next.t("battle:beatModeFirstTime", {
speciesName: this.species.name, speciesName: this.species.name,

View File

@ -3,7 +3,7 @@ import type { BattlerIndex } from "#app/battle";
import { PERMANENT_STATS, Stat } from "#app/enums/stat"; import { PERMANENT_STATS, Stat } from "#app/enums/stat";
import { getPokemonNameWithAffix } from "#app/messages"; import { getPokemonNameWithAffix } from "#app/messages";
import { getTextColor, TextStyle } from "#app/ui/text"; import { getTextColor, TextStyle } from "#app/ui/text";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import { PokemonPhase } from "./pokemon-phase"; import { PokemonPhase } from "./pokemon-phase";
@ -51,9 +51,9 @@ export class ScanIvsPhase extends PokemonPhase {
null, null,
() => { () => {
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.clearText(); globalScene.ui.clearText();
globalScene.ui globalScene.ui
.getMessageHandler() .getMessageHandler()
@ -61,7 +61,7 @@ export class ScanIvsPhase extends PokemonPhase {
.then(() => this.end()); .then(() => this.end());
}, },
() => { () => {
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.clearText(); globalScene.ui.clearText();
this.end(); this.end();
}, },

View File

@ -3,7 +3,7 @@ import { biomeLinks, getBiomeName } from "#app/data/balance/biomes";
import { Biome } from "#app/enums/biome"; import { Biome } from "#app/enums/biome";
import { MoneyInterestModifier, MapModifier } from "#app/modifier/modifier"; import { MoneyInterestModifier, MapModifier } from "#app/modifier/modifier";
import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { BattlePhase } from "./battle-phase"; import { BattlePhase } from "./battle-phase";
import { randSeedInt } from "#app/utils"; import { randSeedInt } from "#app/utils";
import { PartyHealPhase } from "./party-heal-phase"; import { PartyHealPhase } from "./party-heal-phase";
@ -42,14 +42,14 @@ export class SelectBiomePhase extends BattlePhase {
const ret: OptionSelectItem = { const ret: OptionSelectItem = {
label: getBiomeName(b), label: getBiomeName(b),
handler: () => { handler: () => {
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
setNextBiome(b); setNextBiome(b);
return true; return true;
}, },
}; };
return ret; return ret;
}); });
globalScene.ui.setMode(Mode.OPTION_SELECT, { globalScene.ui.setMode(UiMode.OPTION_SELECT, {
options: biomeSelectItems, options: biomeSelectItems,
delay: 1000, delay: 1000,
}); });

View File

@ -1,6 +1,6 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Phase } from "#app/phase"; import { Phase } from "#app/phase";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
export class SelectChallengePhase extends Phase { export class SelectChallengePhase extends Phase {
start() { start() {
@ -8,6 +8,6 @@ export class SelectChallengePhase extends Phase {
globalScene.playBgm("menu"); globalScene.playBgm("menu");
globalScene.ui.setMode(Mode.CHALLENGE_SELECT); globalScene.ui.setMode(UiMode.CHALLENGE_SELECT);
} }
} }

View File

@ -2,7 +2,7 @@ import { globalScene } from "#app/global-scene";
import { PlayerGender } from "#app/enums/player-gender"; import { PlayerGender } from "#app/enums/player-gender";
import { Phase } from "#app/phase"; import { Phase } from "#app/phase";
import { SettingKeys } from "#app/system/settings/settings"; import { SettingKeys } from "#app/system/settings/settings";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
export class SelectGenderPhase extends Phase { export class SelectGenderPhase extends Phase {
@ -10,7 +10,7 @@ export class SelectGenderPhase extends Phase {
super.start(); super.start();
globalScene.ui.showText(i18next.t("menu:boyOrGirl"), null, () => { globalScene.ui.showText(i18next.t("menu:boyOrGirl"), null, () => {
globalScene.ui.setMode(Mode.OPTION_SELECT, { globalScene.ui.setMode(UiMode.OPTION_SELECT, {
options: [ options: [
{ {
label: i18next.t("settings:boy"), label: i18next.t("settings:boy"),
@ -36,7 +36,7 @@ export class SelectGenderPhase extends Phase {
} }
end(): void { end(): void {
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
super.end(); super.end();
} }
} }

View File

@ -24,7 +24,7 @@ import {
import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import type ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler";
import { SHOP_OPTIONS_ROW_LIMIT } from "#app/ui/modifier-select-ui-handler"; import { SHOP_OPTIONS_ROW_LIMIT } from "#app/ui/modifier-select-ui-handler";
import PartyUiHandler, { PartyUiMode, PartyOption } from "#app/ui/party-ui-handler"; import PartyUiHandler, { PartyUiMode, PartyOption } from "#app/ui/party-ui-handler";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import { BattlePhase } from "./battle-phase"; import { BattlePhase } from "./battle-phase";
import Overrides from "#app/overrides"; import Overrides from "#app/overrides";
@ -92,15 +92,15 @@ export class SelectModifierPhase extends BattlePhase {
if (rowCursor < 0 || cursor < 0) { if (rowCursor < 0 || cursor < 0) {
globalScene.ui.showText(i18next.t("battle:skipItemQuestion"), null, () => { globalScene.ui.showText(i18next.t("battle:skipItemQuestion"), null, () => {
globalScene.ui.setOverlayMode( globalScene.ui.setOverlayMode(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
globalScene.ui.revertMode(); globalScene.ui.revertMode();
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
super.end(); super.end();
}, },
() => () =>
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.MODIFIER_SELECT, UiMode.MODIFIER_SELECT,
this.isPlayer(), this.isPlayer(),
this.typeOptions, this.typeOptions,
modifierSelectCallback, modifierSelectCallback,
@ -129,7 +129,7 @@ export class SelectModifierPhase extends BattlePhase {
), ),
); );
globalScene.ui.clearText(); globalScene.ui.clearText();
globalScene.ui.setMode(Mode.MESSAGE).then(() => super.end()); globalScene.ui.setMode(UiMode.MESSAGE).then(() => super.end());
if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) { if (!Overrides.WAIVE_ROLL_FEE_OVERRIDE) {
globalScene.money -= rerollCost; globalScene.money -= rerollCost;
globalScene.updateMoneyText(); globalScene.updateMoneyText();
@ -139,7 +139,7 @@ export class SelectModifierPhase extends BattlePhase {
break; break;
case 1: case 1:
globalScene.ui.setModeWithoutClear( globalScene.ui.setModeWithoutClear(
Mode.PARTY, UiMode.PARTY,
PartyUiMode.MODIFIER_TRANSFER, PartyUiMode.MODIFIER_TRANSFER,
-1, -1,
(fromSlotIndex: number, itemIndex: number, itemQuantity: number, toSlotIndex: number) => { (fromSlotIndex: number, itemIndex: number, itemQuantity: number, toSlotIndex: number) => {
@ -168,7 +168,7 @@ export class SelectModifierPhase extends BattlePhase {
); );
} else { } else {
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.MODIFIER_SELECT, UiMode.MODIFIER_SELECT,
this.isPlayer(), this.isPlayer(),
this.typeOptions, this.typeOptions,
modifierSelectCallback, modifierSelectCallback,
@ -180,9 +180,9 @@ export class SelectModifierPhase extends BattlePhase {
); );
break; break;
case 2: case 2:
globalScene.ui.setModeWithoutClear(Mode.PARTY, PartyUiMode.CHECK, -1, () => { globalScene.ui.setModeWithoutClear(UiMode.PARTY, PartyUiMode.CHECK, -1, () => {
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.MODIFIER_SELECT, UiMode.MODIFIER_SELECT,
this.isPlayer(), this.isPlayer(),
this.typeOptions, this.typeOptions,
modifierSelectCallback, modifierSelectCallback,
@ -207,7 +207,7 @@ export class SelectModifierPhase extends BattlePhase {
case 1: case 1:
if (this.typeOptions.length === 0) { if (this.typeOptions.length === 0) {
globalScene.ui.clearText(); globalScene.ui.clearText();
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
super.end(); super.end();
return true; return true;
} }
@ -263,7 +263,7 @@ export class SelectModifierPhase extends BattlePhase {
} }
} else { } else {
globalScene.ui.clearText(); globalScene.ui.clearText();
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
super.end(); super.end();
} }
}; };
@ -272,7 +272,7 @@ export class SelectModifierPhase extends BattlePhase {
//TODO: is the bang correct? //TODO: is the bang correct?
if (modifierType instanceof FusePokemonModifierType) { if (modifierType instanceof FusePokemonModifierType) {
globalScene.ui.setModeWithoutClear( globalScene.ui.setModeWithoutClear(
Mode.PARTY, UiMode.PARTY,
PartyUiMode.SPLICE, PartyUiMode.SPLICE,
-1, -1,
(fromSlotIndex: number, spliceSlotIndex: number) => { (fromSlotIndex: number, spliceSlotIndex: number) => {
@ -282,13 +282,13 @@ export class SelectModifierPhase extends BattlePhase {
spliceSlotIndex < 6 && spliceSlotIndex < 6 &&
fromSlotIndex !== spliceSlotIndex fromSlotIndex !== spliceSlotIndex
) { ) {
globalScene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer()).then(() => { globalScene.ui.setMode(UiMode.MODIFIER_SELECT, this.isPlayer()).then(() => {
const modifier = modifierType.newModifier(party[fromSlotIndex], party[spliceSlotIndex])!; //TODO: is the bang correct? const modifier = modifierType.newModifier(party[fromSlotIndex], party[spliceSlotIndex])!; //TODO: is the bang correct?
applyModifier(modifier, true); applyModifier(modifier, true);
}); });
} else { } else {
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.MODIFIER_SELECT, UiMode.MODIFIER_SELECT,
this.isPlayer(), this.isPlayer(),
this.typeOptions, this.typeOptions,
modifierSelectCallback, modifierSelectCallback,
@ -314,12 +314,12 @@ export class SelectModifierPhase extends BattlePhase {
: PartyUiMode.MODIFIER; : PartyUiMode.MODIFIER;
const tmMoveId = isTmModifier ? (modifierType as TmModifierType).moveId : undefined; const tmMoveId = isTmModifier ? (modifierType as TmModifierType).moveId : undefined;
globalScene.ui.setModeWithoutClear( globalScene.ui.setModeWithoutClear(
Mode.PARTY, UiMode.PARTY,
partyUiMode, partyUiMode,
-1, -1,
(slotIndex: number, option: PartyOption) => { (slotIndex: number, option: PartyOption) => {
if (slotIndex < 6) { if (slotIndex < 6) {
globalScene.ui.setMode(Mode.MODIFIER_SELECT, this.isPlayer()).then(() => { globalScene.ui.setMode(UiMode.MODIFIER_SELECT, this.isPlayer()).then(() => {
const modifier = !isMoveModifier const modifier = !isMoveModifier
? !isRememberMoveModifier ? !isRememberMoveModifier
? modifierType.newModifier(party[slotIndex]) ? modifierType.newModifier(party[slotIndex])
@ -329,7 +329,7 @@ export class SelectModifierPhase extends BattlePhase {
}); });
} else { } else {
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.MODIFIER_SELECT, UiMode.MODIFIER_SELECT,
this.isPlayer(), this.isPlayer(),
this.typeOptions, this.typeOptions,
modifierSelectCallback, modifierSelectCallback,
@ -352,7 +352,7 @@ export class SelectModifierPhase extends BattlePhase {
return !cost!; // TODO: is the bang correct? return !cost!; // TODO: is the bang correct?
}; };
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.MODIFIER_SELECT, UiMode.MODIFIER_SELECT,
this.isPlayer(), this.isPlayer(),
this.typeOptions, this.typeOptions,
modifierSelectCallback, modifierSelectCallback,

View File

@ -9,7 +9,7 @@ import { Phase } from "#app/phase";
import { TitlePhase } from "#app/phases/title-phase"; import { TitlePhase } from "#app/phases/title-phase";
import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler"; import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler";
import type { Starter } from "#app/ui/starter-select-ui-handler"; import type { Starter } from "#app/ui/starter-select-ui-handler";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import type { Species } from "#enums/species"; import type { Species } from "#enums/species";
import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade";
import { isNullOrUndefined } from "#app/utils"; import { isNullOrUndefined } from "#app/utils";
@ -20,9 +20,9 @@ export class SelectStarterPhase extends Phase {
globalScene.playBgm("menu"); globalScene.playBgm("menu");
globalScene.ui.setMode(Mode.STARTER_SELECT, (starters: Starter[]) => { globalScene.ui.setMode(UiMode.STARTER_SELECT, (starters: Starter[]) => {
globalScene.ui.clearText(); globalScene.ui.clearText();
globalScene.ui.setMode(Mode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: number) => { globalScene.ui.setMode(UiMode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: number) => {
if (slotId === -1) { if (slotId === -1) {
globalScene.clearPhaseQueue(); globalScene.clearPhaseQueue();
globalScene.pushPhase(new TitlePhase()); globalScene.pushPhase(new TitlePhase());

View File

@ -1,7 +1,7 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { BattlerIndex } from "#app/battle"; import type { BattlerIndex } from "#app/battle";
import { Command } from "#app/ui/command-ui-handler"; import { Command } from "#app/ui/command-ui-handler";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { CommandPhase } from "./command-phase"; import { CommandPhase } from "./command-phase";
import { PokemonPhase } from "./pokemon-phase"; import { PokemonPhase } from "./pokemon-phase";
import i18next from "#app/plugins/i18n"; import i18next from "#app/plugins/i18n";
@ -18,8 +18,8 @@ export class SelectTargetPhase extends PokemonPhase {
const turnCommand = globalScene.currentBattle.turnCommands[this.fieldIndex]; const turnCommand = globalScene.currentBattle.turnCommands[this.fieldIndex];
const move = turnCommand?.move?.move; const move = turnCommand?.move?.move;
globalScene.ui.setMode(Mode.TARGET_SELECT, this.fieldIndex, move, (targets: BattlerIndex[]) => { globalScene.ui.setMode(UiMode.TARGET_SELECT, this.fieldIndex, move, (targets: BattlerIndex[]) => {
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
const fieldSide = globalScene.getField(); const fieldSide = globalScene.getField();
const user = fieldSide[this.fieldIndex]; const user = fieldSide[this.fieldIndex];
const moveObject = allMoves[move!]; const moveObject = allMoves[move!];

View File

@ -1,6 +1,6 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import PartyUiHandler, { PartyOption, PartyUiMode } from "#app/ui/party-ui-handler"; import PartyUiHandler, { PartyOption, PartyUiMode } from "#app/ui/party-ui-handler";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { SwitchType } from "#enums/switch-type"; import { SwitchType } from "#enums/switch-type";
import { BattlePhase } from "./battle-phase"; import { BattlePhase } from "./battle-phase";
import { PostSummonPhase } from "./post-summon-phase"; import { PostSummonPhase } from "./post-summon-phase";
@ -69,7 +69,7 @@ export class SwitchPhase extends BattlePhase {
: 0; : 0;
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.PARTY, UiMode.PARTY,
this.isModal ? PartyUiMode.FAINT_SWITCH : PartyUiMode.POST_BATTLE_SWITCH, this.isModal ? PartyUiMode.FAINT_SWITCH : PartyUiMode.POST_BATTLE_SWITCH,
fieldIndex, fieldIndex,
(slotIndex: number, option: PartyOption) => { (slotIndex: number, option: PartyOption) => {
@ -80,7 +80,7 @@ export class SwitchPhase extends BattlePhase {
const switchType = option === PartyOption.PASS_BATON ? SwitchType.BATON_PASS : this.switchType; const switchType = option === PartyOption.PASS_BATON ? SwitchType.BATON_PASS : this.switchType;
globalScene.unshiftPhase(new SwitchSummonPhase(switchType, fieldIndex, slotIndex, this.doReturn)); globalScene.unshiftPhase(new SwitchSummonPhase(switchType, fieldIndex, slotIndex, this.doReturn));
} }
globalScene.ui.setMode(Mode.MESSAGE).then(() => super.end()); globalScene.ui.setMode(UiMode.MESSAGE).then(() => super.end());
}, },
PartyUiHandler.FilterNonFainted, PartyUiHandler.FilterNonFainted,
); );

View File

@ -17,7 +17,7 @@ import { Unlockables } from "#app/system/unlockables";
import { vouchers } from "#app/system/voucher"; import { vouchers } from "#app/system/voucher";
import type { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"; import type { OptionSelectConfig, OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler";
import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler"; import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { isLocal, isLocalServerConnected, isNullOrUndefined } from "#app/utils"; import { isLocal, isLocalServerConnected, isNullOrUndefined } from "#app/utils";
import i18next from "i18next"; import i18next from "i18next";
import { CheckSwitchPhase } from "./check-switch-phase"; import { CheckSwitchPhase } from "./check-switch-phase";
@ -75,7 +75,7 @@ export class TitlePhase extends Phase {
handler: () => { handler: () => {
const setModeAndEnd = (gameMode: GameModes) => { const setModeAndEnd = (gameMode: GameModes) => {
this.gameMode = gameMode; this.gameMode = gameMode;
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.clearText(); globalScene.ui.clearText();
this.end(); this.end();
}; };
@ -130,7 +130,7 @@ export class TitlePhase extends Phase {
}, },
}); });
globalScene.ui.showText(i18next.t("menu:selectGameMode"), null, () => globalScene.ui.showText(i18next.t("menu:selectGameMode"), null, () =>
globalScene.ui.setOverlayMode(Mode.OPTION_SELECT, { globalScene.ui.setOverlayMode(UiMode.OPTION_SELECT, {
options: options, options: options,
}), }),
); );
@ -140,7 +140,7 @@ export class TitlePhase extends Phase {
{ {
label: i18next.t("menu:loadGame"), label: i18next.t("menu:loadGame"),
handler: () => { handler: () => {
globalScene.ui.setOverlayMode(Mode.SAVE_SLOT, SaveSlotUiMode.LOAD, (slotId: number) => { globalScene.ui.setOverlayMode(UiMode.SAVE_SLOT, SaveSlotUiMode.LOAD, (slotId: number) => {
if (slotId === -1) { if (slotId === -1) {
return this.showOptions(); return this.showOptions();
} }
@ -152,7 +152,7 @@ export class TitlePhase extends Phase {
{ {
label: i18next.t("menu:runHistory"), label: i18next.t("menu:runHistory"),
handler: () => { handler: () => {
globalScene.ui.setOverlayMode(Mode.RUN_HISTORY); globalScene.ui.setOverlayMode(UiMode.RUN_HISTORY);
return true; return true;
}, },
keepOpen: true, keepOpen: true,
@ -160,7 +160,7 @@ export class TitlePhase extends Phase {
{ {
label: i18next.t("menu:settings"), label: i18next.t("menu:settings"),
handler: () => { handler: () => {
globalScene.ui.setOverlayMode(Mode.SETTINGS); globalScene.ui.setOverlayMode(UiMode.SETTINGS);
return true; return true;
}, },
keepOpen: true, keepOpen: true,
@ -171,12 +171,12 @@ export class TitlePhase extends Phase {
noCancel: true, noCancel: true,
yOffset: 47, yOffset: 47,
}; };
globalScene.ui.setMode(Mode.TITLE, config); globalScene.ui.setMode(UiMode.TITLE, config);
} }
loadSaveSlot(slotId: number): void { loadSaveSlot(slotId: number): void {
globalScene.sessionSlotId = slotId > -1 || !loggedInUser ? slotId : loggedInUser.lastSessionSlot; globalScene.sessionSlotId = slotId > -1 || !loggedInUser ? slotId : loggedInUser.lastSessionSlot;
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.resetModeChain(); globalScene.ui.resetModeChain();
globalScene.gameData globalScene.gameData
.loadSession(slotId, slotId === -1 ? this.lastSessionData : undefined) .loadSession(slotId, slotId === -1 ? this.lastSessionData : undefined)
@ -196,7 +196,7 @@ export class TitlePhase extends Phase {
initDailyRun(): void { initDailyRun(): void {
globalScene.ui.clearText(); globalScene.ui.clearText();
globalScene.ui.setMode(Mode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: number) => { globalScene.ui.setMode(UiMode.SAVE_SLOT, SaveSlotUiMode.SAVE, (slotId: number) => {
globalScene.clearPhaseQueue(); globalScene.clearPhaseQueue();
if (slotId === -1) { if (slotId === -1) {
globalScene.pushPhase(new TitlePhase()); globalScene.pushPhase(new TitlePhase());

View File

@ -1,11 +1,11 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Phase } from "#app/phase"; import { Phase } from "#app/phase";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { LoginPhase } from "./login-phase"; import { LoginPhase } from "./login-phase";
export class UnavailablePhase extends Phase { export class UnavailablePhase extends Phase {
start(): void { start(): void {
globalScene.ui.setMode(Mode.UNAVAILABLE, () => { globalScene.ui.setMode(UiMode.UNAVAILABLE, () => {
globalScene.unshiftPhase(new LoginPhase(true)); globalScene.unshiftPhase(new LoginPhase(true));
this.end(); this.end();
}); });

View File

@ -2,7 +2,7 @@ import { globalScene } from "#app/global-scene";
import { Phase } from "#app/phase"; import { Phase } from "#app/phase";
import type { Unlockables } from "#app/system/unlockables"; import type { Unlockables } from "#app/system/unlockables";
import { getUnlockableName } from "#app/system/unlockables"; import { getUnlockableName } from "#app/system/unlockables";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
export class UnlockPhase extends Phase { export class UnlockPhase extends Phase {
@ -19,7 +19,7 @@ export class UnlockPhase extends Phase {
globalScene.gameData.unlocks[this.unlockable] = true; globalScene.gameData.unlocks[this.unlockable] = true;
// Sound loaded into game as is // Sound loaded into game as is
globalScene.playSound("level_up_fanfare"); globalScene.playSound("level_up_fanfare");
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
globalScene.ui.showText( globalScene.ui.showText(
i18next.t("battle:unlockedSomething", { i18next.t("battle:unlockedSomething", {
unlockedThing: getUnlockableName(this.unlockable), unlockedThing: getUnlockableName(this.unlockable),

View File

@ -24,7 +24,7 @@ import EggData from "#app/system/egg-data";
import type { Egg } from "#app/data/egg"; import type { Egg } from "#app/data/egg";
import { vouchers, VoucherType } from "#app/system/voucher"; import { vouchers, VoucherType } from "#app/system/voucher";
import { AES, enc } from "crypto-js"; import { AES, enc } from "crypto-js";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { clientSessionId, loggedInUser, updateUserInfo } from "#app/account"; import { clientSessionId, loggedInUser, updateUserInfo } from "#app/account";
import { Nature } from "#enums/nature"; import { Nature } from "#enums/nature";
import { GameStats } from "#app/system/game-stats"; import { GameStats } from "#app/system/game-stats";
@ -1604,7 +1604,7 @@ export class GameData {
null, null,
() => { () => {
globalScene.ui.setOverlayMode( globalScene.ui.setOverlayMode(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
localStorage.setItem(dataKey, encrypt(dataStr, bypassLogin)); localStorage.setItem(dataKey, encrypt(dataStr, bypassLogin));

View File

@ -1,5 +1,5 @@
import type SettingsGamepadUiHandler from "../../ui/settings/settings-gamepad-ui-handler"; import type SettingsGamepadUiHandler from "../../ui/settings/settings-gamepad-ui-handler";
import { Mode } from "../../ui/ui"; import { UiMode } from "#enums/ui-mode";
import { truncateString } from "../../utils"; import { truncateString } from "../../utils";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; import { SettingKeyboard } from "#app/system/settings/settings-keyboard";
@ -107,7 +107,7 @@ export function setSettingGamepad(setting: SettingGamepad, value: number): boole
(globalScene.ui.getHandler() as SettingsGamepadUiHandler).updateBindings(); (globalScene.ui.getHandler() as SettingsGamepadUiHandler).updateBindings();
return success; return success;
}; };
globalScene.ui.setOverlayMode(Mode.GAMEPAD_BINDING, { globalScene.ui.setOverlayMode(UiMode.GAMEPAD_BINDING, {
target: setting, target: setting,
cancelHandler: cancelHandler, cancelHandler: cancelHandler,
}); });
@ -133,7 +133,7 @@ export function setSettingGamepad(setting: SettingGamepad, value: number): boole
cancelHandler(); cancelHandler();
return true; return true;
}; };
globalScene.ui.setOverlayMode(Mode.OPTION_SELECT, { globalScene.ui.setOverlayMode(UiMode.OPTION_SELECT, {
options: [ options: [
...gp.map((g: string) => ({ ...gp.map((g: string) => ({
label: truncateString(g, 30), // Truncate the gamepad name for display label: truncateString(g, 30), // Truncate the gamepad name for display

View File

@ -1,5 +1,5 @@
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import type SettingsKeyboardUiHandler from "#app/ui/settings/settings-keyboard-ui-handler"; import type SettingsKeyboardUiHandler from "#app/ui/settings/settings-keyboard-ui-handler";
import i18next from "i18next"; import i18next from "i18next";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
@ -174,7 +174,7 @@ export function setSettingKeyboard(setting: SettingKeyboard, value: number): boo
(globalScene.ui.getHandler() as SettingsKeyboardUiHandler).updateBindings(); (globalScene.ui.getHandler() as SettingsKeyboardUiHandler).updateBindings();
return success; return success;
}; };
globalScene.ui.setOverlayMode(Mode.KEYBOARD_BINDING, { globalScene.ui.setOverlayMode(UiMode.KEYBOARD_BINDING, {
target: setting, target: setting,
cancelHandler: cancelHandler, cancelHandler: cancelHandler,
}); });

View File

@ -1,4 +1,4 @@
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { hasTouchscreen } from "#app/touch-controls"; import { hasTouchscreen } from "#app/touch-controls";
@ -906,7 +906,7 @@ export function setSetting(setting: string, value: number): boolean {
return false; return false;
} }
}; };
globalScene.ui.setOverlayMode(Mode.OPTION_SELECT, { globalScene.ui.setOverlayMode(UiMode.OPTION_SELECT, {
options: [ options: [
{ {
label: "English", label: "English",

View File

@ -1,7 +1,7 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import AwaitableUiHandler from "./ui/awaitable-ui-handler"; import AwaitableUiHandler from "./ui/awaitable-ui-handler";
import type UiHandler from "./ui/ui-handler"; import type UiHandler from "./ui/ui-handler";
import { Mode } from "./ui/ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import Overrides from "#app/overrides"; import Overrides from "#app/overrides";
@ -92,13 +92,13 @@ const tutorialHandlers = {
}, },
[Tutorial.Select_Item]: () => { [Tutorial.Select_Item]: () => {
return new Promise<void>(resolve => { return new Promise<void>(resolve => {
globalScene.ui.setModeWithoutClear(Mode.MESSAGE).then(() => { globalScene.ui.setModeWithoutClear(UiMode.MESSAGE).then(() => {
globalScene.ui.showText( globalScene.ui.showText(
i18next.t("tutorial:selectItem"), i18next.t("tutorial:selectItem"),
null, null,
() => () =>
globalScene.ui.showText("", null, () => globalScene.ui.showText("", null, () =>
globalScene.ui.setModeWithoutClear(Mode.MODIFIER_SELECT).then(() => resolve()), globalScene.ui.setModeWithoutClear(UiMode.MODIFIER_SELECT).then(() => resolve()),
), ),
null, null,
true, true,

View File

@ -1,5 +1,5 @@
import type Phaser from "phaser"; import type Phaser from "phaser";
import { Mode } from "./ui/ui"; import { UiMode } from "#enums/ui-mode";
import type { InputsController } from "./inputs-controller"; import type { InputsController } from "./inputs-controller";
import type MessageUiHandler from "./ui/message-ui-handler"; import type MessageUiHandler from "./ui/message-ui-handler";
import StarterSelectUiHandler from "./ui/starter-select-ui-handler"; import StarterSelectUiHandler from "./ui/starter-select-ui-handler";
@ -176,22 +176,22 @@ export class UiInputs {
return; return;
} }
switch (globalScene.ui?.getMode()) { switch (globalScene.ui?.getMode()) {
case Mode.MESSAGE: case UiMode.MESSAGE:
const messageHandler = globalScene.ui.getHandler<MessageUiHandler>(); const messageHandler = globalScene.ui.getHandler<MessageUiHandler>();
if (!messageHandler.pendingPrompt || messageHandler.isTextAnimationInProgress()) { if (!messageHandler.pendingPrompt || messageHandler.isTextAnimationInProgress()) {
return; return;
} }
case Mode.TITLE: case UiMode.TITLE:
case Mode.COMMAND: case UiMode.COMMAND:
case Mode.MODIFIER_SELECT: case UiMode.MODIFIER_SELECT:
case Mode.MYSTERY_ENCOUNTER: case UiMode.MYSTERY_ENCOUNTER:
globalScene.ui.setOverlayMode(Mode.MENU); globalScene.ui.setOverlayMode(UiMode.MENU);
break; break;
case Mode.STARTER_SELECT: case UiMode.STARTER_SELECT:
case Mode.POKEDEX_PAGE: case UiMode.POKEDEX_PAGE:
this.buttonTouch(); this.buttonTouch();
break; break;
case Mode.MENU: case UiMode.MENU:
globalScene.ui.revertMode(); globalScene.ui.revertMode();
globalScene.playSound("ui/select"); globalScene.playSound("ui/select");
break; break;
@ -227,7 +227,7 @@ export class UiInputs {
SettingKeys.Game_Speed, SettingKeys.Game_Speed,
Setting[settingGameSpeed].options.findIndex(item => item.label === `${globalScene.gameSpeed}x`) + 1, Setting[settingGameSpeed].options.findIndex(item => item.label === `${globalScene.gameSpeed}x`) + 1,
); );
if (globalScene.ui?.getMode() === Mode.SETTINGS) { if (globalScene.ui?.getMode() === UiMode.SETTINGS) {
(globalScene.ui.getHandler() as SettingsUiHandler).show([]); (globalScene.ui.getHandler() as SettingsUiHandler).show([]);
} }
} else if (!up && globalScene.gameSpeed > 1) { } else if (!up && globalScene.gameSpeed > 1) {
@ -238,7 +238,7 @@ export class UiInputs {
0, 0,
), ),
); );
if (globalScene.ui?.getMode() === Mode.SETTINGS) { if (globalScene.ui?.getMode() === UiMode.SETTINGS) {
(globalScene.ui.getHandler() as SettingsUiHandler).show([]); (globalScene.ui.getHandler() as SettingsUiHandler).show([]);
} }
} }

View File

@ -1,6 +1,6 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { TextStyle, addBBCodeTextObject, getTextColor, getTextStyleOptions } from "./text"; import { TextStyle, addBBCodeTextObject, getTextColor, getTextStyleOptions } from "./text";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import UiHandler from "./ui-handler"; import UiHandler from "./ui-handler";
import { addWindow } from "./ui-theme"; import { addWindow } from "./ui-theme";
import { rgbHexToRgba, fixedInt } from "#app/utils"; import { rgbHexToRgba, fixedInt } from "#app/utils";
@ -56,7 +56,7 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler {
protected defaultTextStyle: TextStyle = TextStyle.WINDOW; protected defaultTextStyle: TextStyle = TextStyle.WINDOW;
protected textContent: string; protected textContent: string;
constructor(mode: Mode | null) { constructor(mode: UiMode | null) {
super(mode); super(mode);
} }
@ -70,7 +70,7 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler {
const ui = this.getUi(); const ui = this.getUi();
this.optionSelectContainer = globalScene.add.container(globalScene.game.canvas.width / 6 - 1, -48); this.optionSelectContainer = globalScene.add.container(globalScene.game.canvas.width / 6 - 1, -48);
this.optionSelectContainer.setName(`option-select-${this.mode ? Mode[this.mode] : "UNKNOWN"}`); this.optionSelectContainer.setName(`option-select-${this.mode ? UiMode[this.mode] : "UNKNOWN"}`);
this.optionSelectContainer.setVisible(false); this.optionSelectContainer.setVisible(false);
ui.add(this.optionSelectContainer); ui.add(this.optionSelectContainer);
@ -120,7 +120,7 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler {
// Setting the initial text to establish the width of the select object. We consider all options, even ones that are not displayed, // Setting the initial text to establish the width of the select object. We consider all options, even ones that are not displayed,
// Except in the case of autocomplete, where we don't want to set up a text element with potentially hundreds of lines. // Except in the case of autocomplete, where we don't want to set up a text element with potentially hundreds of lines.
const optionsForWidth = globalScene.ui.getMode() === Mode.AUTO_COMPLETE ? optionsWithScroll : options; const optionsForWidth = globalScene.ui.getMode() === UiMode.AUTO_COMPLETE ? optionsWithScroll : options;
this.optionSelectText = addBBCodeTextObject( this.optionSelectText = addBBCodeTextObject(
0, 0,
0, 0,
@ -250,7 +250,7 @@ export default abstract class AbstractOptionSelectUiHandler extends UiHandler {
} else { } else {
ui.playError(); ui.playError();
} }
} else if (button === Button.SUBMIT && ui.getMode() === Mode.AUTO_COMPLETE) { } else if (button === Button.SUBMIT && ui.getMode() === UiMode.AUTO_COMPLETE) {
// this is here to differentiate between a Button.SUBMIT vs Button.ACTION within the autocomplete handler // this is here to differentiate between a Button.SUBMIT vs Button.ACTION within the autocomplete handler
// this is here because Button.ACTION is picked up as z on the keyboard, meaning if you're typing and hit z, it'll select the option you've chosen // this is here because Button.ACTION is picked up as z on the keyboard, meaning if you're typing and hit z, it'll select the option you've chosen
success = true; success = true;

View File

@ -6,7 +6,7 @@ import type { Voucher } from "#app/system/voucher";
import { getVoucherTypeIcon, getVoucherTypeName, vouchers } from "#app/system/voucher"; import { getVoucherTypeIcon, getVoucherTypeName, vouchers } from "#app/system/voucher";
import MessageUiHandler from "#app/ui/message-ui-handler"; import MessageUiHandler from "#app/ui/message-ui-handler";
import { addTextObject, TextStyle } from "#app/ui/text"; import { addTextObject, TextStyle } from "#app/ui/text";
import type { Mode } from "#app/ui/ui"; import type { UiMode } from "#enums/ui-mode";
import { addWindow } from "#app/ui/ui-theme"; import { addWindow } from "#app/ui/ui-theme";
import { ScrollBar } from "#app/ui/scroll-bar"; import { ScrollBar } from "#app/ui/scroll-bar";
import { PlayerGender } from "#enums/player-gender"; import { PlayerGender } from "#enums/player-gender";
@ -59,7 +59,7 @@ export default class AchvsUiHandler extends MessageUiHandler {
private cursorObj: Phaser.GameObjects.NineSlice | null; private cursorObj: Phaser.GameObjects.NineSlice | null;
private currentPage: Page; private currentPage: Page;
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
this.achvsTotal = Object.keys(achvs).length; this.achvsTotal = Object.keys(achvs).length;

View File

@ -5,7 +5,7 @@ import type { InputFieldConfig } from "./form-modal-ui-handler";
import { FormModalUiHandler } from "./form-modal-ui-handler"; import { FormModalUiHandler } from "./form-modal-ui-handler";
import type { ModalConfig } from "./modal-ui-handler"; import type { ModalConfig } from "./modal-ui-handler";
import { TextStyle } from "./text"; import { TextStyle } from "./text";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
type AdminUiHandlerService = "discord" | "google"; type AdminUiHandlerService = "discord" | "google";
@ -30,7 +30,7 @@ export default class AdminUiHandler extends FormModalUiHandler {
return `Username and ${service} successfully ${mode.toLowerCase()}ed`; return `Username and ${service} successfully ${mode.toLowerCase()}ed`;
}; };
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
} }
@ -143,10 +143,10 @@ export default class AdminUiHandler extends FormModalUiHandler {
const adminSearchResult: AdminSearchInfo = this.convertInputsToAdmin(); // this converts the input texts into a single object for use later const adminSearchResult: AdminSearchInfo = this.convertInputsToAdmin(); // this converts the input texts into a single object for use later
const validFields = this.areFieldsValid(this.adminMode); const validFields = this.areFieldsValid(this.adminMode);
if (validFields.error) { if (validFields.error) {
globalScene.ui.setMode(Mode.LOADING, { buttonActions: [] }); // this is here to force a loading screen to allow the admin tool to reopen again if there's an error globalScene.ui.setMode(UiMode.LOADING, { buttonActions: [] }); // this is here to force a loading screen to allow the admin tool to reopen again if there's an error
return this.showMessage(validFields.errorMessage ?? "", adminSearchResult, true); return this.showMessage(validFields.errorMessage ?? "", adminSearchResult, true);
} }
globalScene.ui.setMode(Mode.LOADING, { buttonActions: [] }); globalScene.ui.setMode(UiMode.LOADING, { buttonActions: [] });
if (this.adminMode === AdminMode.LINK) { if (this.adminMode === AdminMode.LINK) {
this.adminLinkUnlink(adminSearchResult, "discord", "Link") // calls server to link discord this.adminLinkUnlink(adminSearchResult, "discord", "Link") // calls server to link discord
.then(response => { .then(response => {
@ -174,7 +174,7 @@ export default class AdminUiHandler extends FormModalUiHandler {
showMessage(message: string, adminResult: AdminSearchInfo, isError: boolean) { showMessage(message: string, adminResult: AdminSearchInfo, isError: boolean) {
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.ADMIN, UiMode.ADMIN,
Object.assign(this.config, { errorMessage: message?.trim() }), Object.assign(this.config, { errorMessage: message?.trim() }),
this.adminMode, this.adminMode,
adminResult, adminResult,
@ -221,18 +221,18 @@ export default class AdminUiHandler extends FormModalUiHandler {
const mode = adminResult[aR] === "" ? "Link" : "Unlink"; // this figures out if we're linking or unlinking a service const mode = adminResult[aR] === "" ? "Link" : "Unlink"; // this figures out if we're linking or unlinking a service
const validFields = this.areFieldsValid(this.adminMode, service); const validFields = this.areFieldsValid(this.adminMode, service);
if (validFields.error) { if (validFields.error) {
globalScene.ui.setMode(Mode.LOADING, { buttonActions: [] }); // this is here to force a loading screen to allow the admin tool to reopen again if there's an error globalScene.ui.setMode(UiMode.LOADING, { buttonActions: [] }); // this is here to force a loading screen to allow the admin tool to reopen again if there's an error
return this.showMessage(validFields.errorMessage ?? "", adminResult, true); return this.showMessage(validFields.errorMessage ?? "", adminResult, true);
} }
this.adminLinkUnlink(this.convertInputsToAdmin(), service as AdminUiHandlerService, mode).then( this.adminLinkUnlink(this.convertInputsToAdmin(), service as AdminUiHandlerService, mode).then(
response => { response => {
// attempts to link/unlink depending on the service // attempts to link/unlink depending on the service
if (response.error) { if (response.error) {
globalScene.ui.setMode(Mode.LOADING, { buttonActions: [] }); globalScene.ui.setMode(UiMode.LOADING, { buttonActions: [] });
return this.showMessage(response.errorType, adminResult, true); // fail return this.showMessage(response.errorType, adminResult, true); // fail
} }
// success, reload panel with new results // success, reload panel with new results
globalScene.ui.setMode(Mode.LOADING, { buttonActions: [] }); globalScene.ui.setMode(UiMode.LOADING, { buttonActions: [] });
this.adminSearch(adminResult).then(response => { this.adminSearch(adminResult).then(response => {
if (response.error) { if (response.error) {
return this.showMessage(response.errorType, adminResult, true); return this.showMessage(response.errorType, adminResult, true);
@ -385,7 +385,7 @@ export default class AdminUiHandler extends FormModalUiHandler {
private updateAdminPanelInfo(adminSearchResult: AdminSearchInfo, mode?: AdminMode) { private updateAdminPanelInfo(adminSearchResult: AdminSearchInfo, mode?: AdminMode) {
mode = mode ?? AdminMode.ADMIN; mode = mode ?? AdminMode.ADMIN;
globalScene.ui.setMode( globalScene.ui.setMode(
Mode.ADMIN, UiMode.ADMIN,
{ {
buttonActions: [ buttonActions: [
// we double revert here and below to go back 2 layers of menus // we double revert here and below to go back 2 layers of menus

View File

@ -1,10 +1,10 @@
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import AbstractOptionSelectUiHandler from "./abstact-option-select-ui-handler"; import AbstractOptionSelectUiHandler from "./abstact-option-select-ui-handler";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
export default class AutoCompleteUiHandler extends AbstractOptionSelectUiHandler { export default class AutoCompleteUiHandler extends AbstractOptionSelectUiHandler {
modalContainer: Phaser.GameObjects.Container; modalContainer: Phaser.GameObjects.Container;
constructor(mode: Mode = Mode.OPTION_SELECT) { constructor(mode: UiMode = UiMode.OPTION_SELECT) {
super(mode); super(mode);
} }

View File

@ -1,4 +1,4 @@
import type { Mode } from "./ui"; import type { UiMode } from "#enums/ui-mode";
import UiHandler from "./ui-handler"; import UiHandler from "./ui-handler";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
@ -9,7 +9,7 @@ export default abstract class AwaitableUiHandler extends UiHandler {
public tutorialActive = false; public tutorialActive = false;
public tutorialOverlay: Phaser.GameObjects.Rectangle; public tutorialOverlay: Phaser.GameObjects.Rectangle;
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
} }

View File

@ -1,7 +1,7 @@
import { getPokeballName } from "../data/pokeball"; import { getPokeballName } from "../data/pokeball";
import { addTextObject, getTextStyleOptions, TextStyle } from "./text"; import { addTextObject, getTextStyleOptions, TextStyle } from "./text";
import { Command } from "./command-ui-handler"; import { Command } from "./command-ui-handler";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import UiHandler from "./ui-handler"; import UiHandler from "./ui-handler";
import { addWindow } from "./ui-theme"; import { addWindow } from "./ui-theme";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
@ -18,7 +18,7 @@ export default class BallUiHandler extends UiHandler {
private scale = 0.1666666667; private scale = 0.1666666667;
constructor() { constructor() {
super(Mode.BALL); super(UiMode.BALL);
} }
setup() { setup() {
@ -82,15 +82,15 @@ export default class BallUiHandler extends UiHandler {
if (button === Button.ACTION && this.cursor < pokeballTypeCount) { if (button === Button.ACTION && this.cursor < pokeballTypeCount) {
if (globalScene.pokeballCounts[this.cursor]) { if (globalScene.pokeballCounts[this.cursor]) {
if (commandPhase.handleCommand(Command.BALL, this.cursor)) { if (commandPhase.handleCommand(Command.BALL, this.cursor)) {
globalScene.ui.setMode(Mode.COMMAND, commandPhase.getFieldIndex()); globalScene.ui.setMode(UiMode.COMMAND, commandPhase.getFieldIndex());
globalScene.ui.setMode(Mode.MESSAGE); globalScene.ui.setMode(UiMode.MESSAGE);
success = true; success = true;
} }
} else { } else {
ui.playError(); ui.playError();
} }
} else { } else {
ui.setMode(Mode.COMMAND, commandPhase.getFieldIndex()); ui.setMode(UiMode.COMMAND, commandPhase.getFieldIndex());
success = true; success = true;
} }
} else { } else {

View File

@ -1,6 +1,6 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "./text"; import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "./text";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import MessageUiHandler from "./message-ui-handler"; import MessageUiHandler from "./message-ui-handler";
import { addWindow } from "./ui-theme"; import { addWindow } from "./ui-theme";
import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext";
@ -23,7 +23,7 @@ export default class BattleMessageUiHandler extends MessageUiHandler {
public readonly wordWrapWidth: number = 1780; public readonly wordWrapWidth: number = 1780;
constructor() { constructor() {
super(Mode.MESSAGE); super(UiMode.MESSAGE);
} }
setup(): void { setup(): void {

View File

@ -1,5 +1,5 @@
import { TextStyle, addTextObject } from "./text"; import { TextStyle, addTextObject } from "./text";
import type { Mode } from "./ui"; import type { UiMode } from "#enums/ui-mode";
import UiHandler from "./ui-handler"; import UiHandler from "./ui-handler";
import { addWindow } from "./ui-theme"; import { addWindow } from "./ui-theme";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
@ -50,7 +50,7 @@ export default class GameChallengesUiHandler extends UiHandler {
private readonly leftArrowGap: number = 90; // distance from the label to the left arrow private readonly leftArrowGap: number = 90; // distance from the label to the left arrow
private readonly arrowSpacing: number = 3; // distance between the arrows and the value area private readonly arrowSpacing: number = 3; // distance between the arrows and the value area
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
} }

View File

@ -1,6 +1,6 @@
import { addTextObject, TextStyle } from "./text"; import { addTextObject, TextStyle } from "./text";
import PartyUiHandler, { PartyUiMode } from "./party-ui-handler"; import PartyUiHandler, { PartyUiMode } from "./party-ui-handler";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import UiHandler from "./ui-handler"; import UiHandler from "./ui-handler";
import i18next from "i18next"; import i18next from "i18next";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
@ -30,7 +30,7 @@ export default class CommandUiHandler extends UiHandler {
protected cursor2 = 0; protected cursor2 = 0;
constructor() { constructor() {
super(Mode.COMMAND); super(UiMode.COMMAND);
} }
setup() { setup() {
@ -124,18 +124,18 @@ export default class CommandUiHandler extends UiHandler {
switch (cursor) { switch (cursor) {
// Fight // Fight
case Command.FIGHT: case Command.FIGHT:
ui.setMode(Mode.FIGHT, (globalScene.getCurrentPhase() as CommandPhase).getFieldIndex()); ui.setMode(UiMode.FIGHT, (globalScene.getCurrentPhase() as CommandPhase).getFieldIndex());
success = true; success = true;
break; break;
// Ball // Ball
case Command.BALL: case Command.BALL:
ui.setModeWithoutClear(Mode.BALL); ui.setModeWithoutClear(UiMode.BALL);
success = true; success = true;
break; break;
// Pokemon // Pokemon
case Command.POKEMON: case Command.POKEMON:
ui.setMode( ui.setMode(
Mode.PARTY, UiMode.PARTY,
PartyUiMode.SWITCH, PartyUiMode.SWITCH,
(globalScene.getCurrentPhase() as CommandPhase).getPokemon().getFieldIndex(), (globalScene.getCurrentPhase() as CommandPhase).getPokemon().getFieldIndex(),
null, null,
@ -149,7 +149,7 @@ export default class CommandUiHandler extends UiHandler {
success = true; success = true;
break; break;
case Command.TERA: case Command.TERA:
ui.setMode(Mode.FIGHT, (globalScene.getCurrentPhase() as CommandPhase).getFieldIndex(), Command.TERA); ui.setMode(UiMode.FIGHT, (globalScene.getCurrentPhase() as CommandPhase).getFieldIndex(), Command.TERA);
success = true; success = true;
break; break;
} }

View File

@ -1,6 +1,6 @@
import type { OptionSelectConfig } from "./abstact-option-select-ui-handler"; import type { OptionSelectConfig } from "./abstact-option-select-ui-handler";
import AbstractOptionSelectUiHandler from "./abstact-option-select-ui-handler"; import AbstractOptionSelectUiHandler from "./abstact-option-select-ui-handler";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
@ -12,7 +12,7 @@ export default class ConfirmUiHandler extends AbstractOptionSelectUiHandler {
private switchCheckCursor: number; private switchCheckCursor: number;
constructor() { constructor() {
super(Mode.CONFIRM); super(UiMode.CONFIRM);
} }
getWindowWidth(): number { getWindowWidth(): number {

View File

@ -1,4 +1,4 @@
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import { TextStyle, addTextObject, getEggTierTextTint, getTextStyleOptions } from "./text"; import { TextStyle, addTextObject, getEggTierTextTint, getTextStyleOptions } from "./text";
import MessageUiHandler from "./message-ui-handler"; import MessageUiHandler from "./message-ui-handler";
import { getEnumValues, getEnumKeys, fixedInt, randSeedShuffle } from "#app/utils"; import { getEnumValues, getEnumKeys, fixedInt, randSeedShuffle } from "#app/utils";
@ -41,7 +41,7 @@ export default class EggGachaUiHandler extends MessageUiHandler {
private scale = 0.1666666667; private scale = 0.1666666667;
constructor() { constructor() {
super(Mode.EGG_GACHA); super(UiMode.EGG_GACHA);
this.gachaContainers = []; this.gachaContainers = [];
this.gachaKnobs = []; this.gachaKnobs = [];

View File

@ -1,4 +1,4 @@
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import UiHandler from "./ui-handler"; import UiHandler from "./ui-handler";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { EggHatchPhase } from "#app/phases/egg-hatch-phase"; import { EggHatchPhase } from "#app/phases/egg-hatch-phase";
@ -16,7 +16,7 @@ export default class EggHatchSceneHandler extends UiHandler {
public readonly eventTarget: EventTarget = new EventTarget(); public readonly eventTarget: EventTarget = new EventTarget();
constructor() { constructor() {
super(Mode.EGG_HATCH_SCENE); super(UiMode.EGG_HATCH_SCENE);
} }
setup() { setup() {

View File

@ -1,4 +1,4 @@
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler"; import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler";
import { TextStyle, addTextObject } from "#app/ui/text"; import { TextStyle, addTextObject } from "#app/ui/text";
import MessageUiHandler from "#app/ui/message-ui-handler"; import MessageUiHandler from "#app/ui/message-ui-handler";
@ -29,7 +29,7 @@ export default class EggListUiHandler extends MessageUiHandler {
private iconAnimHandler: PokemonIconAnimHandler; private iconAnimHandler: PokemonIconAnimHandler;
constructor() { constructor() {
super(Mode.EGG_LIST); super(UiMode.EGG_LIST);
} }
setup() { setup() {

View File

@ -1,4 +1,4 @@
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import PokemonIconAnimHandler, { PokemonIconAnimMode } from "./pokemon-icon-anim-handler"; import PokemonIconAnimHandler, { PokemonIconAnimMode } from "./pokemon-icon-anim-handler";
import MessageUiHandler from "./message-ui-handler"; import MessageUiHandler from "./message-ui-handler";
import { getEggTierForSpecies } from "../data/egg"; import { getEggTierForSpecies } from "../data/egg";
@ -54,7 +54,7 @@ export default class EggSummaryUiHandler extends MessageUiHandler {
public readonly eventTarget: EventTarget = new EventTarget(); public readonly eventTarget: EventTarget = new EventTarget();
constructor() { constructor() {
super(Mode.EGG_HATCH_SUMMARY); super(UiMode.EGG_HATCH_SUMMARY);
} }
setup() { setup() {

View File

@ -1,6 +1,6 @@
import MessageUiHandler from "./message-ui-handler"; import MessageUiHandler from "./message-ui-handler";
import { TextStyle, addTextObject } from "./text"; import { TextStyle, addTextObject } from "./text";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
@ -12,7 +12,7 @@ export default class EvolutionSceneHandler extends MessageUiHandler {
public cancelled: boolean; public cancelled: boolean;
constructor() { constructor() {
super(Mode.EVOLUTION_SCENE); super(UiMode.EVOLUTION_SCENE);
} }
setup() { setup() {

View File

@ -4,7 +4,7 @@ import { addTextObject, TextStyle } from "./text";
import { getTypeDamageMultiplierColor } from "#app/data/type"; import { getTypeDamageMultiplierColor } from "#app/data/type";
import { PokemonType } from "#enums/pokemon-type"; import { PokemonType } from "#enums/pokemon-type";
import { Command } from "./command-ui-handler"; import { Command } from "./command-ui-handler";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import UiHandler from "./ui-handler"; import UiHandler from "./ui-handler";
import { getLocalizedSpriteKey, fixedInt, padInt } from "#app/utils"; import { getLocalizedSpriteKey, fixedInt, padInt } from "#app/utils";
import { MoveCategory } from "#enums/MoveCategory"; import { MoveCategory } from "#enums/MoveCategory";
@ -37,7 +37,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle {
protected cursor2 = 0; protected cursor2 = 0;
constructor() { constructor() {
super(Mode.FIGHT); super(UiMode.FIGHT);
} }
setup() { setup() {
@ -156,7 +156,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle {
// Cannot back out of fight menu if skipToFightInput is enabled // Cannot back out of fight menu if skipToFightInput is enabled
const { battleType, mysteryEncounter } = globalScene.currentBattle; const { battleType, mysteryEncounter } = globalScene.currentBattle;
if (battleType !== BattleType.MYSTERY_ENCOUNTER || !mysteryEncounter?.skipToFightInput) { if (battleType !== BattleType.MYSTERY_ENCOUNTER || !mysteryEncounter?.skipToFightInput) {
ui.setMode(Mode.COMMAND, this.fieldIndex); ui.setMode(UiMode.COMMAND, this.fieldIndex);
success = true; success = true;
} }
} }
@ -308,7 +308,7 @@ export default class FightUiHandler extends UiHandler implements InfoToggle {
!opponent.battleData?.abilityRevealed, !opponent.battleData?.abilityRevealed,
undefined, undefined,
undefined, undefined,
true true,
); );
if (effectiveness === undefined) { if (effectiveness === undefined) {
return undefined; return undefined;
@ -353,7 +353,14 @@ export default class FightUiHandler extends UiHandler implements InfoToggle {
const moveColors = opponents const moveColors = opponents
.map(opponent => .map(opponent =>
opponent.getMoveEffectiveness(pokemon, pokemonMove.getMove(), !opponent.battleData.abilityRevealed, undefined, undefined, true), opponent.getMoveEffectiveness(
pokemon,
pokemonMove.getMove(),
!opponent.battleData.abilityRevealed,
undefined,
undefined,
true,
),
) )
.sort((a, b) => b - a) .sort((a, b) => b - a)
.map(effectiveness => getTypeDamageMultiplierColor(effectiveness ?? 0, "offense")); .map(effectiveness => getTypeDamageMultiplierColor(effectiveness ?? 0, "offense"));

View File

@ -5,7 +5,7 @@ import { addWindow, WindowVariant } from "./ui-theme";
import i18next from "i18next"; import i18next from "i18next";
import type AwaitableUiHandler from "./awaitable-ui-handler"; import type AwaitableUiHandler from "./awaitable-ui-handler";
import type UI from "./ui"; import type UI from "./ui";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
export enum FilterTextRow { export enum FilterTextRow {
@ -154,7 +154,7 @@ export class FilterText extends Phaser.GameObjects.Container {
this.onChange; this.onChange;
}, },
]; ];
ui.setOverlayMode(Mode.POKEDEX_SCAN, buttonAction, prefilledText, index); ui.setOverlayMode(UiMode.POKEDEX_SCAN, buttonAction, prefilledText, index);
} }
setCursor(cursor: number): void { setCursor(cursor: number): void {

View File

@ -1,6 +1,6 @@
import type { ModalConfig } from "./modal-ui-handler"; import type { ModalConfig } from "./modal-ui-handler";
import { ModalUiHandler } from "./modal-ui-handler"; import { ModalUiHandler } from "./modal-ui-handler";
import type { Mode } from "./ui"; import type { UiMode } from "#enums/ui-mode";
import { TextStyle, addTextInputObject, addTextObject } from "./text"; import { TextStyle, addTextInputObject, addTextObject } from "./text";
import { WindowVariant, addWindow } from "./ui-theme"; import { WindowVariant, addWindow } from "./ui-theme";
import type InputText from "phaser3-rex-plugins/plugins/inputtext"; import type InputText from "phaser3-rex-plugins/plugins/inputtext";
@ -21,7 +21,7 @@ export abstract class FormModalUiHandler extends ModalUiHandler {
protected tween: Phaser.Tweens.Tween; protected tween: Phaser.Tweens.Tween;
protected formLabels: Phaser.GameObjects.Text[]; protected formLabels: Phaser.GameObjects.Text[];
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
this.editing = false; this.editing = false;

View File

@ -1,6 +1,6 @@
import Phaser from "phaser"; import Phaser from "phaser";
import { TextStyle, addTextObject } from "#app/ui/text"; import { TextStyle, addTextObject } from "#app/ui/text";
import type { Mode } from "#app/ui/ui"; import type { UiMode } from "#enums/ui-mode";
import UiHandler from "#app/ui/ui-handler"; import UiHandler from "#app/ui/ui-handler";
import { addWindow } from "#app/ui/ui-theme"; import { addWindow } from "#app/ui/ui-theme";
import { getPlayTimeString, formatFancyLargeNumber, toReadableString } from "#app/utils"; import { getPlayTimeString, formatFancyLargeNumber, toReadableString } from "#app/utils";
@ -223,7 +223,7 @@ export default class GameStatsUiHandler extends UiHandler {
private arrowUp: Phaser.GameObjects.Sprite; private arrowUp: Phaser.GameObjects.Sprite;
private arrowDown: Phaser.GameObjects.Sprite; private arrowDown: Phaser.GameObjects.Sprite;
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
this.statLabels = []; this.statLabels = [];

View File

@ -1,10 +1,10 @@
import i18next from "i18next"; import i18next from "i18next";
import { ModalUiHandler } from "./modal-ui-handler"; import { ModalUiHandler } from "./modal-ui-handler";
import { addTextObject, TextStyle } from "./text"; import { addTextObject, TextStyle } from "./text";
import type { Mode } from "./ui"; import type { UiMode } from "#enums/ui-mode";
export default class LoadingModalUiHandler extends ModalUiHandler { export default class LoadingModalUiHandler extends ModalUiHandler {
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
} }

View File

@ -2,7 +2,7 @@ import type { InputFieldConfig } from "./form-modal-ui-handler";
import { FormModalUiHandler } from "./form-modal-ui-handler"; import { FormModalUiHandler } from "./form-modal-ui-handler";
import type { ModalConfig } from "./modal-ui-handler"; import type { ModalConfig } from "./modal-ui-handler";
import { fixedInt } from "#app/utils"; import { fixedInt } from "#app/utils";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import i18next from "i18next"; import i18next from "i18next";
import { addTextObject, TextStyle } from "./text"; import { addTextObject, TextStyle } from "./text";
import { addWindow } from "./ui-theme"; import { addWindow } from "./ui-theme";
@ -34,7 +34,7 @@ export default class LoginFormUiHandler extends FormModalUiHandler {
private infoContainer: Phaser.GameObjects.Container; private infoContainer: Phaser.GameObjects.Container;
private externalPartyBg: Phaser.GameObjects.NineSlice; private externalPartyBg: Phaser.GameObjects.NineSlice;
private externalPartyTitle: Phaser.GameObjects.Text; private externalPartyTitle: Phaser.GameObjects.Text;
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
} }
@ -146,9 +146,9 @@ export default class LoginFormUiHandler extends FormModalUiHandler {
// Prevent overlapping overrides on action modification // Prevent overlapping overrides on action modification
this.submitAction = originalLoginAction; this.submitAction = originalLoginAction;
this.sanitizeInputs(); this.sanitizeInputs();
globalScene.ui.setMode(Mode.LOADING, { buttonActions: [] }); globalScene.ui.setMode(UiMode.LOADING, { buttonActions: [] });
const onFail = error => { const onFail = error => {
globalScene.ui.setMode(Mode.LOGIN_FORM, Object.assign(config, { errorMessage: error?.trim() })); globalScene.ui.setMode(UiMode.LOGIN_FORM, Object.assign(config, { errorMessage: error?.trim() }));
globalScene.ui.playError(); globalScene.ui.playError();
}; };
if (!this.inputs[0].text) { if (!this.inputs[0].text) {
@ -215,8 +215,8 @@ export default class LoginFormUiHandler extends FormModalUiHandler {
}); });
const onFail = error => { const onFail = error => {
globalScene.ui.setMode(Mode.LOADING, { buttonActions: [] }); globalScene.ui.setMode(UiMode.LOADING, { buttonActions: [] });
globalScene.ui.setModeForceTransition(Mode.LOGIN_FORM, Object.assign(config, { errorMessage: error?.trim() })); globalScene.ui.setModeForceTransition(UiMode.LOGIN_FORM, Object.assign(config, { errorMessage: error?.trim() }));
globalScene.ui.playError(); globalScene.ui.playError();
}; };
@ -236,7 +236,7 @@ export default class LoginFormUiHandler extends FormModalUiHandler {
}, },
}); });
} }
globalScene.ui.setOverlayMode(Mode.OPTION_SELECT, { globalScene.ui.setOverlayMode(UiMode.OPTION_SELECT, {
options: options, options: options,
delay: 1000, delay: 1000,
}); });

View File

@ -1,7 +1,7 @@
import { bypassLogin } from "#app/battle-scene"; import { bypassLogin } from "#app/battle-scene";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { TextStyle, addTextObject, getTextStyleOptions } from "./text"; import { TextStyle, addTextObject, getTextStyleOptions } from "./text";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import { getEnumKeys, isLocal, isBeta, fixedInt, getCookie, sessionIdKey } from "#app/utils"; import { getEnumKeys, isLocal, isBeta, fixedInt, getCookie, sessionIdKey } from "#app/utils";
import { addWindow, WindowVariant } from "./ui-theme"; import { addWindow, WindowVariant } from "./ui-theme";
import MessageUiHandler from "./message-ui-handler"; import MessageUiHandler from "./message-ui-handler";
@ -64,12 +64,12 @@ export default class MenuUiHandler extends MessageUiHandler {
public bgmBar: BgmBar; public bgmBar: BgmBar;
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
this.excludedMenus = () => [ this.excludedMenus = () => [
{ {
condition: [Mode.COMMAND, Mode.TITLE].includes(mode ?? Mode.TITLE), condition: [UiMode.COMMAND, UiMode.TITLE].includes(mode ?? UiMode.TITLE),
options: [MenuOptions.EGG_GACHA, MenuOptions.EGG_LIST], options: [MenuOptions.EGG_GACHA, MenuOptions.EGG_LIST],
}, },
{ condition: bypassLogin, options: [MenuOptions.LOG_OUT] }, { condition: bypassLogin, options: [MenuOptions.LOG_OUT] },
@ -234,7 +234,7 @@ export default class MenuUiHandler extends MessageUiHandler {
]), ]),
xOffset: 98, xOffset: 98,
}; };
ui.setOverlayMode(Mode.MENU_OPTION_SELECT, config); ui.setOverlayMode(UiMode.MENU_OPTION_SELECT, config);
}); });
}; };
@ -377,7 +377,7 @@ export default class MenuUiHandler extends MessageUiHandler {
ui.revertMode(); ui.revertMode();
}, },
]; ];
ui.setMode(Mode.TEST_DIALOGUE, buttonAction, prefilledText); ui.setMode(UiMode.TEST_DIALOGUE, buttonAction, prefilledText);
return true; return true;
}, },
keepOpen: true, keepOpen: true,
@ -456,7 +456,7 @@ export default class MenuUiHandler extends MessageUiHandler {
handler: () => { handler: () => {
ui.playSelect(); ui.playSelect();
ui.setOverlayMode( ui.setOverlayMode(
Mode.ADMIN, UiMode.ADMIN,
{ {
buttonActions: [ buttonActions: [
// we double revert here and below to go back 2 layers of menus // we double revert here and below to go back 2 layers of menus
@ -483,7 +483,7 @@ export default class MenuUiHandler extends MessageUiHandler {
return true; return true;
}, },
}); });
globalScene.ui.setOverlayMode(Mode.OPTION_SELECT, { globalScene.ui.setOverlayMode(UiMode.OPTION_SELECT, {
options: options, options: options,
delay: 0, delay: 0,
}); });
@ -557,21 +557,21 @@ export default class MenuUiHandler extends MessageUiHandler {
this.showText("", 0); this.showText("", 0);
switch (adjustedCursor) { switch (adjustedCursor) {
case MenuOptions.GAME_SETTINGS: case MenuOptions.GAME_SETTINGS:
ui.setOverlayMode(Mode.SETTINGS); ui.setOverlayMode(UiMode.SETTINGS);
success = true; success = true;
break; break;
case MenuOptions.ACHIEVEMENTS: case MenuOptions.ACHIEVEMENTS:
ui.setOverlayMode(Mode.ACHIEVEMENTS); ui.setOverlayMode(UiMode.ACHIEVEMENTS);
success = true; success = true;
break; break;
case MenuOptions.STATS: case MenuOptions.STATS:
ui.setOverlayMode(Mode.GAME_STATS); ui.setOverlayMode(UiMode.GAME_STATS);
success = true; success = true;
break; break;
case MenuOptions.EGG_LIST: case MenuOptions.EGG_LIST:
if (globalScene.gameData.eggs.length) { if (globalScene.gameData.eggs.length) {
ui.revertMode(); ui.revertMode();
ui.setOverlayMode(Mode.EGG_LIST); ui.setOverlayMode(UiMode.EGG_LIST);
success = true; success = true;
} else { } else {
ui.showText(i18next.t("menuUiHandler:noEggs"), null, () => ui.showText(""), fixedInt(1500)); ui.showText(i18next.t("menuUiHandler:noEggs"), null, () => ui.showText(""), fixedInt(1500));
@ -580,12 +580,12 @@ export default class MenuUiHandler extends MessageUiHandler {
break; break;
case MenuOptions.EGG_GACHA: case MenuOptions.EGG_GACHA:
ui.revertMode(); ui.revertMode();
ui.setOverlayMode(Mode.EGG_GACHA); ui.setOverlayMode(UiMode.EGG_GACHA);
success = true; success = true;
break; break;
case MenuOptions.POKEDEX: case MenuOptions.POKEDEX:
ui.revertMode(); ui.revertMode();
ui.setOverlayMode(Mode.POKEDEX); ui.setOverlayMode(UiMode.POKEDEX);
success = true; success = true;
break; break;
case MenuOptions.MANAGE_DATA: case MenuOptions.MANAGE_DATA:
@ -642,18 +642,18 @@ export default class MenuUiHandler extends MessageUiHandler {
}, },
); );
} }
ui.setOverlayMode(Mode.MENU_OPTION_SELECT, this.manageDataConfig); ui.setOverlayMode(UiMode.MENU_OPTION_SELECT, this.manageDataConfig);
success = true; success = true;
break; break;
case MenuOptions.COMMUNITY: case MenuOptions.COMMUNITY:
ui.setOverlayMode(Mode.MENU_OPTION_SELECT, this.communityConfig); ui.setOverlayMode(UiMode.MENU_OPTION_SELECT, this.communityConfig);
success = true; success = true;
break; break;
case MenuOptions.SAVE_AND_QUIT: case MenuOptions.SAVE_AND_QUIT:
if (globalScene.currentBattle) { if (globalScene.currentBattle) {
success = true; success = true;
const doSaveQuit = () => { const doSaveQuit = () => {
ui.setMode(Mode.LOADING, { ui.setMode(UiMode.LOADING, {
buttonActions: [], buttonActions: [],
fadeOut: () => fadeOut: () =>
globalScene.gameData.saveAll(true, true, true, true).then(() => { globalScene.gameData.saveAll(true, true, true, true).then(() => {
@ -668,7 +668,7 @@ export default class MenuUiHandler extends MessageUiHandler {
return; return;
} }
ui.setOverlayMode( ui.setOverlayMode(
Mode.CONFIRM, UiMode.CONFIRM,
doSaveQuit, doSaveQuit,
() => { () => {
ui.revertMode(); ui.revertMode();
@ -688,7 +688,7 @@ export default class MenuUiHandler extends MessageUiHandler {
case MenuOptions.LOG_OUT: case MenuOptions.LOG_OUT:
success = true; success = true;
const doLogout = () => { const doLogout = () => {
ui.setMode(Mode.LOADING, { ui.setMode(UiMode.LOADING, {
buttonActions: [], buttonActions: [],
fadeOut: () => fadeOut: () =>
pokerogueApi.account.logout().then(() => { pokerogueApi.account.logout().then(() => {
@ -703,7 +703,7 @@ export default class MenuUiHandler extends MessageUiHandler {
return; return;
} }
ui.setOverlayMode( ui.setOverlayMode(
Mode.CONFIRM, UiMode.CONFIRM,
doLogout, doLogout,
() => { () => {
ui.revertMode(); ui.revertMode();
@ -722,7 +722,7 @@ export default class MenuUiHandler extends MessageUiHandler {
success = true; success = true;
ui.revertMode().then(result => { ui.revertMode().then(result => {
if (!result) { if (!result) {
ui.setMode(Mode.MESSAGE); ui.setMode(UiMode.MESSAGE);
} }
}); });
} else { } else {

View File

@ -1,5 +1,5 @@
import AwaitableUiHandler from "./awaitable-ui-handler"; import AwaitableUiHandler from "./awaitable-ui-handler";
import type { Mode } from "./ui"; import type { UiMode } from "#enums/ui-mode";
import { getFrameMs } from "#app/utils"; import { getFrameMs } from "#app/utils";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
@ -11,7 +11,7 @@ export default abstract class MessageUiHandler extends AwaitableUiHandler {
public message: Phaser.GameObjects.Text; public message: Phaser.GameObjects.Text;
public prompt: Phaser.GameObjects.Sprite; public prompt: Phaser.GameObjects.Sprite;
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
this.pendingPrompt = false; this.pendingPrompt = false;

View File

@ -1,5 +1,5 @@
import { TextStyle, addTextObject } from "./text"; import { TextStyle, addTextObject } from "./text";
import type { Mode } from "./ui"; import type { UiMode } from "#enums/ui-mode";
import UiHandler from "./ui-handler"; import UiHandler from "./ui-handler";
import { WindowVariant, addWindow } from "./ui-theme"; import { WindowVariant, addWindow } from "./ui-theme";
import type { Button } from "#enums/buttons"; import type { Button } from "#enums/buttons";
@ -17,7 +17,7 @@ export abstract class ModalUiHandler extends UiHandler {
protected buttonBgs: Phaser.GameObjects.NineSlice[]; protected buttonBgs: Phaser.GameObjects.NineSlice[];
protected buttonLabels: Phaser.GameObjects.Text[]; protected buttonLabels: Phaser.GameObjects.Text[];
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
this.buttonContainers = []; this.buttonContainers = [];

View File

@ -4,7 +4,7 @@ import { getPlayerShopModifierTypeOptionsForWave, TmModifierType } from "../modi
import { getPokeballAtlasKey } from "#app/data/pokeball"; import { getPokeballAtlasKey } from "#app/data/pokeball";
import { addTextObject, getTextStyleOptions, getModifierTierTextTint, getTextColor, TextStyle } from "./text"; import { addTextObject, getTextStyleOptions, getModifierTierTextTint, getTextColor, TextStyle } from "./text";
import AwaitableUiHandler from "./awaitable-ui-handler"; import AwaitableUiHandler from "./awaitable-ui-handler";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import { LockModifierTiersModifier, PokemonHeldItemModifier, HealShopCostModifier } from "../modifier/modifier"; import { LockModifierTiersModifier, PokemonHeldItemModifier, HealShopCostModifier } from "../modifier/modifier";
import { handleTutorial, Tutorial } from "../tutorial"; import { handleTutorial, Tutorial } from "../tutorial";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
@ -50,7 +50,7 @@ export default class ModifierSelectUiHandler extends AwaitableUiHandler {
private cursorObj: Phaser.GameObjects.Image | null; private cursorObj: Phaser.GameObjects.Image | null;
constructor() { constructor() {
super(Mode.CONFIRM); super(UiMode.CONFIRM);
this.options = []; this.options = [];
this.shopOptionsRows = []; this.shopOptionsRows = [];

View File

@ -1,5 +1,5 @@
import { addBBCodeTextObject, getBBCodeFrag, TextStyle } from "./text"; import { addBBCodeTextObject, getBBCodeFrag, TextStyle } from "./text";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import UiHandler from "./ui-handler"; import UiHandler from "./ui-handler";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
import { addWindow, WindowVariant } from "./ui-theme"; import { addWindow, WindowVariant } from "./ui-theme";
@ -47,7 +47,7 @@ export default class MysteryEncounterUiHandler extends UiHandler {
protected blockInput = true; protected blockInput = true;
constructor() { constructor() {
super(Mode.MYSTERY_ENCOUNTER); super(UiMode.MYSTERY_ENCOUNTER);
} }
override setup() { override setup() {
@ -141,8 +141,8 @@ export default class MysteryEncounterUiHandler extends UiHandler {
...this.overrideSettings, ...this.overrideSettings,
slideInDescription: false, slideInDescription: false,
}; };
globalScene.ui.setMode(Mode.PARTY, PartyUiMode.CHECK, -1, () => { globalScene.ui.setMode(UiMode.PARTY, PartyUiMode.CHECK, -1, () => {
globalScene.ui.setMode(Mode.MYSTERY_ENCOUNTER, overrideSettings); globalScene.ui.setMode(UiMode.MYSTERY_ENCOUNTER, overrideSettings);
setTimeout(() => { setTimeout(() => {
this.setCursor(this.viewPartyIndex); this.setCursor(this.viewPartyIndex);
this.unblockInput(); this.unblockInput();

View File

@ -4,7 +4,7 @@ import { MoveResult } from "#app/field/pokemon";
import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "#app/ui/text"; import { addBBCodeTextObject, addTextObject, getTextColor, TextStyle } from "#app/ui/text";
import { Command } from "#app/ui/command-ui-handler"; import { Command } from "#app/ui/command-ui-handler";
import MessageUiHandler from "#app/ui/message-ui-handler"; import MessageUiHandler from "#app/ui/message-ui-handler";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { BooleanHolder, toReadableString, randInt, getLocalizedSpriteKey } from "#app/utils"; import { BooleanHolder, toReadableString, randInt, getLocalizedSpriteKey } from "#app/utils";
import { import {
PokemonFormChangeItemModifier, PokemonFormChangeItemModifier,
@ -252,7 +252,7 @@ export default class PartyUiHandler extends MessageUiHandler {
]; ];
constructor() { constructor() {
super(Mode.PARTY); super(UiMode.PARTY);
} }
setup() { setup() {
@ -556,7 +556,7 @@ export default class PartyUiHandler extends MessageUiHandler {
this.showText(filterResult as string, undefined, () => this.showText("", 0), undefined, true); this.showText(filterResult as string, undefined, () => this.showText("", 0), undefined, true);
} else if (option === PartyOption.SUMMARY) { } else if (option === PartyOption.SUMMARY) {
ui.playSelect(); ui.playSelect();
ui.setModeWithoutClear(Mode.SUMMARY, pokemon).then(() => this.clearOptions()); ui.setModeWithoutClear(UiMode.SUMMARY, pokemon).then(() => this.clearOptions());
return true; return true;
} else if (option === PartyOption.POKEDEX) { } else if (option === PartyOption.POKEDEX) {
ui.playSelect(); ui.playSelect();
@ -566,7 +566,7 @@ export default class PartyUiHandler extends MessageUiHandler {
form: pokemon.formIndex, form: pokemon.formIndex,
female: pokemon.gender === Gender.FEMALE, female: pokemon.gender === Gender.FEMALE,
}; };
ui.setOverlayMode(Mode.POKEDEX_PAGE, pokemon.species, attributes).then(() => this.clearOptions()); ui.setOverlayMode(UiMode.POKEDEX_PAGE, pokemon.species, attributes).then(() => this.clearOptions());
return true; return true;
} else if (option === PartyOption.UNPAUSE_EVOLUTION) { } else if (option === PartyOption.UNPAUSE_EVOLUTION) {
this.clearOptions(); this.clearOptions();
@ -593,13 +593,13 @@ export default class PartyUiHandler extends MessageUiHandler {
null, null,
() => { () => {
ui.setModeWithoutClear( ui.setModeWithoutClear(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
const fusionName = pokemon.getName(); const fusionName = pokemon.getName();
pokemon.unfuse().then(() => { pokemon.unfuse().then(() => {
this.clearPartySlots(); this.clearPartySlots();
this.populatePartySlots(); this.populatePartySlots();
ui.setMode(Mode.PARTY); ui.setMode(UiMode.PARTY);
this.showText( this.showText(
i18next.t("partyUiHandler:wasReverted", { i18next.t("partyUiHandler:wasReverted", {
fusionName: fusionName, fusionName: fusionName,
@ -607,7 +607,7 @@ export default class PartyUiHandler extends MessageUiHandler {
}), }),
undefined, undefined,
() => { () => {
ui.setMode(Mode.PARTY); ui.setMode(UiMode.PARTY);
this.showText("", 0); this.showText("", 0);
}, },
null, null,
@ -616,7 +616,7 @@ export default class PartyUiHandler extends MessageUiHandler {
}); });
}, },
() => { () => {
ui.setMode(Mode.PARTY); ui.setMode(UiMode.PARTY);
this.showText("", 0); this.showText("", 0);
}, },
); );
@ -635,13 +635,13 @@ export default class PartyUiHandler extends MessageUiHandler {
() => { () => {
this.blockInput = false; this.blockInput = false;
ui.setModeWithoutClear( ui.setModeWithoutClear(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
ui.setMode(Mode.PARTY); ui.setMode(UiMode.PARTY);
this.doRelease(this.cursor); this.doRelease(this.cursor);
}, },
() => { () => {
ui.setMode(Mode.PARTY); ui.setMode(UiMode.PARTY);
this.showText("", 0); this.showText("", 0);
}, },
); );
@ -655,7 +655,7 @@ export default class PartyUiHandler extends MessageUiHandler {
this.clearOptions(); this.clearOptions();
ui.playSelect(); ui.playSelect();
ui.setModeWithoutClear( ui.setModeWithoutClear(
Mode.RENAME_POKEMON, UiMode.RENAME_POKEMON,
{ {
buttonActions: [ buttonActions: [
(nickname: string) => { (nickname: string) => {
@ -664,10 +664,10 @@ export default class PartyUiHandler extends MessageUiHandler {
pokemon.updateInfo(); pokemon.updateInfo();
this.clearPartySlots(); this.clearPartySlots();
this.populatePartySlots(); this.populatePartySlots();
ui.setMode(Mode.PARTY); ui.setMode(UiMode.PARTY);
}, },
() => { () => {
ui.setMode(Mode.PARTY); ui.setMode(UiMode.PARTY);
}, },
], ],
}, },
@ -788,7 +788,7 @@ export default class PartyUiHandler extends MessageUiHandler {
selectCallback(6, PartyOption.CANCEL); selectCallback(6, PartyOption.CANCEL);
ui.playSelect(); ui.playSelect();
} else { } else {
ui.setMode(Mode.COMMAND, this.fieldIndex); ui.setMode(UiMode.COMMAND, this.fieldIndex);
ui.playSelect(); ui.playSelect();
} }
} }

View File

@ -26,7 +26,7 @@ import type { OptionSelectItem } from "#app/ui/abstact-option-select-ui-handler"
import MessageUiHandler from "#app/ui/message-ui-handler"; import MessageUiHandler from "#app/ui/message-ui-handler";
import { StatsContainer } from "#app/ui/stats-container"; import { StatsContainer } from "#app/ui/stats-container";
import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor, getTextStyleOptions } from "#app/ui/text"; import { TextStyle, addBBCodeTextObject, addTextObject, getTextColor, getTextStyleOptions } from "#app/ui/text";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { addWindow } from "#app/ui/ui-theme"; import { addWindow } from "#app/ui/ui-theme";
import { Egg } from "#app/data/egg"; import { Egg } from "#app/data/egg";
import Overrides from "#app/overrides"; import Overrides from "#app/overrides";
@ -265,7 +265,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
private exitCallback; private exitCallback;
constructor() { constructor() {
super(Mode.POKEDEX_PAGE); super(UiMode.POKEDEX_PAGE);
} }
setup() { setup() {
@ -1140,12 +1140,12 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
success = true; success = true;
} else if (this.previousSpecies.length > 0) { } else if (this.previousSpecies.length > 0) {
this.blockInput = true; this.blockInput = true;
ui.setModeWithoutClear(Mode.OPTION_SELECT).then(() => { ui.setModeWithoutClear(UiMode.OPTION_SELECT).then(() => {
const species = this.previousSpecies.pop(); const species = this.previousSpecies.pop();
const starterAttributes = this.previousStarterAttributes.pop(); const starterAttributes = this.previousStarterAttributes.pop();
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setModeForceTransition(Mode.POKEDEX_PAGE, species, starterAttributes); ui.setModeForceTransition(UiMode.POKEDEX_PAGE, species, starterAttributes);
success = true; success = true;
}); });
this.blockInput = false; this.blockInput = false;
@ -1173,7 +1173,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
} else { } else {
this.blockInput = true; this.blockInput = true;
ui.setMode(Mode.POKEDEX_PAGE, "refresh").then(() => { ui.setMode(UiMode.POKEDEX_PAGE, "refresh").then(() => {
ui.showText(i18next.t("pokedexUiHandler:showBaseStats"), null, () => { ui.showText(i18next.t("pokedexUiHandler:showBaseStats"), null, () => {
this.baseStatsOverlay.show(this.baseStats, this.baseTotal); this.baseStatsOverlay.show(this.baseStats, this.baseTotal);
@ -1193,11 +1193,11 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
} else { } else {
this.blockInput = true; this.blockInput = true;
ui.setMode(Mode.POKEDEX_PAGE, "refresh").then(() => { ui.setMode(UiMode.POKEDEX_PAGE, "refresh").then(() => {
ui.showText(i18next.t("pokedexUiHandler:showLevelMoves"), null, () => { ui.showText(i18next.t("pokedexUiHandler:showLevelMoves"), null, () => {
this.moveInfoOverlay.show(allMoves[this.levelMoves[0][1]]); this.moveInfoOverlay.show(allMoves[this.levelMoves[0][1]]);
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: this.levelMoves options: this.levelMoves
.map(m => { .map(m => {
const levelNumber = m[0] > 0 ? String(m[0]) : ""; const levelNumber = m[0] > 0 ? String(m[0]) : "";
@ -1226,7 +1226,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
handler: () => { handler: () => {
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setMode(Mode.POKEDEX_PAGE, "refresh"); ui.setMode(UiMode.POKEDEX_PAGE, "refresh");
return true; return true;
}, },
onHover: () => { onHover: () => {
@ -1251,7 +1251,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
} else { } else {
this.blockInput = true; this.blockInput = true;
ui.setMode(Mode.POKEDEX_PAGE, "refresh").then(() => { ui.setMode(UiMode.POKEDEX_PAGE, "refresh").then(() => {
if (this.eggMoves.length === 0) { if (this.eggMoves.length === 0) {
ui.showText(i18next.t("pokedexUiHandler:noEggMoves")); ui.showText(i18next.t("pokedexUiHandler:noEggMoves"));
this.blockInput = false; this.blockInput = false;
@ -1261,7 +1261,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
ui.showText(i18next.t("pokedexUiHandler:showEggMoves"), null, () => { ui.showText(i18next.t("pokedexUiHandler:showEggMoves"), null, () => {
this.moveInfoOverlay.show(allMoves[this.eggMoves[0]]); this.moveInfoOverlay.show(allMoves[this.eggMoves[0]]);
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: [ options: [
{ {
label: i18next.t("pokedexUiHandler:common"), label: i18next.t("pokedexUiHandler:common"),
@ -1294,7 +1294,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
handler: () => { handler: () => {
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setMode(Mode.POKEDEX_PAGE, "refresh"); ui.setMode(UiMode.POKEDEX_PAGE, "refresh");
return true; return true;
}, },
onHover: () => this.moveInfoOverlay.clear(), onHover: () => this.moveInfoOverlay.clear(),
@ -1321,11 +1321,11 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
} else { } else {
this.blockInput = true; this.blockInput = true;
ui.setMode(Mode.POKEDEX_PAGE, "refresh").then(() => { ui.setMode(UiMode.POKEDEX_PAGE, "refresh").then(() => {
ui.showText(i18next.t("pokedexUiHandler:showTmMoves"), null, () => { ui.showText(i18next.t("pokedexUiHandler:showTmMoves"), null, () => {
this.moveInfoOverlay.show(allMoves[this.tmMoves[0]]); this.moveInfoOverlay.show(allMoves[this.tmMoves[0]]);
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: this.tmMoves options: this.tmMoves
.map(m => { .map(m => {
const option: OptionSelectItem = { const option: OptionSelectItem = {
@ -1344,7 +1344,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
handler: () => { handler: () => {
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setMode(Mode.POKEDEX_PAGE, "refresh"); ui.setMode(UiMode.POKEDEX_PAGE, "refresh");
return true; return true;
}, },
onHover: () => { onHover: () => {
@ -1369,7 +1369,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
} else { } else {
this.blockInput = true; this.blockInput = true;
ui.setMode(Mode.POKEDEX_PAGE, "refresh").then(() => { ui.setMode(UiMode.POKEDEX_PAGE, "refresh").then(() => {
ui.showText(i18next.t("pokedexUiHandler:showAbilities"), null, () => { ui.showText(i18next.t("pokedexUiHandler:showAbilities"), null, () => {
this.infoOverlay.show(allAbilities[this.ability1].description); this.infoOverlay.show(allAbilities[this.ability1].description);
@ -1431,13 +1431,13 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
handler: () => { handler: () => {
this.infoOverlay.clear(); this.infoOverlay.clear();
this.clearText(); this.clearText();
ui.setMode(Mode.POKEDEX_PAGE, "refresh"); ui.setMode(UiMode.POKEDEX_PAGE, "refresh");
return true; return true;
}, },
onHover: () => this.infoOverlay.clear(), onHover: () => this.infoOverlay.clear(),
}); });
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: options, options: options,
supportHover: true, supportHover: true,
maxOptions: 8, maxOptions: 8,
@ -1457,7 +1457,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
} else { } else {
this.blockInput = true; this.blockInput = true;
ui.setMode(Mode.POKEDEX_PAGE, "refresh").then(() => { ui.setMode(UiMode.POKEDEX_PAGE, "refresh").then(() => {
if ((!this.biomes || this.biomes?.length === 0) && (!this.preBiomes || this.preBiomes?.length === 0)) { if ((!this.biomes || this.biomes?.length === 0) && (!this.preBiomes || this.preBiomes?.length === 0)) {
ui.showText(i18next.t("pokedexUiHandler:noBiomes")); ui.showText(i18next.t("pokedexUiHandler:noBiomes"));
ui.playError(); ui.playError();
@ -1510,13 +1510,13 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
handler: () => { handler: () => {
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setMode(Mode.POKEDEX_PAGE, "refresh"); ui.setMode(UiMode.POKEDEX_PAGE, "refresh");
return true; return true;
}, },
onHover: () => this.moveInfoOverlay.clear(), onHover: () => this.moveInfoOverlay.clear(),
}); });
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: options, options: options,
supportHover: true, supportHover: true,
maxOptions: 8, maxOptions: 8,
@ -1536,7 +1536,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
} else { } else {
this.blockInput = true; this.blockInput = true;
ui.setMode(Mode.POKEDEX_PAGE, "refresh").then(() => { ui.setMode(UiMode.POKEDEX_PAGE, "refresh").then(() => {
const options: any[] = []; const options: any[] = [];
if ( if (
@ -1589,7 +1589,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
this.savedStarterAttributes.form = newFormIndex; this.savedStarterAttributes.form = newFormIndex;
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setMode(Mode.POKEDEX_PAGE, newSpecies, this.savedStarterAttributes); ui.setMode(UiMode.POKEDEX_PAGE, newSpecies, this.savedStarterAttributes);
return true; return true;
}, },
onHover: () => this.showText(conditionText), onHover: () => this.showText(conditionText),
@ -1631,7 +1631,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
this.savedStarterAttributes.form = newFormIndex; this.savedStarterAttributes.form = newFormIndex;
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setMode(Mode.POKEDEX_PAGE, evoSpecies, this.savedStarterAttributes); ui.setMode(UiMode.POKEDEX_PAGE, evoSpecies, this.savedStarterAttributes);
return true; return true;
}, },
onHover: () => this.showText(conditionText), onHover: () => this.showText(conditionText),
@ -1676,7 +1676,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setMode( ui.setMode(
Mode.POKEDEX_PAGE, UiMode.POKEDEX_PAGE,
newSpecies, newSpecies,
this.savedStarterAttributes, this.savedStarterAttributes,
this.filteredIndices, this.filteredIndices,
@ -1694,13 +1694,13 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
handler: () => { handler: () => {
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setMode(Mode.POKEDEX_PAGE, "refresh"); ui.setMode(UiMode.POKEDEX_PAGE, "refresh");
return true; return true;
}, },
onHover: () => this.moveInfoOverlay.clear(), onHover: () => this.moveInfoOverlay.clear(),
}); });
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: options, options: options,
supportHover: true, supportHover: true,
maxOptions: 8, maxOptions: 8,
@ -1719,7 +1719,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
error = true; error = true;
} else { } else {
this.toggleStatsMode(); this.toggleStatsMode();
ui.setMode(Mode.POKEDEX_PAGE, "refresh"); ui.setMode(UiMode.POKEDEX_PAGE, "refresh");
success = true; success = true;
} }
break; break;
@ -1729,10 +1729,10 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
error = true; error = true;
} else { } else {
this.blockInput = true; this.blockInput = true;
ui.setMode(Mode.POKEDEX_PAGE, "refresh").then(() => { ui.setMode(UiMode.POKEDEX_PAGE, "refresh").then(() => {
ui.showText(i18next.t("pokedexUiHandler:showNature"), null, () => { ui.showText(i18next.t("pokedexUiHandler:showNature"), null, () => {
const natures = globalScene.gameData.getNaturesForAttr(this.speciesStarterDexEntry?.natureAttr); const natures = globalScene.gameData.getNaturesForAttr(this.speciesStarterDexEntry?.natureAttr);
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: natures options: natures
.map((n: Nature, _i: number) => { .map((n: Nature, _i: number) => {
const option: OptionSelectItem = { const option: OptionSelectItem = {
@ -1747,7 +1747,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
label: i18next.t("menu:cancel"), label: i18next.t("menu:cancel"),
handler: () => { handler: () => {
this.clearText(); this.clearText();
ui.setMode(Mode.POKEDEX_PAGE, "refresh"); ui.setMode(UiMode.POKEDEX_PAGE, "refresh");
this.blockInput = false; this.blockInput = false;
return true; return true;
}, },
@ -1897,7 +1897,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
}); });
this.setSpeciesDetails(this.species); this.setSpeciesDetails(this.species);
globalScene.playSound("se/buy"); globalScene.playSound("se/buy");
ui.setMode(Mode.POKEDEX_PAGE, "refresh"); ui.setMode(UiMode.POKEDEX_PAGE, "refresh");
return true; return true;
} }
@ -1927,7 +1927,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
return globalScene.reset(true); return globalScene.reset(true);
} }
}); });
ui.setMode(Mode.POKEDEX_PAGE, "refresh"); ui.setMode(UiMode.POKEDEX_PAGE, "refresh");
globalScene.playSound("se/buy"); globalScene.playSound("se/buy");
return true; return true;
@ -1976,7 +1976,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
return globalScene.reset(true); return globalScene.reset(true);
} }
}); });
ui.setMode(Mode.POKEDEX_PAGE, "refresh"); ui.setMode(UiMode.POKEDEX_PAGE, "refresh");
globalScene.playSound("se/buy"); globalScene.playSound("se/buy");
return true; return true;
@ -1990,11 +1990,11 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
options.push({ options.push({
label: i18next.t("menu:cancel"), label: i18next.t("menu:cancel"),
handler: () => { handler: () => {
ui.setMode(Mode.POKEDEX_PAGE, "refresh"); ui.setMode(UiMode.POKEDEX_PAGE, "refresh");
return true; return true;
}, },
}); });
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: options, options: options,
yOffset: 47, yOffset: 47,
}); });
@ -2032,7 +2032,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
return true; return true;
} }
this.blockInput = true; this.blockInput = true;
ui.setModeWithoutClear(Mode.OPTION_SELECT).then(() => { ui.setModeWithoutClear(UiMode.OPTION_SELECT).then(() => {
// Always go back to first selection after scrolling around // Always go back to first selection after scrolling around
if (this.previousSpecies.length === 0) { if (this.previousSpecies.length === 0) {
this.previousSpecies.push(this.species); this.previousSpecies.push(this.species);
@ -2057,7 +2057,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setModeForceTransition( ui.setModeForceTransition(
Mode.POKEDEX_PAGE, UiMode.POKEDEX_PAGE,
newSpecies, newSpecies,
this.savedStarterAttributes, this.savedStarterAttributes,
this.filteredIndices, this.filteredIndices,
@ -2071,7 +2071,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
this.blockInput = false; this.blockInput = false;
return true; return true;
} }
ui.setModeWithoutClear(Mode.OPTION_SELECT).then(() => { ui.setModeWithoutClear(UiMode.OPTION_SELECT).then(() => {
// Always go back to first selection after scrolling around // Always go back to first selection after scrolling around
if (this.previousSpecies.length === 0) { if (this.previousSpecies.length === 0) {
this.previousSpecies.push(this.species); this.previousSpecies.push(this.species);
@ -2096,7 +2096,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setModeForceTransition( ui.setModeForceTransition(
Mode.POKEDEX_PAGE, UiMode.POKEDEX_PAGE,
newSpecies, newSpecies,
this.savedStarterAttributes, this.savedStarterAttributes,
this.filteredIndices, this.filteredIndices,

View File

@ -4,7 +4,7 @@ import type { ModalConfig } from "./modal-ui-handler";
import type { PlayerPokemon } from "#app/field/pokemon"; import type { PlayerPokemon } from "#app/field/pokemon";
import type { OptionSelectItem } from "./abstact-option-select-ui-handler"; import type { OptionSelectItem } from "./abstact-option-select-ui-handler";
import { isNullOrUndefined } from "#app/utils"; import { isNullOrUndefined } from "#app/utils";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import { FilterTextRow } from "./filter-text"; import { FilterTextRow } from "./filter-text";
import { allAbilities } from "#app/data/data-lists"; import { allAbilities } from "#app/data/data-lists";
import { allMoves } from "#app/data/moves/move"; import { allMoves } from "#app/data/moves/move";
@ -115,7 +115,7 @@ export default class PokedexScanUiHandler extends FormModalUiHandler {
input.on("keydown", (inputObject, evt: KeyboardEvent) => { input.on("keydown", (inputObject, evt: KeyboardEvent) => {
if ( if (
["escape", "space"].some(v => v === evt.key.toLowerCase() || v === evt.code.toLowerCase()) && ["escape", "space"].some(v => v === evt.key.toLowerCase() || v === evt.code.toLowerCase()) &&
ui.getMode() === Mode.AUTO_COMPLETE ui.getMode() === UiMode.AUTO_COMPLETE
) { ) {
// Delete autocomplete list and recovery focus. // Delete autocomplete list and recovery focus.
inputObject.on("blur", () => inputObject.node.focus(), { once: true }); inputObject.on("blur", () => inputObject.node.focus(), { once: true });
@ -125,7 +125,7 @@ export default class PokedexScanUiHandler extends FormModalUiHandler {
input.on("textchange", (inputObject, evt: InputEvent) => { input.on("textchange", (inputObject, evt: InputEvent) => {
// Delete autocomplete. // Delete autocomplete.
if (ui.getMode() === Mode.AUTO_COMPLETE) { if (ui.getMode() === UiMode.AUTO_COMPLETE) {
ui.revertMode(); ui.revertMode();
} }
@ -154,7 +154,7 @@ export default class PokedexScanUiHandler extends FormModalUiHandler {
maxOptions: 5, maxOptions: 5,
modalContainer: this.modalContainer, modalContainer: this.modalContainer,
}; };
ui.setOverlayMode(Mode.AUTO_COMPLETE, modalOpts); ui.setOverlayMode(UiMode.AUTO_COMPLETE, modalOpts);
} }
}); });
@ -168,7 +168,7 @@ export default class PokedexScanUiHandler extends FormModalUiHandler {
this.inputs[0].text = args[1]; this.inputs[0].text = args[1];
} }
this.submitAction = _ => { this.submitAction = _ => {
if (ui.getMode() === Mode.POKEDEX_SCAN) { if (ui.getMode() === UiMode.POKEDEX_SCAN) {
this.sanitizeInputs(); this.sanitizeInputs();
const outputName = this.reducedKeys.includes(this.inputs[0].text) ? this.inputs[0].text : ""; const outputName = this.reducedKeys.includes(this.inputs[0].text) ? this.inputs[0].text : "";
const sanitizedName = btoa(unescape(encodeURIComponent(outputName))); const sanitizedName = btoa(unescape(encodeURIComponent(outputName)));

View File

@ -16,7 +16,7 @@ import { AbilityAttr, DexAttr, loadStarterPreferences } from "#app/system/game-d
import MessageUiHandler from "#app/ui/message-ui-handler"; import MessageUiHandler from "#app/ui/message-ui-handler";
import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler"; import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler";
import { TextStyle, addTextObject } from "#app/ui/text"; import { TextStyle, addTextObject } from "#app/ui/text";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { SettingKeyboard } from "#app/system/settings/settings-keyboard"; import { SettingKeyboard } from "#app/system/settings/settings-keyboard";
import { Passive as PassiveAttr } from "#enums/passive"; import { Passive as PassiveAttr } from "#enums/passive";
import type { Species } from "#enums/species"; import type { Species } from "#enums/species";
@ -231,7 +231,7 @@ export default class PokedexUiHandler extends MessageUiHandler {
private filteredIndices: Species[]; private filteredIndices: Species[];
constructor() { constructor() {
super(Mode.POKEDEX); super(UiMode.POKEDEX);
} }
setup() { setup() {
@ -1133,7 +1133,7 @@ export default class PokedexUiHandler extends MessageUiHandler {
} else if (this.showingTray) { } else if (this.showingTray) {
if (button === Button.ACTION) { if (button === Button.ACTION) {
const formIndex = this.trayForms[this.trayCursor].formIndex; const formIndex = this.trayForms[this.trayCursor].formIndex;
ui.setOverlayMode(Mode.POKEDEX_PAGE, this.lastSpecies, { form: formIndex }, this.filteredIndices); ui.setOverlayMode(UiMode.POKEDEX_PAGE, this.lastSpecies, { form: formIndex }, this.filteredIndices);
success = true; success = true;
} else { } else {
const numberOfForms = this.trayContainers.length; const numberOfForms = this.trayContainers.length;
@ -1182,7 +1182,7 @@ export default class PokedexUiHandler extends MessageUiHandler {
} }
} else { } else {
if (button === Button.ACTION) { if (button === Button.ACTION) {
ui.setOverlayMode(Mode.POKEDEX_PAGE, this.lastSpecies, null, this.filteredIndices); ui.setOverlayMode(UiMode.POKEDEX_PAGE, this.lastSpecies, null, this.filteredIndices);
success = true; success = true;
} else { } else {
switch (button) { switch (button) {
@ -2268,15 +2268,15 @@ export default class PokedexUiHandler extends MessageUiHandler {
const ui = this.getUi(); const ui = this.getUi();
const cancel = () => { const cancel = () => {
ui.setMode(Mode.POKEDEX, "refresh"); ui.setMode(UiMode.POKEDEX, "refresh");
this.clearText(); this.clearText();
this.blockInput = false; this.blockInput = false;
}; };
ui.showText(i18next.t("pokedexUiHandler:confirmExit"), null, () => { ui.showText(i18next.t("pokedexUiHandler:confirmExit"), null, () => {
ui.setModeWithoutClear( ui.setModeWithoutClear(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
ui.setMode(Mode.POKEDEX, "refresh"); ui.setMode(UiMode.POKEDEX, "refresh");
this.clearText(); this.clearText();
this.clear(); this.clear();
ui.revertMode(); ui.revertMode();

View File

@ -1,7 +1,7 @@
import type { InputFieldConfig } from "./form-modal-ui-handler"; import type { InputFieldConfig } from "./form-modal-ui-handler";
import { FormModalUiHandler } from "./form-modal-ui-handler"; import { FormModalUiHandler } from "./form-modal-ui-handler";
import type { ModalConfig } from "./modal-ui-handler"; import type { ModalConfig } from "./modal-ui-handler";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import { TextStyle, addTextObject } from "./text"; import { TextStyle, addTextObject } from "./text";
import i18next from "i18next"; import i18next from "i18next";
import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api";
@ -101,9 +101,9 @@ export default class RegistrationFormUiHandler extends FormModalUiHandler {
// Prevent overlapping overrides on action modification // Prevent overlapping overrides on action modification
this.submitAction = originalRegistrationAction; this.submitAction = originalRegistrationAction;
this.sanitizeInputs(); this.sanitizeInputs();
globalScene.ui.setMode(Mode.LOADING, { buttonActions: [] }); globalScene.ui.setMode(UiMode.LOADING, { buttonActions: [] });
const onFail = error => { const onFail = error => {
globalScene.ui.setMode(Mode.REGISTRATION_FORM, Object.assign(config, { errorMessage: error?.trim() })); globalScene.ui.setMode(UiMode.REGISTRATION_FORM, Object.assign(config, { errorMessage: error?.trim() }));
globalScene.ui.playError(); globalScene.ui.playError();
const errorMessageFontSize = languageSettings[i18next.resolvedLanguage!]?.errorMessageFontSize; const errorMessageFontSize = languageSettings[i18next.resolvedLanguage!]?.errorMessageFontSize;
if (errorMessageFontSize) { if (errorMessageFontSize) {

View File

@ -1,7 +1,7 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { GameModes } from "../game-mode"; import { GameModes } from "../game-mode";
import { TextStyle, addTextObject } from "./text"; import { TextStyle, addTextObject } from "./text";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import { addWindow } from "./ui-theme"; import { addWindow } from "./ui-theme";
import { fixedInt, formatLargeNumber } from "#app/utils"; import { fixedInt, formatLargeNumber } from "#app/utils";
import type PokemonData from "../system/pokemon-data"; import type PokemonData from "../system/pokemon-data";
@ -40,7 +40,7 @@ export default class RunHistoryUiHandler extends MessageUiHandler {
private runContainerInitialY: number; private runContainerInitialY: number;
constructor() { constructor() {
super(Mode.RUN_HISTORY); super(UiMode.RUN_HISTORY);
} }
override setup() { override setup() {
@ -110,7 +110,7 @@ export default class RunHistoryUiHandler extends MessageUiHandler {
if (button === Button.ACTION) { if (button === Button.ACTION) {
const cursor = this.cursor + this.scrollCursor; const cursor = this.cursor + this.scrollCursor;
if (this.runs[cursor]) { if (this.runs[cursor]) {
globalScene.ui.setOverlayMode(Mode.RUN_INFO, this.runs[cursor].entryData, RunDisplayMode.RUN_HISTORY, true); globalScene.ui.setOverlayMode(UiMode.RUN_INFO, this.runs[cursor].entryData, RunDisplayMode.RUN_HISTORY, true);
} else { } else {
return false; return false;
} }

View File

@ -2,7 +2,7 @@ import { GameModes } from "../game-mode";
import UiHandler from "./ui-handler"; import UiHandler from "./ui-handler";
import type { SessionSaveData } from "../system/game-data"; import type { SessionSaveData } from "../system/game-data";
import { TextStyle, addTextObject, addBBCodeTextObject, getTextColor } from "./text"; import { TextStyle, addTextObject, addBBCodeTextObject, getTextColor } from "./text";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import { addWindow } from "./ui-theme"; import { addWindow } from "./ui-theme";
import { getPokeballAtlasKey } from "#app/data/pokeball"; import { getPokeballAtlasKey } from "#app/data/pokeball";
import { formatLargeNumber, getPlayTimeString, formatMoney, formatFancyLargeNumber } from "#app/utils"; import { formatLargeNumber, getPlayTimeString, formatMoney, formatFancyLargeNumber } from "#app/utils";
@ -69,7 +69,7 @@ export default class RunInfoUiHandler extends UiHandler {
private modifiersModule: any; private modifiersModule: any;
constructor() { constructor() {
super(Mode.RUN_INFO); super(UiMode.RUN_INFO);
} }
override async setup() { override async setup() {

View File

@ -9,7 +9,7 @@ import type PokemonData from "../system/pokemon-data";
import { isNullOrUndefined, fixedInt, getPlayTimeString, formatLargeNumber } from "#app/utils"; import { isNullOrUndefined, fixedInt, getPlayTimeString, formatLargeNumber } from "#app/utils";
import MessageUiHandler from "./message-ui-handler"; import MessageUiHandler from "./message-ui-handler";
import { TextStyle, addTextObject } from "./text"; import { TextStyle, addTextObject } from "./text";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import { addWindow } from "./ui-theme"; import { addWindow } from "./ui-theme";
import { RunDisplayMode } from "#app/ui/run-info-ui-handler"; import { RunDisplayMode } from "#app/ui/run-info-ui-handler";
@ -40,7 +40,7 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler {
private sessionSlotsContainerInitialY: number; private sessionSlotsContainerInitialY: number;
constructor() { constructor() {
super(Mode.SAVE_SLOT); super(UiMode.SAVE_SLOT);
} }
setup() { setup() {
@ -122,13 +122,13 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler {
this.saveSlotSelectCallback = null; this.saveSlotSelectCallback = null;
ui.revertMode(); ui.revertMode();
ui.showText("", 0); ui.showText("", 0);
ui.setMode(Mode.MESSAGE); ui.setMode(UiMode.MESSAGE);
originalCallback?.(cursor); originalCallback?.(cursor);
}; };
if (this.sessionSlots[cursor].hasData) { if (this.sessionSlots[cursor].hasData) {
ui.showText(i18next.t("saveSlotSelectUiHandler:overwriteData"), null, () => { ui.showText(i18next.t("saveSlotSelectUiHandler:overwriteData"), null, () => {
ui.setOverlayMode( ui.setOverlayMode(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
globalScene.gameData.deleteSession(cursor).then(response => { globalScene.gameData.deleteSession(cursor).then(response => {
if (response === false) { if (response === false) {
@ -198,7 +198,7 @@ export default class SaveSlotSelectUiHandler extends MessageUiHandler {
case Button.RIGHT: case Button.RIGHT:
if (this.sessionSlots[cursorPosition].hasData && this.sessionSlots[cursorPosition].saveData) { if (this.sessionSlots[cursorPosition].hasData && this.sessionSlots[cursorPosition].saveData) {
globalScene.ui.setOverlayMode( globalScene.ui.setOverlayMode(
Mode.RUN_INFO, UiMode.RUN_INFO,
this.sessionSlots[cursorPosition].saveData, this.sessionSlots[cursorPosition].saveData,
RunDisplayMode.SESSION_PREVIEW, RunDisplayMode.SESSION_PREVIEW,
); );

View File

@ -1,10 +1,10 @@
import type { ModalConfig } from "./modal-ui-handler"; import type { ModalConfig } from "./modal-ui-handler";
import { ModalUiHandler } from "./modal-ui-handler"; import { ModalUiHandler } from "./modal-ui-handler";
import { addTextObject, TextStyle } from "./text"; import { addTextObject, TextStyle } from "./text";
import type { Mode } from "./ui"; import type { UiMode } from "#enums/ui-mode";
export default class SessionReloadModalUiHandler extends ModalUiHandler { export default class SessionReloadModalUiHandler extends ModalUiHandler {
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
} }

View File

@ -1,5 +1,5 @@
import UiHandler from "../ui-handler"; import UiHandler from "../ui-handler";
import type { Mode } from "../ui"; import type { UiMode } from "#enums/ui-mode";
import { addWindow } from "../ui-theme"; import { addWindow } from "../ui-theme";
import { addTextObject, TextStyle } from "../text"; import { addTextObject, TextStyle } from "../text";
import { Button } from "#enums/buttons"; import { Button } from "#enums/buttons";
@ -51,7 +51,7 @@ export default abstract class AbstractBindingUiHandler extends UiHandler {
* *
* @param mode - The UI mode. * @param mode - The UI mode.
*/ */
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
} }

View File

@ -1,5 +1,5 @@
import UiHandler from "#app/ui/ui-handler"; import UiHandler from "#app/ui/ui-handler";
import type { Mode } from "#app/ui/ui"; import type { UiMode } from "#enums/ui-mode";
import type { InterfaceConfig } from "#app/inputs-controller"; import type { InterfaceConfig } from "#app/inputs-controller";
import { addWindow } from "#app/ui/ui-theme"; import { addWindow } from "#app/ui/ui-theme";
import { addTextObject, TextStyle } from "#app/ui/text"; import { addTextObject, TextStyle } from "#app/ui/text";
@ -74,7 +74,7 @@ export default abstract class AbstractControlSettingsUiHandler extends UiHandler
* *
* @param mode - The UI mode. * @param mode - The UI mode.
*/ */
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
this.rowsToDisplay = 8; this.rowsToDisplay = 8;
} }

View File

@ -1,5 +1,5 @@
import { TextStyle, addTextObject } from "#app/ui/text"; import { TextStyle, addTextObject } from "#app/ui/text";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import MessageUiHandler from "#app/ui/message-ui-handler"; import MessageUiHandler from "#app/ui/message-ui-handler";
import { addWindow } from "#app/ui/ui-theme"; import { addWindow } from "#app/ui/ui-theme";
import { ScrollBar } from "#app/ui/scroll-bar"; import { ScrollBar } from "#app/ui/scroll-bar";
@ -42,7 +42,7 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler {
protected settings: Array<Setting>; protected settings: Array<Setting>;
protected localStorageKey: string; protected localStorageKey: string;
constructor(type: SettingType, mode: Mode | null = null) { constructor(type: SettingType, mode: UiMode | null = null) {
super(mode); super(mode);
this.settings = Setting.filter(s => s.type === type && !s?.isHidden?.()); this.settings = Setting.filter(s => s.type === type && !s?.isHidden?.());
this.reloadRequired = false; this.reloadRequired = false;
@ -425,7 +425,7 @@ export default class AbstractSettingsUiHandler extends MessageUiHandler {
const confirmationMessage = const confirmationMessage =
setting.options[cursor].confirmationMessage ?? i18next.t("settings:defaultConfirmMessage"); setting.options[cursor].confirmationMessage ?? i18next.t("settings:defaultConfirmMessage");
globalScene.ui.showText(confirmationMessage, null, () => { globalScene.ui.showText(confirmationMessage, null, () => {
globalScene.ui.setOverlayMode(Mode.CONFIRM, confirmUpdateSetting, cancelUpdateSetting, null, null, 1, 750); globalScene.ui.setOverlayMode(UiMode.CONFIRM, confirmUpdateSetting, cancelUpdateSetting, null, null, 1, 750);
}); });
} else { } else {
saveSetting(); saveSetting();

View File

@ -1,12 +1,12 @@
import AbstractBindingUiHandler from "./abstract-binding-ui-handler"; import AbstractBindingUiHandler from "./abstract-binding-ui-handler";
import type { Mode } from "../ui"; import type { UiMode } from "#enums/ui-mode";
import { Device } from "#enums/devices"; import { Device } from "#enums/devices";
import { getIconWithSettingName, getKeyWithKeycode } from "#app/configs/inputs/configHandler"; import { getIconWithSettingName, getKeyWithKeycode } from "#app/configs/inputs/configHandler";
import { addTextObject, TextStyle } from "#app/ui/text"; import { addTextObject, TextStyle } from "#app/ui/text";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
export default class GamepadBindingUiHandler extends AbstractBindingUiHandler { export default class GamepadBindingUiHandler extends AbstractBindingUiHandler {
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
globalScene.input.gamepad?.on("down", this.gamepadButtonDown, this); globalScene.input.gamepad?.on("down", this.gamepadButtonDown, this);
} }

View File

@ -1,12 +1,12 @@
import AbstractBindingUiHandler from "./abstract-binding-ui-handler"; import AbstractBindingUiHandler from "./abstract-binding-ui-handler";
import type { Mode } from "../ui"; import type { UiMode } from "#enums/ui-mode";
import { getKeyWithKeycode } from "#app/configs/inputs/configHandler"; import { getKeyWithKeycode } from "#app/configs/inputs/configHandler";
import { Device } from "#enums/devices"; import { Device } from "#enums/devices";
import { addTextObject, TextStyle } from "#app/ui/text"; import { addTextObject, TextStyle } from "#app/ui/text";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
export default class KeyboardBindingUiHandler extends AbstractBindingUiHandler { export default class KeyboardBindingUiHandler extends AbstractBindingUiHandler {
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
// Listen to gamepad button down events to initiate binding. // Listen to gamepad button down events to initiate binding.
globalScene.input.keyboard?.on("keydown", this.onKeyDown, this); globalScene.input.keyboard?.on("keydown", this.onKeyDown, this);

View File

@ -1,5 +1,5 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import type { InputsIcons } from "#app/ui/settings/abstract-control-settings-ui-handler"; import type { InputsIcons } from "#app/ui/settings/abstract-control-settings-ui-handler";
import { addTextObject, setTextStyle, TextStyle } from "#app/ui/text"; import { addTextObject, setTextStyle, TextStyle } from "#app/ui/text";
import { addWindow } from "#app/ui/ui-theme"; import { addWindow } from "#app/ui/ui-theme";
@ -14,8 +14,8 @@ const RIGHT = "RIGHT";
*/ */
export class NavigationManager { export class NavigationManager {
private static instance: NavigationManager; private static instance: NavigationManager;
public modes: Mode[]; public modes: UiMode[];
public selectedMode: Mode = Mode.SETTINGS; public selectedMode: UiMode = UiMode.SETTINGS;
public navigationMenus: NavigationMenu[] = new Array<NavigationMenu>(); public navigationMenus: NavigationMenu[] = new Array<NavigationMenu>();
public labels: string[]; public labels: string[];
@ -27,11 +27,11 @@ export class NavigationManager {
*/ */
constructor() { constructor() {
this.modes = [ this.modes = [
Mode.SETTINGS, UiMode.SETTINGS,
Mode.SETTINGS_DISPLAY, UiMode.SETTINGS_DISPLAY,
Mode.SETTINGS_AUDIO, UiMode.SETTINGS_AUDIO,
Mode.SETTINGS_GAMEPAD, UiMode.SETTINGS_GAMEPAD,
Mode.SETTINGS_KEYBOARD, UiMode.SETTINGS_KEYBOARD,
]; ];
this.labels = [ this.labels = [
i18next.t("settings:general"), i18next.t("settings:general"),
@ -43,7 +43,7 @@ export class NavigationManager {
} }
public reset() { public reset() {
this.selectedMode = Mode.SETTINGS; this.selectedMode = UiMode.SETTINGS;
this.updateNavigationMenus(); this.updateNavigationMenus();
} }

View File

@ -1,8 +1,8 @@
import AbstractOptionSelectUiHandler from "../abstact-option-select-ui-handler"; import AbstractOptionSelectUiHandler from "../abstact-option-select-ui-handler";
import { Mode } from "../ui"; import { UiMode } from "#enums/ui-mode";
export default class OptionSelectUiHandler extends AbstractOptionSelectUiHandler { export default class OptionSelectUiHandler extends AbstractOptionSelectUiHandler {
constructor(mode: Mode = Mode.OPTION_SELECT) { constructor(mode: UiMode = UiMode.OPTION_SELECT) {
super(mode); super(mode);
} }

View File

@ -1,4 +1,4 @@
import type { Mode } from "../ui"; import type { UiMode } from "#enums/ui-mode";
import AbstractSettingsUiHandler from "./abstract-settings-ui-handler"; import AbstractSettingsUiHandler from "./abstract-settings-ui-handler";
import { SettingType } from "#app/system/settings/settings"; import { SettingType } from "#app/system/settings/settings";
("#app/inputs-controller"); ("#app/inputs-controller");
@ -9,7 +9,7 @@ export default class SettingsAudioUiHandler extends AbstractSettingsUiHandler {
* *
* @param mode - The UI mode, optional. * @param mode - The UI mode, optional.
*/ */
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(SettingType.AUDIO, mode); super(SettingType.AUDIO, mode);
this.title = "Audio"; this.title = "Audio";
this.localStorageKey = "settings"; this.localStorageKey = "settings";

View File

@ -1,4 +1,4 @@
import type { Mode } from "../ui"; import type { UiMode } from "#enums/ui-mode";
import AbstractSettingsUiHandler from "./abstract-settings-ui-handler"; import AbstractSettingsUiHandler from "./abstract-settings-ui-handler";
import { SettingKeys, SettingType } from "#app/system/settings/settings"; import { SettingKeys, SettingType } from "#app/system/settings/settings";
("#app/inputs-controller"); ("#app/inputs-controller");
@ -9,7 +9,7 @@ export default class SettingsDisplayUiHandler extends AbstractSettingsUiHandler
* *
* @param mode - The UI mode, optional. * @param mode - The UI mode, optional.
*/ */
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(SettingType.DISPLAY, mode); super(SettingType.DISPLAY, mode);
this.title = "Display"; this.title = "Display";

View File

@ -1,5 +1,5 @@
import { addTextObject, TextStyle } from "../text"; import { addTextObject, TextStyle } from "../text";
import type { Mode } from "../ui"; import type { UiMode } from "#enums/ui-mode";
import { import {
setSettingGamepad, setSettingGamepad,
SettingGamepad, SettingGamepad,
@ -29,7 +29,7 @@ export default class SettingsGamepadUiHandler extends AbstractControlSettingsUiH
* *
* @param mode - The UI mode, optional. * @param mode - The UI mode, optional.
*/ */
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
this.titleSelected = "Gamepad"; this.titleSelected = "Gamepad";
this.setting = SettingGamepad; this.setting = SettingGamepad;

View File

@ -1,4 +1,4 @@
import { Mode } from "../ui"; import { UiMode } from "#enums/ui-mode";
import cfg_keyboard_qwerty from "#app/configs/inputs/cfg_keyboard_qwerty"; import cfg_keyboard_qwerty from "#app/configs/inputs/cfg_keyboard_qwerty";
import { import {
setSettingKeyboard, setSettingKeyboard,
@ -28,7 +28,7 @@ export default class SettingsKeyboardUiHandler extends AbstractControlSettingsUi
* *
* @param mode - The UI mode, optional. * @param mode - The UI mode, optional.
*/ */
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
this.titleSelected = "Keyboard"; this.titleSelected = "Keyboard";
this.setting = SettingKeyboard; this.setting = SettingKeyboard;
@ -84,7 +84,7 @@ export default class SettingsKeyboardUiHandler extends AbstractControlSettingsUi
* Handle the home key press event. * Handle the home key press event.
*/ */
onHomeDown(): void { onHomeDown(): void {
if (![Mode.SETTINGS_KEYBOARD, Mode.SETTINGS_GAMEPAD].includes(globalScene.ui.getMode())) { if (![UiMode.SETTINGS_KEYBOARD, UiMode.SETTINGS_GAMEPAD].includes(globalScene.ui.getMode())) {
return; return;
} }
globalScene.gameData.resetMappingToFactory(); globalScene.gameData.resetMappingToFactory();
@ -95,7 +95,7 @@ export default class SettingsKeyboardUiHandler extends AbstractControlSettingsUi
* Handle the delete key press event. * Handle the delete key press event.
*/ */
onDeleteDown(): void { onDeleteDown(): void {
if (globalScene.ui.getMode() !== Mode.SETTINGS_KEYBOARD) { if (globalScene.ui.getMode() !== UiMode.SETTINGS_KEYBOARD) {
return; return;
} }
const cursor = this.cursor + this.scrollCursor; // Calculate the absolute cursor position. const cursor = this.cursor + this.scrollCursor; // Calculate the absolute cursor position.

View File

@ -1,5 +1,5 @@
import { SettingType } from "../../system/settings/settings"; import { SettingType } from "../../system/settings/settings";
import type { Mode } from "../ui"; import type { UiMode } from "#enums/ui-mode";
import AbstractSettingsUiHandler from "./abstract-settings-ui-handler"; import AbstractSettingsUiHandler from "./abstract-settings-ui-handler";
export default class SettingsUiHandler extends AbstractSettingsUiHandler { export default class SettingsUiHandler extends AbstractSettingsUiHandler {
@ -8,7 +8,7 @@ export default class SettingsUiHandler extends AbstractSettingsUiHandler {
* *
* @param mode - The UI mode, optional. * @param mode - The UI mode, optional.
*/ */
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(SettingType.GENERAL, mode); super(SettingType.GENERAL, mode);
this.title = "General"; this.title = "General";
this.localStorageKey = "settings"; this.localStorageKey = "settings";

View File

@ -37,7 +37,7 @@ import MessageUiHandler from "#app/ui/message-ui-handler";
import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler"; import PokemonIconAnimHandler, { PokemonIconAnimMode } from "#app/ui/pokemon-icon-anim-handler";
import { StatsContainer } from "#app/ui/stats-container"; import { StatsContainer } from "#app/ui/stats-container";
import { TextStyle, addBBCodeTextObject, addTextObject } from "#app/ui/text"; import { TextStyle, addBBCodeTextObject, addTextObject } from "#app/ui/text";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { addWindow } from "#app/ui/ui-theme"; import { addWindow } from "#app/ui/ui-theme";
import { Egg } from "#app/data/egg"; import { Egg } from "#app/data/egg";
import Overrides from "#app/overrides"; import Overrides from "#app/overrides";
@ -375,7 +375,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
protected blockInput = false; protected blockInput = false;
constructor() { constructor() {
super(Mode.STARTER_SELECT); super(UiMode.STARTER_SELECT);
} }
setup() { setup() {
@ -1888,7 +1888,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
{ {
label: i18next.t("starterSelectUiHandler:addToParty"), label: i18next.t("starterSelectUiHandler:addToParty"),
handler: () => { handler: () => {
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
const isOverValueLimit = this.tryUpdateValue( const isOverValueLimit = this.tryUpdateValue(
globalScene.gameData.getSpeciesStarterValue(this.lastSpecies.speciesId), globalScene.gameData.getSpeciesStarterValue(this.lastSpecies.speciesId),
true, true,
@ -1921,7 +1921,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
label: i18next.t("starterSelectUiHandler:removeFromParty"), label: i18next.t("starterSelectUiHandler:removeFromParty"),
handler: () => { handler: () => {
this.popStarter(removeIndex); this.popStarter(removeIndex);
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
return true; return true;
}, },
}, },
@ -1934,7 +1934,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
label: i18next.t("starterSelectUiHandler:toggleIVs"), label: i18next.t("starterSelectUiHandler:toggleIVs"),
handler: () => { handler: () => {
this.toggleStatsMode(); this.toggleStatsMode();
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
return true; return true;
}, },
}, },
@ -1944,18 +1944,18 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
const showSwapOptions = (moveset: StarterMoveset) => { const showSwapOptions = (moveset: StarterMoveset) => {
this.blockInput = true; this.blockInput = true;
ui.setMode(Mode.STARTER_SELECT).then(() => { ui.setMode(UiMode.STARTER_SELECT).then(() => {
ui.showText(i18next.t("starterSelectUiHandler:selectMoveSwapOut"), null, () => { ui.showText(i18next.t("starterSelectUiHandler:selectMoveSwapOut"), null, () => {
this.moveInfoOverlay.show(allMoves[moveset[0]]); this.moveInfoOverlay.show(allMoves[moveset[0]]);
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: moveset options: moveset
.map((m: Moves, i: number) => { .map((m: Moves, i: number) => {
const option: OptionSelectItem = { const option: OptionSelectItem = {
label: allMoves[m].name, label: allMoves[m].name,
handler: () => { handler: () => {
this.blockInput = true; this.blockInput = true;
ui.setMode(Mode.STARTER_SELECT).then(() => { ui.setMode(UiMode.STARTER_SELECT).then(() => {
ui.showText( ui.showText(
`${i18next.t("starterSelectUiHandler:selectMoveSwapWith")} ${allMoves[m].name}.`, `${i18next.t("starterSelectUiHandler:selectMoveSwapWith")} ${allMoves[m].name}.`,
null, null,
@ -1963,7 +1963,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
const possibleMoves = this.speciesStarterMoves.filter((sm: Moves) => sm !== m); const possibleMoves = this.speciesStarterMoves.filter((sm: Moves) => sm !== m);
this.moveInfoOverlay.show(allMoves[possibleMoves[0]]); this.moveInfoOverlay.show(allMoves[possibleMoves[0]]);
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: possibleMoves options: possibleMoves
.map(sm => { .map(sm => {
// make an option for each available starter move // make an option for each available starter move
@ -2011,7 +2011,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
handler: () => { handler: () => {
this.moveInfoOverlay.clear(); this.moveInfoOverlay.clear();
this.clearText(); this.clearText();
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
return true; return true;
}, },
onHover: () => { onHover: () => {
@ -2039,10 +2039,10 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
const showNatureOptions = () => { const showNatureOptions = () => {
this.blockInput = true; this.blockInput = true;
ui.setMode(Mode.STARTER_SELECT).then(() => { ui.setMode(UiMode.STARTER_SELECT).then(() => {
ui.showText(i18next.t("starterSelectUiHandler:selectNature"), null, () => { ui.showText(i18next.t("starterSelectUiHandler:selectNature"), null, () => {
const natures = globalScene.gameData.getNaturesForAttr(this.speciesStarterDexEntry?.natureAttr); const natures = globalScene.gameData.getNaturesForAttr(this.speciesStarterDexEntry?.natureAttr);
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: natures options: natures
.map((n: Nature, _i: number) => { .map((n: Nature, _i: number) => {
const option: OptionSelectItem = { const option: OptionSelectItem = {
@ -2054,7 +2054,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
} }
starterAttributes.nature = n; starterAttributes.nature = n;
this.clearText(); this.clearText();
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
// set nature for starter // set nature for starter
this.setSpeciesDetails(this.lastSpecies, { this.setSpeciesDetails(this.lastSpecies, {
natureIndex: n, natureIndex: n,
@ -2069,7 +2069,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
label: i18next.t("menu:cancel"), label: i18next.t("menu:cancel"),
handler: () => { handler: () => {
this.clearText(); this.clearText();
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
this.blockInput = false; this.blockInput = false;
return true; return true;
}, },
@ -2097,7 +2097,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
label: i18next.t("starterSelectUiHandler:enablePassive"), label: i18next.t("starterSelectUiHandler:enablePassive"),
handler: () => { handler: () => {
starterData.passiveAttr |= PassiveAttr.ENABLED; starterData.passiveAttr |= PassiveAttr.ENABLED;
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
this.setSpeciesDetails(this.lastSpecies); this.setSpeciesDetails(this.lastSpecies);
return true; return true;
}, },
@ -2107,7 +2107,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
label: i18next.t("starterSelectUiHandler:disablePassive"), label: i18next.t("starterSelectUiHandler:disablePassive"),
handler: () => { handler: () => {
starterData.passiveAttr ^= PassiveAttr.ENABLED; starterData.passiveAttr ^= PassiveAttr.ENABLED;
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
this.setSpeciesDetails(this.lastSpecies); this.setSpeciesDetails(this.lastSpecies);
return true; return true;
}, },
@ -2125,7 +2125,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
if (starterContainer) { if (starterContainer) {
starterContainer.favoriteIcon.setVisible(starterAttributes.favorite); starterContainer.favoriteIcon.setVisible(starterAttributes.favorite);
} }
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
return true; return true;
}, },
}); });
@ -2138,7 +2138,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
if (starterContainer) { if (starterContainer) {
starterContainer.favoriteIcon.setVisible(starterAttributes.favorite); starterContainer.favoriteIcon.setVisible(starterAttributes.favorite);
} }
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
return true; return true;
}, },
}); });
@ -2150,7 +2150,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
let nickname = starterAttributes.nickname ? String(starterAttributes.nickname) : ""; let nickname = starterAttributes.nickname ? String(starterAttributes.nickname) : "";
nickname = decodeURIComponent(escape(atob(nickname))); nickname = decodeURIComponent(escape(atob(nickname)));
ui.setModeWithoutClear( ui.setModeWithoutClear(
Mode.RENAME_POKEMON, UiMode.RENAME_POKEMON,
{ {
buttonActions: [ buttonActions: [
(sanitizedName: string) => { (sanitizedName: string) => {
@ -2162,10 +2162,10 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
} else { } else {
this.pokemonNameText.setText(this.lastSpecies.name); this.pokemonNameText.setText(this.lastSpecies.name);
} }
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
}, },
() => { () => {
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
}, },
], ],
}, },
@ -2197,7 +2197,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
return globalScene.reset(true); return globalScene.reset(true);
} }
}); });
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
this.setSpeciesDetails(this.lastSpecies); this.setSpeciesDetails(this.lastSpecies);
globalScene.playSound("se/buy"); globalScene.playSound("se/buy");
@ -2238,7 +2238,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
} }
}); });
this.tryUpdateValue(0); this.tryUpdateValue(0);
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
globalScene.playSound("se/buy"); globalScene.playSound("se/buy");
// update the value label and icon/animation for available upgrade // update the value label and icon/animation for available upgrade
@ -2290,7 +2290,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
return globalScene.reset(true); return globalScene.reset(true);
} }
}); });
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
globalScene.playSound("se/buy"); globalScene.playSound("se/buy");
// update the icon/animation for available upgrade // update the icon/animation for available upgrade
@ -2308,11 +2308,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
options.push({ options.push({
label: i18next.t("menu:cancel"), label: i18next.t("menu:cancel"),
handler: () => { handler: () => {
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
return true; return true;
}, },
}); });
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: options, options: options,
yOffset: 47, yOffset: 47,
}); });
@ -2320,14 +2320,14 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
options.push({ options.push({
label: i18next.t("menuUiHandler:POKEDEX"), label: i18next.t("menuUiHandler:POKEDEX"),
handler: () => { handler: () => {
ui.setMode(Mode.STARTER_SELECT).then(() => { ui.setMode(UiMode.STARTER_SELECT).then(() => {
const attributes = { const attributes = {
shiny: starterAttributes.shiny, shiny: starterAttributes.shiny,
variant: starterAttributes.variant, variant: starterAttributes.variant,
form: starterAttributes.form, form: starterAttributes.form,
female: starterAttributes.female, female: starterAttributes.female,
}; };
ui.setOverlayMode(Mode.POKEDEX_PAGE, this.lastSpecies, attributes); ui.setOverlayMode(UiMode.POKEDEX_PAGE, this.lastSpecies, attributes);
}); });
return true; return true;
}, },
@ -2336,7 +2336,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
options.push({ options.push({
label: i18next.t("starterSelectUiHandler:useCandies"), label: i18next.t("starterSelectUiHandler:useCandies"),
handler: () => { handler: () => {
ui.setMode(Mode.STARTER_SELECT).then(() => showUseCandies()); ui.setMode(UiMode.STARTER_SELECT).then(() => showUseCandies());
return true; return true;
}, },
}); });
@ -2344,11 +2344,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
options.push({ options.push({
label: i18next.t("menu:cancel"), label: i18next.t("menu:cancel"),
handler: () => { handler: () => {
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
return true; return true;
}, },
}); });
ui.setModeWithoutClear(Mode.OPTION_SELECT, { ui.setModeWithoutClear(UiMode.OPTION_SELECT, {
options: options, options: options,
yOffset: 47, yOffset: 47,
}); });
@ -4281,15 +4281,15 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
const ui = this.getUi(); const ui = this.getUi();
const cancel = () => { const cancel = () => {
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
this.clearText(); this.clearText();
this.blockInput = false; this.blockInput = false;
}; };
ui.showText(i18next.t("starterSelectUiHandler:confirmExit"), null, () => { ui.showText(i18next.t("starterSelectUiHandler:confirmExit"), null, () => {
ui.setModeWithoutClear( ui.setModeWithoutClear(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
globalScene.clearPhaseQueue(); globalScene.clearPhaseQueue();
if (globalScene.gameMode.isChallenge) { if (globalScene.gameMode.isChallenge) {
globalScene.pushPhase(new SelectChallengePhase()); globalScene.pushPhase(new SelectChallengePhase());
@ -4318,7 +4318,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
const ui = this.getUi(); const ui = this.getUi();
const cancel = () => { const cancel = () => {
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
if (!manualTrigger) { if (!manualTrigger) {
this.popStarter(this.starterSpecies.length - 1); this.popStarter(this.starterSpecies.length - 1);
} }
@ -4330,11 +4330,11 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
if (canStart) { if (canStart) {
ui.showText(i18next.t("starterSelectUiHandler:confirmStartTeam"), null, () => { ui.showText(i18next.t("starterSelectUiHandler:confirmStartTeam"), null, () => {
ui.setModeWithoutClear( ui.setModeWithoutClear(
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
const startRun = () => { const startRun = () => {
globalScene.money = globalScene.gameMode.getStartingMoney(); globalScene.money = globalScene.gameMode.getStartingMoney();
ui.setMode(Mode.STARTER_SELECT); ui.setMode(UiMode.STARTER_SELECT);
const thisObj = this; const thisObj = this;
const originalStarterSelectCallback = this.starterSelectCallback; const originalStarterSelectCallback = this.starterSelectCallback;
this.starterSelectCallback = null; this.starterSelectCallback = null;

View File

@ -1,6 +1,6 @@
import { starterColors } from "#app/battle-scene"; import { starterColors } from "#app/battle-scene";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import UiHandler from "#app/ui/ui-handler"; import UiHandler from "#app/ui/ui-handler";
import { import {
getLocalizedSpriteKey, getLocalizedSpriteKey,
@ -128,7 +128,7 @@ export default class SummaryUiHandler extends UiHandler {
private selectCallback: Function | null; private selectCallback: Function | null;
constructor() { constructor() {
super(Mode.SUMMARY); super(UiMode.SUMMARY);
} }
setup() { setup() {
@ -510,7 +510,7 @@ export default class SummaryUiHandler extends UiHandler {
} }
const ui = this.getUi(); const ui = this.getUi();
const fromPartyMode = ui.handlers[Mode.PARTY].active; const fromPartyMode = ui.handlers[UiMode.PARTY].active;
let success = false; let success = false;
let error = false; let error = false;
@ -610,9 +610,9 @@ export default class SummaryUiHandler extends UiHandler {
} }
if (!fromPartyMode) { if (!fromPartyMode) {
ui.setMode(Mode.MESSAGE); ui.setMode(UiMode.MESSAGE);
} else { } else {
ui.setMode(Mode.PARTY); ui.setMode(UiMode.PARTY);
} }
} }
success = true; success = true;

View File

@ -1,5 +1,5 @@
import { BattlerIndex } from "../battle"; import { BattlerIndex } from "../battle";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import UiHandler from "./ui-handler"; import UiHandler from "./ui-handler";
import { isNullOrUndefined, fixedInt } from "#app/utils"; import { isNullOrUndefined, fixedInt } from "#app/utils";
import { getMoveTargets } from "../data/moves/move"; import { getMoveTargets } from "../data/moves/move";
@ -27,7 +27,7 @@ export default class TargetSelectUiHandler extends UiHandler {
private targetBattleInfoMoveTween: Phaser.Tweens.Tween[] = []; private targetBattleInfoMoveTween: Phaser.Tweens.Tween[] = [];
constructor() { constructor() {
super(Mode.TARGET_SELECT); super(UiMode.TARGET_SELECT);
this.cursor = -1; this.cursor = -1;
} }

View File

@ -5,7 +5,7 @@ import i18next from "i18next";
import type { PlayerPokemon } from "#app/field/pokemon"; import type { PlayerPokemon } from "#app/field/pokemon";
import type { OptionSelectItem } from "./abstact-option-select-ui-handler"; import type { OptionSelectItem } from "./abstact-option-select-ui-handler";
import { isNullOrUndefined } from "#app/utils"; import { isNullOrUndefined } from "#app/utils";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
export default class TestDialogueUiHandler extends FormModalUiHandler { export default class TestDialogueUiHandler extends FormModalUiHandler {
keys: string[]; keys: string[];
@ -88,7 +88,7 @@ export default class TestDialogueUiHandler extends FormModalUiHandler {
input.on("keydown", (inputObject, evt: KeyboardEvent) => { input.on("keydown", (inputObject, evt: KeyboardEvent) => {
if ( if (
["escape", "space"].some(v => v === evt.key.toLowerCase() || v === evt.code.toLowerCase()) && ["escape", "space"].some(v => v === evt.key.toLowerCase() || v === evt.code.toLowerCase()) &&
ui.getMode() === Mode.AUTO_COMPLETE ui.getMode() === UiMode.AUTO_COMPLETE
) { ) {
// Delete autocomplete list and recovery focus. // Delete autocomplete list and recovery focus.
inputObject.on("blur", () => inputObject.node.focus(), { once: true }); inputObject.on("blur", () => inputObject.node.focus(), { once: true });
@ -98,7 +98,7 @@ export default class TestDialogueUiHandler extends FormModalUiHandler {
input.on("textchange", (inputObject, evt: InputEvent) => { input.on("textchange", (inputObject, evt: InputEvent) => {
// Delete autocomplete. // Delete autocomplete.
if (ui.getMode() === Mode.AUTO_COMPLETE) { if (ui.getMode() === UiMode.AUTO_COMPLETE) {
ui.revertMode(); ui.revertMode();
} }
@ -133,7 +133,7 @@ export default class TestDialogueUiHandler extends FormModalUiHandler {
maxOptions: 5, maxOptions: 5,
modalContainer: this.modalContainer, modalContainer: this.modalContainer,
}; };
ui.setOverlayMode(Mode.AUTO_COMPLETE, modalOpts); ui.setOverlayMode(UiMode.AUTO_COMPLETE, modalOpts);
} }
}); });
@ -147,7 +147,7 @@ export default class TestDialogueUiHandler extends FormModalUiHandler {
this.inputs[0].text = args[1]; this.inputs[0].text = args[1];
} }
this.submitAction = _ => { this.submitAction = _ => {
if (ui.getMode() === Mode.TEST_DIALOGUE) { if (ui.getMode() === UiMode.TEST_DIALOGUE) {
this.sanitizeInputs(); this.sanitizeInputs();
const sanitizedName = btoa(unescape(encodeURIComponent(this.inputs[0].text))); const sanitizedName = btoa(unescape(encodeURIComponent(this.inputs[0].text)));
config.buttonActions[0](sanitizedName); config.buttonActions[0](sanitizedName);

View File

@ -1,5 +1,5 @@
import OptionSelectUiHandler from "./settings/option-select-ui-handler"; import OptionSelectUiHandler from "./settings/option-select-ui-handler";
import { Mode } from "./ui"; import { UiMode } from "#enums/ui-mode";
import { fixedInt, randInt, randItem } from "#app/utils"; import { fixedInt, randInt, randItem } from "#app/utils";
import { TextStyle, addTextObject } from "./text"; import { TextStyle, addTextObject } from "./text";
import { getSplashMessages } from "../data/splash-messages"; import { getSplashMessages } from "../data/splash-messages";
@ -26,7 +26,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler {
private titleStatsTimer: NodeJS.Timeout | null; private titleStatsTimer: NodeJS.Timeout | null;
constructor(mode: Mode = Mode.TITLE) { constructor(mode: UiMode = UiMode.TITLE) {
super(mode); super(mode);
} }

View File

@ -1,7 +1,7 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { TextStyle } from "./text"; import type { TextStyle } from "./text";
import { getTextColor } from "./text"; import { getTextColor } from "./text";
import type { Mode } from "./ui"; import type { UiMode } from "#enums/ui-mode";
import type { Button } from "#enums/buttons"; import type { Button } from "#enums/buttons";
/** /**
@ -15,7 +15,7 @@ export default abstract class UiHandler {
/** /**
* @param mode The mode of the UI element. These should be unique. * @param mode The mode of the UI element. These should be unique.
*/ */
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
this.mode = mode; this.mode = mode;
} }

View File

@ -57,102 +57,55 @@ import MysteryEncounterUiHandler from "./mystery-encounter-ui-handler";
import PokedexScanUiHandler from "./pokedex-scan-ui-handler"; import PokedexScanUiHandler from "./pokedex-scan-ui-handler";
import PokedexPageUiHandler from "./pokedex-page-ui-handler"; import PokedexPageUiHandler from "./pokedex-page-ui-handler";
import { NavigationManager } from "./settings/navigationMenu"; import { NavigationManager } from "./settings/navigationMenu";
import { UiMode } from "#enums/ui-mode";
export enum Mode {
MESSAGE,
TITLE,
COMMAND,
FIGHT,
BALL,
TARGET_SELECT,
MODIFIER_SELECT,
SAVE_SLOT,
PARTY,
SUMMARY,
STARTER_SELECT,
EVOLUTION_SCENE,
EGG_HATCH_SCENE,
EGG_HATCH_SUMMARY,
CONFIRM,
OPTION_SELECT,
MENU,
MENU_OPTION_SELECT,
SETTINGS,
SETTINGS_DISPLAY,
SETTINGS_AUDIO,
SETTINGS_GAMEPAD,
GAMEPAD_BINDING,
SETTINGS_KEYBOARD,
KEYBOARD_BINDING,
ACHIEVEMENTS,
GAME_STATS,
EGG_LIST,
EGG_GACHA,
POKEDEX,
POKEDEX_SCAN,
POKEDEX_PAGE,
LOGIN_FORM,
REGISTRATION_FORM,
LOADING,
SESSION_RELOAD,
UNAVAILABLE,
CHALLENGE_SELECT,
RENAME_POKEMON,
RUN_HISTORY,
RUN_INFO,
TEST_DIALOGUE,
AUTO_COMPLETE,
ADMIN,
MYSTERY_ENCOUNTER,
}
const transitionModes = [ const transitionModes = [
Mode.SAVE_SLOT, UiMode.SAVE_SLOT,
Mode.PARTY, UiMode.PARTY,
Mode.SUMMARY, UiMode.SUMMARY,
Mode.STARTER_SELECT, UiMode.STARTER_SELECT,
Mode.EVOLUTION_SCENE, UiMode.EVOLUTION_SCENE,
Mode.EGG_HATCH_SCENE, UiMode.EGG_HATCH_SCENE,
Mode.EGG_LIST, UiMode.EGG_LIST,
Mode.EGG_GACHA, UiMode.EGG_GACHA,
Mode.POKEDEX, UiMode.POKEDEX,
Mode.POKEDEX_PAGE, UiMode.POKEDEX_PAGE,
Mode.CHALLENGE_SELECT, UiMode.CHALLENGE_SELECT,
Mode.RUN_HISTORY, UiMode.RUN_HISTORY,
]; ];
const noTransitionModes = [ const noTransitionModes = [
Mode.TITLE, UiMode.TITLE,
Mode.CONFIRM, UiMode.CONFIRM,
Mode.OPTION_SELECT, UiMode.OPTION_SELECT,
Mode.MENU, UiMode.MENU,
Mode.MENU_OPTION_SELECT, UiMode.MENU_OPTION_SELECT,
Mode.GAMEPAD_BINDING, UiMode.GAMEPAD_BINDING,
Mode.KEYBOARD_BINDING, UiMode.KEYBOARD_BINDING,
Mode.SETTINGS, UiMode.SETTINGS,
Mode.SETTINGS_AUDIO, UiMode.SETTINGS_AUDIO,
Mode.SETTINGS_DISPLAY, UiMode.SETTINGS_DISPLAY,
Mode.SETTINGS_GAMEPAD, UiMode.SETTINGS_GAMEPAD,
Mode.SETTINGS_KEYBOARD, UiMode.SETTINGS_KEYBOARD,
Mode.ACHIEVEMENTS, UiMode.ACHIEVEMENTS,
Mode.GAME_STATS, UiMode.GAME_STATS,
Mode.POKEDEX_SCAN, UiMode.POKEDEX_SCAN,
Mode.LOGIN_FORM, UiMode.LOGIN_FORM,
Mode.REGISTRATION_FORM, UiMode.REGISTRATION_FORM,
Mode.LOADING, UiMode.LOADING,
Mode.SESSION_RELOAD, UiMode.SESSION_RELOAD,
Mode.UNAVAILABLE, UiMode.UNAVAILABLE,
Mode.RENAME_POKEMON, UiMode.RENAME_POKEMON,
Mode.TEST_DIALOGUE, UiMode.TEST_DIALOGUE,
Mode.AUTO_COMPLETE, UiMode.AUTO_COMPLETE,
Mode.ADMIN, UiMode.ADMIN,
Mode.MYSTERY_ENCOUNTER, UiMode.MYSTERY_ENCOUNTER,
Mode.RUN_INFO, UiMode.RUN_INFO,
]; ];
export default class UI extends Phaser.GameObjects.Container { export default class UI extends Phaser.GameObjects.Container {
private mode: Mode; private mode: UiMode;
private modeChain: Mode[]; private modeChain: UiMode[];
public handlers: UiHandler[]; public handlers: UiHandler[];
private overlay: Phaser.GameObjects.Rectangle; private overlay: Phaser.GameObjects.Rectangle;
public achvBar: AchvBar; public achvBar: AchvBar;
@ -169,7 +122,7 @@ export default class UI extends Phaser.GameObjects.Container {
constructor() { constructor() {
super(globalScene, 0, globalScene.game.canvas.height / 6); super(globalScene, 0, globalScene.game.canvas.height / 6);
this.mode = Mode.MESSAGE; this.mode = UiMode.MESSAGE;
this.modeChain = []; this.modeChain = [];
this.handlers = [ this.handlers = [
new BattleMessageUiHandler(), new BattleMessageUiHandler(),
@ -189,7 +142,7 @@ export default class UI extends Phaser.GameObjects.Container {
new ConfirmUiHandler(), new ConfirmUiHandler(),
new OptionSelectUiHandler(), new OptionSelectUiHandler(),
new MenuUiHandler(), new MenuUiHandler(),
new OptionSelectUiHandler(Mode.MENU_OPTION_SELECT), new OptionSelectUiHandler(UiMode.MENU_OPTION_SELECT),
// settings // settings
new SettingsUiHandler(), new SettingsUiHandler(),
new SettingsDisplayUiHandler(), new SettingsDisplayUiHandler(),
@ -203,7 +156,7 @@ export default class UI extends Phaser.GameObjects.Container {
new EggListUiHandler(), new EggListUiHandler(),
new EggGachaUiHandler(), new EggGachaUiHandler(),
new PokedexUiHandler(), new PokedexUiHandler(),
new PokedexScanUiHandler(Mode.TEST_DIALOGUE), new PokedexScanUiHandler(UiMode.TEST_DIALOGUE),
new PokedexPageUiHandler(), new PokedexPageUiHandler(),
new LoginFormUiHandler(), new LoginFormUiHandler(),
new RegistrationFormUiHandler(), new RegistrationFormUiHandler(),
@ -214,7 +167,7 @@ export default class UI extends Phaser.GameObjects.Container {
new RenameFormUiHandler(), new RenameFormUiHandler(),
new RunHistoryUiHandler(), new RunHistoryUiHandler(),
new RunInfoUiHandler(), new RunInfoUiHandler(),
new TestDialogueUiHandler(Mode.TEST_DIALOGUE), new TestDialogueUiHandler(UiMode.TEST_DIALOGUE),
new AutoCompleteUiHandler(), new AutoCompleteUiHandler(),
new AdminUiHandler(), new AdminUiHandler(),
new MysteryEncounterUiHandler(), new MysteryEncounterUiHandler(),
@ -222,7 +175,7 @@ export default class UI extends Phaser.GameObjects.Container {
} }
setup(): void { setup(): void {
this.setName(`ui-${Mode[this.mode]}`); this.setName(`ui-${UiMode[this.mode]}`);
for (const handler of this.handlers) { for (const handler of this.handlers) {
handler.setup(); handler.setup();
} }
@ -279,7 +232,7 @@ export default class UI extends Phaser.GameObjects.Container {
} }
getMessageHandler(): BattleMessageUiHandler { getMessageHandler(): BattleMessageUiHandler {
return this.handlers[Mode.MESSAGE] as BattleMessageUiHandler; return this.handlers[UiMode.MESSAGE] as BattleMessageUiHandler;
} }
processInfoButton(pressed: boolean) { processInfoButton(pressed: boolean) {
@ -287,7 +240,7 @@ export default class UI extends Phaser.GameObjects.Container {
return false; return false;
} }
if ([Mode.CONFIRM, Mode.COMMAND, Mode.FIGHT, Mode.MESSAGE, Mode.TARGET_SELECT].includes(this.mode)) { if ([UiMode.CONFIRM, UiMode.COMMAND, UiMode.FIGHT, UiMode.MESSAGE, UiMode.TARGET_SELECT].includes(this.mode)) {
globalScene?.processInfoButton(pressed); globalScene?.processInfoButton(pressed);
return true; return true;
} }
@ -564,7 +517,7 @@ export default class UI extends Phaser.GameObjects.Container {
} }
private setModeInternal( private setModeInternal(
mode: Mode, mode: UiMode,
clear: boolean, clear: boolean,
forceTransition: boolean, forceTransition: boolean,
chainMode: boolean, chainMode: boolean,
@ -587,7 +540,7 @@ export default class UI extends Phaser.GameObjects.Container {
this.mode = mode; this.mode = mode;
const touchControls = document?.getElementById("touchControls"); const touchControls = document?.getElementById("touchControls");
if (touchControls) { if (touchControls) {
touchControls.dataset.uiMode = Mode[mode]; touchControls.dataset.uiMode = UiMode[mode];
} }
this.getHandler().show(args); this.getHandler().show(args);
} }
@ -612,23 +565,23 @@ export default class UI extends Phaser.GameObjects.Container {
}); });
} }
getMode(): Mode { getMode(): UiMode {
return this.mode; return this.mode;
} }
setMode(mode: Mode, ...args: any[]): Promise<void> { setMode(mode: UiMode, ...args: any[]): Promise<void> {
return this.setModeInternal(mode, true, false, false, args); return this.setModeInternal(mode, true, false, false, args);
} }
setModeForceTransition(mode: Mode, ...args: any[]): Promise<void> { setModeForceTransition(mode: UiMode, ...args: any[]): Promise<void> {
return this.setModeInternal(mode, true, true, false, args); return this.setModeInternal(mode, true, true, false, args);
} }
setModeWithoutClear(mode: Mode, ...args: any[]): Promise<void> { setModeWithoutClear(mode: UiMode, ...args: any[]): Promise<void> {
return this.setModeInternal(mode, false, false, false, args); return this.setModeInternal(mode, false, false, false, args);
} }
setOverlayMode(mode: Mode, ...args: any[]): Promise<void> { setOverlayMode(mode: UiMode, ...args: any[]): Promise<void> {
return this.setModeInternal(mode, false, false, true, args); return this.setModeInternal(mode, false, false, true, args);
} }
@ -651,7 +604,7 @@ export default class UI extends Phaser.GameObjects.Container {
globalScene.updateGameInfo(); globalScene.updateGameInfo();
const touchControls = document.getElementById("touchControls"); const touchControls = document.getElementById("touchControls");
if (touchControls) { if (touchControls) {
touchControls.dataset.uiMode = Mode[this.mode]; touchControls.dataset.uiMode = UiMode[this.mode];
} }
resolve(true); resolve(true);
}; };
@ -678,7 +631,7 @@ export default class UI extends Phaser.GameObjects.Container {
}); });
} }
public getModeChain(): Mode[] { public getModeChain(): UiMode[] {
return this.modeChain; return this.modeChain;
} }

View File

@ -1,7 +1,7 @@
import type { ModalConfig } from "./modal-ui-handler"; import type { ModalConfig } from "./modal-ui-handler";
import { ModalUiHandler } from "./modal-ui-handler"; import { ModalUiHandler } from "./modal-ui-handler";
import { addTextObject, TextStyle } from "./text"; import { addTextObject, TextStyle } from "./text";
import type { Mode } from "./ui"; import type { UiMode } from "#enums/ui-mode";
import { updateUserInfo } from "#app/account"; import { updateUserInfo } from "#app/account";
import { removeCookie, sessionIdKey } from "#app/utils"; import { removeCookie, sessionIdKey } from "#app/utils";
import i18next from "i18next"; import i18next from "i18next";
@ -17,7 +17,7 @@ export default class UnavailableModalUiHandler extends ModalUiHandler {
private readonly randVarianceTime = 1000 * 10; private readonly randVarianceTime = 1000 * 10;
constructor(mode: Mode | null = null) { constructor(mode: UiMode | null = null) {
super(mode); super(mode);
this.reconnectDuration = this.minTime; this.reconnectDuration = this.minTime;
} }

View File

@ -2,7 +2,7 @@ import { BattleStyle } from "#app/enums/battle-style";
import { CommandPhase } from "#app/phases/command-phase"; import { CommandPhase } from "#app/phases/command-phase";
import { TurnInitPhase } from "#app/phases/turn-init-phase"; import { TurnInitPhase } from "#app/phases/turn-init-phase";
import i18next from "#app/plugins/i18n"; import i18next from "#app/plugins/i18n";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { Abilities } from "#enums/abilities"; import { Abilities } from "#enums/abilities";
import { Species } from "#enums/species"; import { Species } from "#enums/species";
import GameManager from "#test/testUtils/gameManager"; import GameManager from "#test/testUtils/gameManager";
@ -40,9 +40,9 @@ describe("Ability Timing", () => {
game.onNextPrompt( game.onNextPrompt(
"CheckSwitchPhase", "CheckSwitchPhase",
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
game.setMode(Mode.MESSAGE); game.setMode(UiMode.MESSAGE);
game.endPhase(); game.endPhase();
}, },
() => game.isCurrentPhase(CommandPhase) || game.isCurrentPhase(TurnInitPhase), () => game.isCurrentPhase(CommandPhase) || game.isCurrentPhase(TurnInitPhase),

View File

@ -1,7 +1,7 @@
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
import Phaser from "phaser"; import Phaser from "phaser";
import GameManager from "#test/testUtils/gameManager"; import GameManager from "#test/testUtils/gameManager";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { Stat } from "#enums/stat"; import { Stat } from "#enums/stat";
import { getMovePosition } from "#test/testUtils/gameManagerUtils"; import { getMovePosition } from "#test/testUtils/gameManagerUtils";
import { Abilities } from "#enums/abilities"; import { Abilities } from "#enums/abilities";
@ -38,9 +38,9 @@ describe("Abilities - Intimidate", () => {
await game.classicMode.runToSummon([Species.MIGHTYENA, Species.POOCHYENA]); await game.classicMode.runToSummon([Species.MIGHTYENA, Species.POOCHYENA]);
game.onNextPrompt( game.onNextPrompt(
"CheckSwitchPhase", "CheckSwitchPhase",
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
game.setMode(Mode.MESSAGE); game.setMode(UiMode.MESSAGE);
game.endPhase(); game.endPhase();
}, },
() => game.isCurrentPhase("CommandPhase") || game.isCurrentPhase("TurnInitPhase"), () => game.isCurrentPhase("CommandPhase") || game.isCurrentPhase("TurnInitPhase"),
@ -69,9 +69,9 @@ describe("Abilities - Intimidate", () => {
await game.classicMode.runToSummon([Species.MIGHTYENA, Species.POOCHYENA]); await game.classicMode.runToSummon([Species.MIGHTYENA, Species.POOCHYENA]);
game.onNextPrompt( game.onNextPrompt(
"CheckSwitchPhase", "CheckSwitchPhase",
Mode.CONFIRM, UiMode.CONFIRM,
() => { () => {
game.setMode(Mode.MESSAGE); game.setMode(UiMode.MESSAGE);
game.endPhase(); game.endPhase();
}, },
() => game.isCurrentPhase("CommandPhase") || game.isCurrentPhase("TurnInitPhase"), () => game.isCurrentPhase("CommandPhase") || game.isCurrentPhase("TurnInitPhase"),

View File

@ -18,7 +18,7 @@ import { TurnInitPhase } from "#app/phases/turn-init-phase";
import { VictoryPhase } from "#app/phases/victory-phase"; import { VictoryPhase } from "#app/phases/victory-phase";
import GameManager from "#test/testUtils/gameManager"; import GameManager from "#test/testUtils/gameManager";
import { generateStarter } from "#test/testUtils/gameManagerUtils"; import { generateStarter } from "#test/testUtils/gameManagerUtils";
import { Mode } from "#app/ui/ui"; import { UiMode } from "#enums/ui-mode";
import { Abilities } from "#enums/abilities"; import { Abilities } from "#enums/abilities";
import { Moves } from "#enums/moves"; import { Moves } from "#enums/moves";
import { PlayerGender } from "#enums/player-gender"; import { PlayerGender } from "#enums/player-gender";
@ -49,7 +49,7 @@ describe("Test Battle Phase", () => {
it("test phase interceptor with prompt", async () => { it("test phase interceptor with prompt", async () => {
await game.phaseInterceptor.run(LoginPhase); await game.phaseInterceptor.run(LoginPhase);
game.onNextPrompt("SelectGenderPhase", Mode.OPTION_SELECT, () => { game.onNextPrompt("SelectGenderPhase", UiMode.OPTION_SELECT, () => {
game.scene.gameData.gender = PlayerGender.MALE; game.scene.gameData.gender = PlayerGender.MALE;
game.endPhase(); game.endPhase();
}); });
@ -57,36 +57,36 @@ describe("Test Battle Phase", () => {
await game.phaseInterceptor.run(SelectGenderPhase); await game.phaseInterceptor.run(SelectGenderPhase);
await game.phaseInterceptor.run(TitlePhase); await game.phaseInterceptor.run(TitlePhase);
await game.waitMode(Mode.TITLE); await game.waitMode(UiMode.TITLE);
expect(game.scene.ui?.getMode()).toBe(Mode.TITLE); expect(game.scene.ui?.getMode()).toBe(UiMode.TITLE);
expect(game.scene.gameData.gender).toBe(PlayerGender.MALE); expect(game.scene.gameData.gender).toBe(PlayerGender.MALE);
}, 20000); }, 20000);
it("test phase interceptor with prompt with preparation for a future prompt", async () => { it("test phase interceptor with prompt with preparation for a future prompt", async () => {
await game.phaseInterceptor.run(LoginPhase); await game.phaseInterceptor.run(LoginPhase);
game.onNextPrompt("SelectGenderPhase", Mode.OPTION_SELECT, () => { game.onNextPrompt("SelectGenderPhase", UiMode.OPTION_SELECT, () => {
game.scene.gameData.gender = PlayerGender.MALE; game.scene.gameData.gender = PlayerGender.MALE;
game.endPhase(); game.endPhase();
}); });
game.onNextPrompt("CheckSwitchPhase", Mode.CONFIRM, () => { game.onNextPrompt("CheckSwitchPhase", UiMode.CONFIRM, () => {
game.setMode(Mode.MESSAGE); game.setMode(UiMode.MESSAGE);
game.endPhase(); game.endPhase();
}); });
await game.phaseInterceptor.run(SelectGenderPhase); await game.phaseInterceptor.run(SelectGenderPhase);
await game.phaseInterceptor.run(TitlePhase); await game.phaseInterceptor.run(TitlePhase);
await game.waitMode(Mode.TITLE); await game.waitMode(UiMode.TITLE);
expect(game.scene.ui?.getMode()).toBe(Mode.TITLE); expect(game.scene.ui?.getMode()).toBe(UiMode.TITLE);
expect(game.scene.gameData.gender).toBe(PlayerGender.MALE); expect(game.scene.gameData.gender).toBe(PlayerGender.MALE);
}, 20000); }, 20000);
it("newGame one-liner", async () => { it("newGame one-liner", async () => {
await game.startBattle(); await game.startBattle();
expect(game.scene.ui?.getMode()).toBe(Mode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
@ -156,7 +156,7 @@ describe("Test Battle Phase", () => {
await game.phaseInterceptor.run(LoginPhase); await game.phaseInterceptor.run(LoginPhase);
game.onNextPrompt( game.onNextPrompt(
"SelectGenderPhase", "SelectGenderPhase",
Mode.OPTION_SELECT, UiMode.OPTION_SELECT,
() => { () => {
game.scene.gameData.gender = PlayerGender.MALE; game.scene.gameData.gender = PlayerGender.MALE;
game.endPhase(); game.endPhase();
@ -171,7 +171,7 @@ describe("Test Battle Phase", () => {
await game.phaseInterceptor.run(LoginPhase); await game.phaseInterceptor.run(LoginPhase);
game.onNextPrompt( game.onNextPrompt(
"SelectGenderPhase", "SelectGenderPhase",
Mode.OPTION_SELECT, UiMode.OPTION_SELECT,
() => { () => {
game.scene.gameData.gender = PlayerGender.MALE; game.scene.gameData.gender = PlayerGender.MALE;
game.endPhase(); game.endPhase();
@ -185,14 +185,14 @@ describe("Test Battle Phase", () => {
await game.phaseInterceptor.run(LoginPhase); await game.phaseInterceptor.run(LoginPhase);
game.onNextPrompt( game.onNextPrompt(
"SelectGenderPhase", "SelectGenderPhase",
Mode.OPTION_SELECT, UiMode.OPTION_SELECT,
() => { () => {
game.scene.gameData.gender = PlayerGender.MALE; game.scene.gameData.gender = PlayerGender.MALE;
game.endPhase(); game.endPhase();
}, },
() => game.isCurrentPhase(TitlePhase), () => game.isCurrentPhase(TitlePhase),
); );
game.onNextPrompt("TitlePhase", Mode.TITLE, () => { game.onNextPrompt("TitlePhase", UiMode.TITLE, () => {
game.scene.gameMode = getGameMode(GameModes.CLASSIC); game.scene.gameMode = getGameMode(GameModes.CLASSIC);
const starters = generateStarter(game.scene); const starters = generateStarter(game.scene);
const selectStarterPhase = new SelectStarterPhase(); const selectStarterPhase = new SelectStarterPhase();
@ -208,7 +208,7 @@ describe("Test Battle Phase", () => {
game.override.enemyAbility(Abilities.HYDRATION); game.override.enemyAbility(Abilities.HYDRATION);
game.override.ability(Abilities.HYDRATION); game.override.ability(Abilities.HYDRATION);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]);
expect(game.scene.ui?.getMode()).toBe(Mode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
@ -218,7 +218,7 @@ describe("Test Battle Phase", () => {
game.override.enemyAbility(Abilities.HYDRATION); game.override.enemyAbility(Abilities.HYDRATION);
game.override.ability(Abilities.HYDRATION); game.override.ability(Abilities.HYDRATION);
await game.startBattle([Species.BLASTOISE]); await game.startBattle([Species.BLASTOISE]);
expect(game.scene.ui?.getMode()).toBe(Mode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
@ -229,7 +229,7 @@ describe("Test Battle Phase", () => {
game.override.ability(Abilities.HYDRATION); game.override.ability(Abilities.HYDRATION);
game.override.startingWave(3); game.override.startingWave(3);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]); await game.startBattle([Species.BLASTOISE, Species.CHARIZARD]);
expect(game.scene.ui?.getMode()).toBe(Mode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
@ -240,7 +240,7 @@ describe("Test Battle Phase", () => {
game.override.ability(Abilities.HYDRATION); game.override.ability(Abilities.HYDRATION);
game.override.startingWave(3); game.override.startingWave(3);
await game.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]); await game.startBattle([Species.BLASTOISE, Species.CHARIZARD, Species.DARKRAI, Species.GABITE]);
expect(game.scene.ui?.getMode()).toBe(Mode.COMMAND); expect(game.scene.ui?.getMode()).toBe(UiMode.COMMAND);
expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name); expect(game.scene.getCurrentPhase()!.constructor.name).toBe(CommandPhase.name);
}, 20000); }, 20000);
@ -328,7 +328,7 @@ describe("Test Battle Phase", () => {
game.onNextPrompt( game.onNextPrompt(
"SwitchPhase", "SwitchPhase",
Mode.PARTY, UiMode.PARTY,
() => { () => {
expect.fail("Switch was forced"); expect.fail("Switch was forced");
}, },

Some files were not shown because too many files have changed in this diff Show More