[Refactor] Move type definitions away from game-data.ts (#6487)

* Move type definitions away from game-data.ts

* Update src/@types/data-types.ts

Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>

* Renamed file to save-data.ts

* Fixed broken import

* Moved some ui files

* Run biome, fix broken import

* Fixed one more broken input
This commit is contained in:
Wlowscha 2025-09-10 21:09:33 +02:00 committed by GitHub
parent d9d6163b07
commit 9a92f98f63
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
39 changed files with 195 additions and 167 deletions

View File

@ -1,4 +1,4 @@
import type { SessionSaveData, SystemSaveData } from "#system/game-data"; import type { SessionSaveData, SystemSaveData } from "#types/save-data";
export interface UpdateAllSavedataRequest { export interface UpdateAllSavedataRequest {
system: SystemSaveData; system: SystemSaveData;

View File

@ -1,4 +1,4 @@
import type { SystemSaveData } from "#system/game-data"; import type { SystemSaveData } from "#types/save-data";
export interface GetSystemSavedataRequest { export interface GetSystemSavedataRequest {
clientSessionId: string; clientSessionId: string;

View File

@ -1,7 +1,7 @@
import type { ArenaTagTypeMap } from "#data/arena-tag"; import type { ArenaTagTypeMap } from "#data/arena-tag";
import type { ArenaTagType } from "#enums/arena-tag-type"; import type { ArenaTagType } from "#enums/arena-tag-type";
// biome-ignore lint/correctness/noUnusedImports: TSDocs // biome-ignore lint/correctness/noUnusedImports: TSDocs
import type { SessionSaveData } from "#system/game-data"; import type { SessionSaveData } from "#types/save-data";
import type { ObjectValues } from "#types/type-helpers"; import type { ObjectValues } from "#types/type-helpers";
/** Subset of {@linkcode ArenaTagType}s that apply some negative effect to pokemon that switch in ({@link https://bulbapedia.bulbagarden.net/wiki/List_of_moves_that_cause_entry_hazards#List_of_traps | entry hazards} and Imprison. */ /** Subset of {@linkcode ArenaTagType}s that apply some negative effect to pokemon that switch in ({@link https://bulbapedia.bulbagarden.net/wiki/List_of_moves_that_cause_entry_hazards#List_of_traps | entry hazards} and Imprison. */

View File

@ -1,7 +1,7 @@
// biome-ignore-start lint/correctness/noUnusedImports: Used in a TSDoc comment // biome-ignore-start lint/correctness/noUnusedImports: Used in a TSDoc comment
import type { AbilityBattlerTag, BattlerTagTypeMap, SerializableBattlerTag, TypeBoostTag } from "#data/battler-tags"; import type { AbilityBattlerTag, BattlerTagTypeMap, SerializableBattlerTag, TypeBoostTag } from "#data/battler-tags";
import type { AbilityId } from "#enums/ability-id"; import type { AbilityId } from "#enums/ability-id";
import type { SessionSaveData } from "#system/game-data"; import type { SessionSaveData } from "#types/save-data";
// biome-ignore-end lint/correctness/noUnusedImports: Used in a TSDoc comment // biome-ignore-end lint/correctness/noUnusedImports: Used in a TSDoc comment
import type { BattlerTagType } from "#enums/battler-tag-type"; import type { BattlerTagType } from "#enums/battler-tag-type";

143
src/@types/save-data.ts Normal file
View File

@ -0,0 +1,143 @@
import type { PokeballCounts } from "#app/battle-scene";
import type { Tutorial } from "#app/tutorial";
import type { BattleType } from "#enums/battle-type";
import type { GameModes } from "#enums/game-modes";
import type { MoveId } from "#enums/move-id";
import type { MysteryEncounterType } from "#enums/mystery-encounter-type";
import type { PlayerGender } from "#enums/player-gender";
import type { PokemonType } from "#enums/pokemon-type";
import type { MysteryEncounterSaveData } from "#mystery-encounters/mystery-encounter-save-data";
import type { Variant } from "#sprites/variant";
import type { ArenaData } from "#system/arena-data";
import type { ChallengeData } from "#system/challenge-data";
import type { EggData } from "#system/egg-data";
import type { GameStats } from "#system/game-stats";
import type { ModifierData } from "#system/modifier-data";
import type { PokemonData } from "#system/pokemon-data";
import type { TrainerData } from "#system/trainer-data";
import type { DexData } from "./dex-data";
export interface SystemSaveData {
trainerId: number;
secretId: number;
gender: PlayerGender;
dexData: DexData;
starterData: StarterData;
gameStats: GameStats;
unlocks: Unlocks;
achvUnlocks: AchvUnlocks;
voucherUnlocks: VoucherUnlocks;
voucherCounts: VoucherCounts;
eggs: EggData[];
gameVersion: string;
timestamp: number;
eggPity: number[];
unlockPity: number[];
}
export interface SessionSaveData {
seed: string;
playTime: number;
gameMode: GameModes;
party: PokemonData[];
enemyParty: PokemonData[];
modifiers: ModifierData[];
enemyModifiers: ModifierData[];
arena: ArenaData;
pokeballCounts: PokeballCounts;
money: number;
score: number;
waveIndex: number;
battleType: BattleType;
trainer: TrainerData;
gameVersion: string;
/** The player-chosen name of the run */
name: string;
timestamp: number;
challenges: ChallengeData[];
mysteryEncounterType: MysteryEncounterType | -1; // Only defined when current wave is ME,
mysteryEncounterSaveData: MysteryEncounterSaveData;
/**
* Counts the amount of pokemon fainted in your party during the current arena encounter.
*/
playerFaints: number;
}
export interface Unlocks {
[key: number]: boolean;
}
export interface AchvUnlocks {
[key: string]: number;
}
export interface VoucherUnlocks {
[key: string]: number;
}
export interface VoucherCounts {
[type: string]: number;
}
export type StarterMoveset = [MoveId] | [MoveId, MoveId] | [MoveId, MoveId, MoveId] | [MoveId, MoveId, MoveId, MoveId];
export interface StarterFormMoveData {
[key: number]: StarterMoveset;
}
export interface StarterMoveData {
[key: number]: StarterMoveset | StarterFormMoveData;
}
export interface StarterAttributes {
nature?: number;
ability?: number;
variant?: number;
form?: number;
female?: boolean;
shiny?: boolean;
favorite?: boolean;
nickname?: string;
tera?: PokemonType;
}
export interface DexAttrProps {
shiny: boolean;
female: boolean;
variant: Variant;
formIndex: number;
}
export type RunHistoryData = Record<number, RunEntry>;
export interface RunEntry {
entry: SessionSaveData;
isVictory: boolean;
/*Automatically set to false at the moment - implementation TBD*/
isFavorite: boolean;
}
export interface StarterDataEntry {
moveset: StarterMoveset | StarterFormMoveData | null;
eggMoves: number;
candyCount: number;
friendship: number;
abilityAttr: number;
passiveAttr: number;
valueReduction: number;
classicWinCount: number;
}
export interface StarterData {
[key: number]: StarterDataEntry;
}
// TODO: Rework into a bitmask
export type TutorialFlags = {
[key in Tutorial]: boolean;
};
// TODO: Rework into a bitmask
export interface SeenDialogues {
[key: string]: boolean;
}

View File

@ -1,4 +1,4 @@
import type { SessionSaveData } from "#system/game-data"; import type { SessionSaveData } from "./save-data";
export interface SessionSaveMigrator { export interface SessionSaveMigrator {
version: string; version: string;

View File

@ -1,4 +1,4 @@
import type { SystemSaveData } from "#system/game-data"; import type { SystemSaveData } from "./save-data";
export interface SystemSaveMigrator { export interface SystemSaveMigrator {
version: string; version: string;

View File

@ -21,9 +21,10 @@ import type { EnemyPokemon, PlayerPokemon, Pokemon } from "#field/pokemon";
import { Trainer } from "#field/trainer"; import { Trainer } from "#field/trainer";
import type { ModifierTypeOption } from "#modifiers/modifier-type"; import type { ModifierTypeOption } from "#modifiers/modifier-type";
import { PokemonMove } from "#moves/pokemon-move"; import { PokemonMove } from "#moves/pokemon-move";
import type { DexAttrProps, GameData, StarterDataEntry } from "#system/game-data"; import type { GameData } from "#system/game-data";
import { RibbonData, type RibbonFlag } from "#system/ribbons/ribbon-data"; import { RibbonData, type RibbonFlag } from "#system/ribbons/ribbon-data";
import type { DexEntry } from "#types/dex-data"; import type { DexEntry } from "#types/dex-data";
import type { DexAttrProps, StarterDataEntry } from "#types/save-data";
import { type BooleanHolder, isBetween, type NumberHolder, randSeedItem } from "#utils/common"; import { type BooleanHolder, isBetween, type NumberHolder, randSeedItem } from "#utils/common";
import { deepCopy } from "#utils/data"; import { deepCopy } from "#utils/data";
import { getPokemonSpecies, getPokemonSpeciesForm } from "#utils/pokemon-utils"; import { getPokemonSpecies, getPokemonSpeciesForm } from "#utils/pokemon-utils";

View File

@ -1,7 +1,7 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import type { PlayerPokemon } from "#field/pokemon"; import type { PlayerPokemon } from "#field/pokemon";
import type { StarterDataEntry } from "#system/game-data";
import type { DexEntry } from "#types/dex-data"; import type { DexEntry } from "#types/dex-data";
import type { StarterDataEntry } from "#types/save-data";
/** /**
* Stores data associated with a specific egg and the hatched pokemon * Stores data associated with a specific egg and the hatched pokemon

View File

@ -26,8 +26,8 @@ import { loadPokemonVariantAssets } from "#sprites/pokemon-sprite";
import { hasExpSprite } from "#sprites/sprite-utils"; import { hasExpSprite } from "#sprites/sprite-utils";
import type { Variant, VariantSet } from "#sprites/variant"; import type { Variant, VariantSet } from "#sprites/variant";
import { populateVariantColorCache, variantColorCache, variantData } from "#sprites/variant"; import { populateVariantColorCache, variantColorCache, variantData } from "#sprites/variant";
import type { StarterMoveset } from "#system/game-data";
import type { Localizable } from "#types/locales"; import type { Localizable } from "#types/locales";
import type { StarterMoveset } from "#types/save-data";
import { isNullOrUndefined, randSeedFloat, randSeedGauss, randSeedInt } from "#utils/common"; import { isNullOrUndefined, randSeedFloat, randSeedGauss, randSeedInt } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils"; import { getPokemonSpecies } from "#utils/pokemon-utils";
import { toCamelCase, toPascalCase } from "#utils/strings"; import { toCamelCase, toPascalCase } from "#utils/strings";

View File

@ -137,13 +137,13 @@ import { loadMoveAnimations } from "#sprites/pokemon-asset-loader";
import type { Variant } from "#sprites/variant"; import type { Variant } from "#sprites/variant";
import { populateVariantColors, variantColorCache, variantData } from "#sprites/variant"; import { populateVariantColors, variantColorCache, variantData } from "#sprites/variant";
import { achvs } from "#system/achv"; import { achvs } from "#system/achv";
import type { StarterDataEntry, StarterMoveset } from "#system/game-data";
import type { PokemonData } from "#system/pokemon-data"; import type { PokemonData } from "#system/pokemon-data";
import { RibbonData } from "#system/ribbons/ribbon-data"; import { RibbonData } from "#system/ribbons/ribbon-data";
import { awardRibbonsToSpeciesLine } from "#system/ribbons/ribbon-methods"; import { awardRibbonsToSpeciesLine } from "#system/ribbons/ribbon-methods";
import type { AbAttrMap, AbAttrString, TypeMultiplierAbAttrParams } from "#types/ability-types"; import type { AbAttrMap, AbAttrString, TypeMultiplierAbAttrParams } from "#types/ability-types";
import type { DamageCalculationResult, DamageResult } from "#types/damage-result"; import type { DamageCalculationResult, DamageResult } from "#types/damage-result";
import type { IllusionData } from "#types/illusion-data"; import type { IllusionData } from "#types/illusion-data";
import type { StarterDataEntry, StarterMoveset } from "#types/save-data";
import type { TurnMove } from "#types/turn-move"; import type { TurnMove } from "#types/turn-move";
import { BattleInfo } from "#ui/battle-info"; import { BattleInfo } from "#ui/battle-info";
import { EnemyBattleInfo } from "#ui/enemy-battle-info"; import { EnemyBattleInfo } from "#ui/enemy-battle-info";

View File

@ -16,13 +16,13 @@ import type { EndCardPhase } from "#phases/end-card-phase";
import { achvs, ChallengeAchv } from "#system/achv"; import { achvs, ChallengeAchv } from "#system/achv";
import { ArenaData } from "#system/arena-data"; import { ArenaData } from "#system/arena-data";
import { ChallengeData } from "#system/challenge-data"; import { ChallengeData } from "#system/challenge-data";
import type { SessionSaveData } from "#system/game-data";
import { ModifierData as PersistentModifierData } from "#system/modifier-data"; import { ModifierData as PersistentModifierData } from "#system/modifier-data";
import { PokemonData } from "#system/pokemon-data"; import { PokemonData } from "#system/pokemon-data";
import { RibbonData, type RibbonFlag } from "#system/ribbons/ribbon-data"; import { RibbonData, type RibbonFlag } from "#system/ribbons/ribbon-data";
import { awardRibbonsToSpeciesLine } from "#system/ribbons/ribbon-methods"; import { awardRibbonsToSpeciesLine } from "#system/ribbons/ribbon-methods";
import { TrainerData } from "#system/trainer-data"; import { TrainerData } from "#system/trainer-data";
import { trainerConfigs } from "#trainers/trainer-config"; import { trainerConfigs } from "#trainers/trainer-config";
import type { SessionSaveData } from "#types/save-data";
import { checkSpeciesValidForChallenge, isNuzlockeChallenge } from "#utils/challenge-utils"; import { checkSpeciesValidForChallenge, isNuzlockeChallenge } from "#utils/challenge-utils";
import { isLocal, isLocalServerConnected } from "#utils/common"; import { isLocal, isLocalServerConnected } from "#utils/common";
import { getPokemonSpecies } from "#utils/pokemon-utils"; import { getPokemonSpecies } from "#utils/pokemon-utils";

View File

@ -14,8 +14,8 @@ import { Unlockables } from "#enums/unlockables";
import { getBiomeKey } from "#field/arena"; import { getBiomeKey } from "#field/arena";
import type { Modifier } from "#modifiers/modifier"; import type { Modifier } from "#modifiers/modifier";
import { getDailyRunStarterModifiers, regenerateModifierPoolThresholds } from "#modifiers/modifier-type"; import { getDailyRunStarterModifiers, regenerateModifierPoolThresholds } from "#modifiers/modifier-type";
import type { SessionSaveData } from "#system/game-data";
import { vouchers } from "#system/voucher"; import { vouchers } from "#system/voucher";
import type { SessionSaveData } from "#types/save-data";
import type { OptionSelectConfig, OptionSelectItem } from "#ui/handlers/abstract-option-select-ui-handler"; import type { OptionSelectConfig, OptionSelectItem } from "#ui/handlers/abstract-option-select-ui-handler";
import { SaveSlotUiMode } from "#ui/handlers/save-slot-select-ui-handler"; import { SaveSlotUiMode } from "#ui/handlers/save-slot-select-ui-handler";
import { isLocal, isLocalServerConnected, isNullOrUndefined } from "#utils/common"; import { isLocal, isLocalServerConnected, isNullOrUndefined } from "#utils/common";

View File

@ -1,5 +1,4 @@
import { ApiBase } from "#api/api-base"; import { ApiBase } from "#api/api-base";
import type { SessionSaveData } from "#system/game-data";
import type { import type {
ClearSessionSavedataRequest, ClearSessionSavedataRequest,
ClearSessionSavedataResponse, ClearSessionSavedataResponse,
@ -8,6 +7,7 @@ import type {
NewClearSessionSavedataRequest, NewClearSessionSavedataRequest,
UpdateSessionSavedataRequest, UpdateSessionSavedataRequest,
} from "#types/api/pokerogue-session-save-data-api"; } from "#types/api/pokerogue-session-save-data-api";
import type { SessionSaveData } from "#types/save-data";
/** /**
* A wrapper for PokéRogue session savedata API requests. * A wrapper for PokéRogue session savedata API requests.

View File

@ -1,6 +1,5 @@
import { pokerogueApi } from "#api/pokerogue-api"; import { pokerogueApi } from "#api/pokerogue-api";
import { clientSessionId, loggedInUser, updateUserInfo } from "#app/account"; import { clientSessionId, loggedInUser, updateUserInfo } from "#app/account";
import type { PokeballCounts } from "#app/battle-scene";
import { defaultStarterSpecies, saveKey } from "#app/constants"; import { defaultStarterSpecies, saveKey } from "#app/constants";
import { getGameMode } from "#app/game-mode"; import { getGameMode } from "#app/game-mode";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
@ -24,11 +23,9 @@ import { Device } from "#enums/devices";
import { DexAttr } from "#enums/dex-attr"; import { DexAttr } from "#enums/dex-attr";
import { GameDataType } from "#enums/game-data-type"; import { GameDataType } from "#enums/game-data-type";
import { GameModes } from "#enums/game-modes"; import { GameModes } from "#enums/game-modes";
import type { MoveId } from "#enums/move-id";
import type { MysteryEncounterType } from "#enums/mystery-encounter-type"; import type { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { Nature } from "#enums/nature"; import { Nature } from "#enums/nature";
import { PlayerGender } from "#enums/player-gender"; import { PlayerGender } from "#enums/player-gender";
import type { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import { StatusEffect } from "#enums/status-effect"; import { StatusEffect } from "#enums/status-effect";
import { TrainerVariant } from "#enums/trainer-variant"; import { TrainerVariant } from "#enums/trainer-variant";
@ -62,6 +59,19 @@ import {
import { VoucherType, vouchers } from "#system/voucher"; import { VoucherType, vouchers } from "#system/voucher";
import { trainerConfigs } from "#trainers/trainer-config"; import { trainerConfigs } from "#trainers/trainer-config";
import type { DexData, DexEntry } from "#types/dex-data"; import type { DexData, DexEntry } from "#types/dex-data";
import type {
AchvUnlocks,
DexAttrProps,
RunHistoryData,
SeenDialogues,
SessionSaveData,
StarterData,
SystemSaveData,
TutorialFlags,
Unlocks,
VoucherCounts,
VoucherUnlocks,
} from "#types/save-data";
import { RUN_HISTORY_LIMIT } from "#ui/handlers/run-history-ui-handler"; import { RUN_HISTORY_LIMIT } from "#ui/handlers/run-history-ui-handler";
import { applyChallenges } from "#utils/challenge-utils"; import { applyChallenges } from "#utils/challenge-utils";
import { executeIf, fixedInt, isLocal, NumberHolder, randInt, randSeedItem } from "#utils/common"; import { executeIf, fixedInt, isLocal, NumberHolder, randInt, randSeedItem } from "#utils/common";
@ -94,132 +104,6 @@ function getDataTypeKey(dataType: GameDataType, slotId = 0): string {
} }
} }
// TODO: Move all these exported interfaces to @types
export interface SystemSaveData {
trainerId: number;
secretId: number;
gender: PlayerGender;
dexData: DexData;
starterData: StarterData;
gameStats: GameStats;
unlocks: Unlocks;
achvUnlocks: AchvUnlocks;
voucherUnlocks: VoucherUnlocks;
voucherCounts: VoucherCounts;
eggs: EggData[];
gameVersion: string;
timestamp: number;
eggPity: number[];
unlockPity: number[];
}
export interface SessionSaveData {
seed: string;
playTime: number;
gameMode: GameModes;
party: PokemonData[];
enemyParty: PokemonData[];
modifiers: PersistentModifierData[];
enemyModifiers: PersistentModifierData[];
arena: ArenaData;
pokeballCounts: PokeballCounts;
money: number;
score: number;
waveIndex: number;
battleType: BattleType;
trainer: TrainerData;
gameVersion: string;
/** The player-chosen name of the run */
name: string;
timestamp: number;
challenges: ChallengeData[];
mysteryEncounterType: MysteryEncounterType | -1; // Only defined when current wave is ME,
mysteryEncounterSaveData: MysteryEncounterSaveData;
/**
* Counts the amount of pokemon fainted in your party during the current arena encounter.
*/
playerFaints: number;
}
interface Unlocks {
[key: number]: boolean;
}
export interface AchvUnlocks {
[key: string]: number;
}
export interface VoucherUnlocks {
[key: string]: number;
}
export interface VoucherCounts {
[type: string]: number;
}
export type StarterMoveset = [MoveId] | [MoveId, MoveId] | [MoveId, MoveId, MoveId] | [MoveId, MoveId, MoveId, MoveId];
export interface StarterFormMoveData {
[key: number]: StarterMoveset;
}
export interface StarterMoveData {
[key: number]: StarterMoveset | StarterFormMoveData;
}
export interface StarterAttributes {
nature?: number;
ability?: number;
variant?: number;
form?: number;
female?: boolean;
shiny?: boolean;
favorite?: boolean;
nickname?: string;
tera?: PokemonType;
}
export interface DexAttrProps {
shiny: boolean;
female: boolean;
variant: Variant;
formIndex: number;
}
export type RunHistoryData = Record<number, RunEntry>;
export interface RunEntry {
entry: SessionSaveData;
isVictory: boolean;
/*Automatically set to false at the moment - implementation TBD*/
isFavorite: boolean;
}
export interface StarterDataEntry {
moveset: StarterMoveset | StarterFormMoveData | null;
eggMoves: number;
candyCount: number;
friendship: number;
abilityAttr: number;
passiveAttr: number;
valueReduction: number;
classicWinCount: number;
}
export interface StarterData {
[key: number]: StarterDataEntry;
}
// TODO: Rework into a bitmask
export type TutorialFlags = {
[key in Tutorial]: boolean;
};
// TODO: Rework into a bitmask
export interface SeenDialogues {
[key: string]: boolean;
}
const systemShortKeys = { const systemShortKeys = {
seenAttr: "$sa", seenAttr: "$sa",
caughtAttr: "$ca", caughtAttr: "$ca",

View File

@ -1,7 +1,7 @@
/** biome-ignore-all lint/performance/noNamespaceImport: Convenience */ /** biome-ignore-all lint/performance/noNamespaceImport: Convenience */
import { version } from "#package.json"; import { version } from "#package.json";
import type { SessionSaveData, SystemSaveData } from "#system/game-data"; import type { SessionSaveData, SystemSaveData } from "#types/save-data";
import type { SessionSaveMigrator } from "#types/session-save-migrator"; import type { SessionSaveMigrator } from "#types/session-save-migrator";
import type { SettingsSaveMigrator } from "#types/settings-save-migrator"; import type { SettingsSaveMigrator } from "#types/settings-save-migrator";
import type { SystemSaveMigrator } from "#types/system-save-migrator"; import type { SystemSaveMigrator } from "#types/system-save-migrator";

View File

@ -3,8 +3,8 @@ import { allSpecies } from "#data/data-lists";
import { CustomPokemonData } from "#data/pokemon-data"; import { CustomPokemonData } from "#data/pokemon-data";
import { AbilityAttr } from "#enums/ability-attr"; import { AbilityAttr } from "#enums/ability-attr";
import { DexAttr } from "#enums/dex-attr"; import { DexAttr } from "#enums/dex-attr";
import type { SessionSaveData, SystemSaveData } from "#system/game-data";
import { SettingKeys } from "#system/settings"; import { SettingKeys } from "#system/settings";
import type { SessionSaveData, SystemSaveData } from "#types/save-data";
import type { SessionSaveMigrator } from "#types/session-save-migrator"; import type { SessionSaveMigrator } from "#types/session-save-migrator";
import type { SettingsSaveMigrator } from "#types/settings-save-migrator"; import type { SettingsSaveMigrator } from "#types/settings-save-migrator";
import type { SystemSaveMigrator } from "#types/system-save-migrator"; import type { SystemSaveMigrator } from "#types/system-save-migrator";

View File

@ -2,7 +2,7 @@ import type { BattlerIndex } from "#enums/battler-index";
import type { MoveId } from "#enums/move-id"; import type { MoveId } from "#enums/move-id";
import type { MoveResult } from "#enums/move-result"; import type { MoveResult } from "#enums/move-result";
import { MoveUseMode } from "#enums/move-use-mode"; import { MoveUseMode } from "#enums/move-use-mode";
import type { SessionSaveData } from "#system/game-data"; import type { SessionSaveData } from "#types/save-data";
import type { SessionSaveMigrator } from "#types/session-save-migrator"; import type { SessionSaveMigrator } from "#types/session-save-migrator";
import type { TurnMove } from "#types/turn-move"; import type { TurnMove } from "#types/turn-move";

View File

@ -1,6 +1,6 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { DexAttr } from "#enums/dex-attr"; import { DexAttr } from "#enums/dex-attr";
import type { SessionSaveData, SystemSaveData } from "#system/game-data"; import type { SessionSaveData, SystemSaveData } from "#types/save-data";
import type { SessionSaveMigrator } from "#types/session-save-migrator"; import type { SessionSaveMigrator } from "#types/session-save-migrator";
import type { SystemSaveMigrator } from "#types/system-save-migrator"; import type { SystemSaveMigrator } from "#types/system-save-migrator";
import { isNullOrUndefined } from "#utils/common"; import { isNullOrUndefined } from "#utils/common";

View File

@ -1,6 +1,6 @@
import { DexAttr } from "#enums/dex-attr"; import { DexAttr } from "#enums/dex-attr";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import type { SystemSaveData } from "#system/game-data"; import type { SystemSaveData } from "#types/save-data";
import type { SystemSaveMigrator } from "#types/system-save-migrator"; import type { SystemSaveMigrator } from "#types/system-save-migrator";
import { getPokemonSpecies } from "#utils/pokemon-utils"; import { getPokemonSpecies } from "#utils/pokemon-utils";

View File

@ -1,7 +1,7 @@
import { MoveId } from "#enums/move-id"; import { MoveId } from "#enums/move-id";
import { PokemonMove } from "#moves/pokemon-move"; import { PokemonMove } from "#moves/pokemon-move";
import type { SessionSaveData } from "#system/game-data";
import type { PokemonData } from "#system/pokemon-data"; import type { PokemonData } from "#system/pokemon-data";
import type { SessionSaveData } from "#types/save-data";
import type { SessionSaveMigrator } from "#types/session-save-migrator"; import type { SessionSaveMigrator } from "#types/session-save-migrator";
/** /**

View File

@ -9,11 +9,11 @@ import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import { TextStyle } from "#enums/text-style"; import { TextStyle } from "#enums/text-style";
import type { PlayerPokemon } from "#field/pokemon"; import type { PlayerPokemon } from "#field/pokemon";
import { PokemonInfoContainer } from "#ui/containers/pokemon-info-container";
import { addTextObject } from "#ui/text"; import { addTextObject } from "#ui/text";
import { padInt, rgbHexToRgba } from "#utils/common"; import { padInt, rgbHexToRgba } from "#utils/common";
import { getPokemonSpeciesForm } from "#utils/pokemon-utils"; import { getPokemonSpeciesForm } from "#utils/pokemon-utils";
import { argbFromRgba } from "@material/material-color-utilities"; import { argbFromRgba } from "@material/material-color-utilities";
import { PokemonInfoContainer } from "./pokemon-info-container";
/** /**
* Class for the hatch info summary of each pokemon * Class for the hatch info summary of each pokemon

View File

@ -6,15 +6,15 @@ import { PokemonType } from "#enums/pokemon-type";
import { TextStyle } from "#enums/text-style"; import { TextStyle } from "#enums/text-style";
import type { Pokemon } from "#field/pokemon"; import type { Pokemon } from "#field/pokemon";
import { getVariantTint } from "#sprites/variant"; import { getVariantTint } from "#sprites/variant";
import type { StarterDataEntry } from "#system/game-data";
import type { DexEntry } from "#types/dex-data"; import type { DexEntry } from "#types/dex-data";
import { StatsContainer } from "#ui/containers/stats-container"; import type { StarterDataEntry } from "#types/save-data";
import { ConfirmUiHandler } from "#ui/handlers/confirm-ui-handler"; import { ConfirmUiHandler } from "#ui/handlers/confirm-ui-handler";
import { addBBCodeTextObject, addTextObject, getTextColor } from "#ui/text"; import { addBBCodeTextObject, addTextObject, getTextColor } from "#ui/text";
import { addWindow } from "#ui/ui-theme"; import { addWindow } from "#ui/ui-theme";
import { fixedInt, getShinyDescriptor } from "#utils/common"; import { fixedInt, getShinyDescriptor } from "#utils/common";
import i18next from "i18next"; import i18next from "i18next";
import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext"; import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext";
import { StatsContainer } from "./stats-container";
interface LanguageSetting { interface LanguageSetting {
infoContainerTextSize: string; infoContainerTextSize: string;

View File

@ -5,9 +5,9 @@ import { TextStyle } from "#enums/text-style";
import type { UiMode } from "#enums/ui-mode"; import type { UiMode } from "#enums/ui-mode";
import type { Achv } from "#system/achv"; import type { Achv } from "#system/achv";
import { achvs, getAchievementDescription } from "#system/achv"; import { achvs, getAchievementDescription } from "#system/achv";
import type { AchvUnlocks, VoucherUnlocks } from "#system/game-data";
import type { Voucher } from "#system/voucher"; import type { Voucher } from "#system/voucher";
import { getVoucherTypeIcon, getVoucherTypeName, vouchers } from "#system/voucher"; import { getVoucherTypeIcon, getVoucherTypeName, vouchers } from "#system/voucher";
import type { AchvUnlocks, VoucherUnlocks } from "#types/save-data";
import { ScrollBar } from "#ui/containers/scroll-bar"; import { ScrollBar } from "#ui/containers/scroll-bar";
import { MessageUiHandler } from "#ui/handlers/message-ui-handler"; import { MessageUiHandler } from "#ui/handlers/message-ui-handler";
import { addTextObject } from "#ui/text"; import { addTextObject } from "#ui/text";

View File

@ -43,9 +43,9 @@ import { TimeOfDay } from "#enums/time-of-day";
import { UiMode } from "#enums/ui-mode"; import { UiMode } from "#enums/ui-mode";
import type { Variant } from "#sprites/variant"; import type { Variant } from "#sprites/variant";
import { getVariantIcon, getVariantTint } from "#sprites/variant"; import { getVariantIcon, getVariantTint } from "#sprites/variant";
import type { StarterAttributes } from "#system/game-data";
import { SettingKeyboard } from "#system/settings-keyboard"; import { SettingKeyboard } from "#system/settings-keyboard";
import type { DexEntry } from "#types/dex-data"; import type { DexEntry } from "#types/dex-data";
import type { StarterAttributes } from "#types/save-data";
import { BaseStatsOverlay } from "#ui/containers/base-stats-overlay"; import { BaseStatsOverlay } from "#ui/containers/base-stats-overlay";
import { MoveInfoOverlay } from "#ui/containers/move-info-overlay"; import { MoveInfoOverlay } from "#ui/containers/move-info-overlay";
import { PokedexInfoOverlay } from "#ui/containers/pokedex-info-overlay"; import { PokedexInfoOverlay } from "#ui/containers/pokedex-info-overlay";

View File

@ -31,9 +31,9 @@ import { UiMode } from "#enums/ui-mode";
import { UiTheme } from "#enums/ui-theme"; import { UiTheme } from "#enums/ui-theme";
import type { Variant } from "#sprites/variant"; import type { Variant } from "#sprites/variant";
import { getVariantIcon, getVariantTint } from "#sprites/variant"; import { getVariantIcon, getVariantTint } from "#sprites/variant";
import type { DexAttrProps, StarterAttributes } from "#system/game-data";
import { SettingKeyboard } from "#system/settings-keyboard"; import { SettingKeyboard } from "#system/settings-keyboard";
import type { DexEntry } from "#types/dex-data"; import type { DexEntry } from "#types/dex-data";
import type { DexAttrProps, StarterAttributes } from "#types/save-data";
import { import {
DropDown, DropDown,
DropDownLabel, DropDownLabel,

View File

@ -6,8 +6,8 @@ import { PlayerGender } from "#enums/player-gender";
import { TextStyle } from "#enums/text-style"; import { TextStyle } from "#enums/text-style";
import { TrainerVariant } from "#enums/trainer-variant"; import { TrainerVariant } from "#enums/trainer-variant";
import { UiMode } from "#enums/ui-mode"; import { UiMode } from "#enums/ui-mode";
import type { RunEntry } from "#system/game-data";
import type { PokemonData } from "#system/pokemon-data"; import type { PokemonData } from "#system/pokemon-data";
import type { RunEntry } from "#types/save-data";
import { MessageUiHandler } from "#ui/handlers/message-ui-handler"; import { MessageUiHandler } from "#ui/handlers/message-ui-handler";
import { RunDisplayMode } from "#ui/handlers/run-info-ui-handler"; import { RunDisplayMode } from "#ui/handlers/run-info-ui-handler";
import { addTextObject } from "#ui/text"; import { addTextObject } from "#ui/text";

View File

@ -19,9 +19,9 @@ import { UiMode } from "#enums/ui-mode";
import * as Modifier from "#modifiers/modifier"; import * as Modifier from "#modifiers/modifier";
import { getLuckString, getLuckTextTint } from "#modifiers/modifier-type"; import { getLuckString, getLuckTextTint } from "#modifiers/modifier-type";
import { getVariantTint } from "#sprites/variant"; import { getVariantTint } from "#sprites/variant";
import type { SessionSaveData } from "#system/game-data";
import type { PokemonData } from "#system/pokemon-data"; import type { PokemonData } from "#system/pokemon-data";
import { SettingKeyboard } from "#system/settings-keyboard"; import { SettingKeyboard } from "#system/settings-keyboard";
import type { SessionSaveData } from "#types/save-data";
import { UiHandler } from "#ui/handlers/ui-handler"; import { UiHandler } from "#ui/handlers/ui-handler";
import { addBBCodeTextObject, addTextObject, getTextColor } from "#ui/text"; import { addBBCodeTextObject, addTextObject, getTextColor } from "#ui/text";
import { addWindow } from "#ui/ui-theme"; import { addWindow } from "#ui/ui-theme";

View File

@ -6,8 +6,8 @@ import { TextStyle } from "#enums/text-style";
import { UiMode } from "#enums/ui-mode"; import { UiMode } from "#enums/ui-mode";
// biome-ignore lint/performance/noNamespaceImport: See `src/system/game-data.ts` // biome-ignore lint/performance/noNamespaceImport: See `src/system/game-data.ts`
import * as Modifier from "#modifiers/modifier"; import * as Modifier from "#modifiers/modifier";
import type { SessionSaveData } from "#system/game-data";
import type { PokemonData } from "#system/pokemon-data"; import type { PokemonData } from "#system/pokemon-data";
import type { SessionSaveData } from "#types/save-data";
import type { OptionSelectConfig } from "#ui/handlers/abstract-option-select-ui-handler"; import type { OptionSelectConfig } from "#ui/handlers/abstract-option-select-ui-handler";
import { MessageUiHandler } from "#ui/handlers/message-ui-handler"; import { MessageUiHandler } from "#ui/handlers/message-ui-handler";
import { RunDisplayMode } from "#ui/handlers/run-info-ui-handler"; import { RunDisplayMode } from "#ui/handlers/run-info-ui-handler";

View File

@ -46,10 +46,10 @@ import { BattleSceneEventType } from "#events/battle-scene";
import type { Variant } from "#sprites/variant"; import type { Variant } from "#sprites/variant";
import { getVariantIcon, getVariantTint } from "#sprites/variant"; import { getVariantIcon, getVariantTint } from "#sprites/variant";
import { achvs } from "#system/achv"; import { achvs } from "#system/achv";
import type { DexAttrProps, StarterAttributes, StarterDataEntry, StarterMoveset } from "#system/game-data";
import { RibbonData } from "#system/ribbons/ribbon-data"; import { RibbonData } from "#system/ribbons/ribbon-data";
import { SettingKeyboard } from "#system/settings-keyboard"; import { SettingKeyboard } from "#system/settings-keyboard";
import type { DexEntry } from "#types/dex-data"; import type { DexEntry } from "#types/dex-data";
import type { DexAttrProps, StarterAttributes, StarterDataEntry, StarterMoveset } from "#types/save-data";
import { import {
DropDown, DropDown,
DropDownLabel, DropDownLabel,

View File

@ -12,8 +12,8 @@ import type { MoveSourceType } from "#enums/move-source-type";
import type { SpeciesId } from "#enums/species-id"; import type { SpeciesId } from "#enums/species-id";
import type { EnemyPokemon, PlayerPokemon, Pokemon } from "#field/pokemon"; import type { EnemyPokemon, PlayerPokemon, Pokemon } from "#field/pokemon";
import type { ModifierTypeOption } from "#modifiers/modifier-type"; import type { ModifierTypeOption } from "#modifiers/modifier-type";
import type { DexAttrProps, StarterDataEntry } from "#system/game-data";
import type { DexEntry } from "#types/dex-data"; import type { DexEntry } from "#types/dex-data";
import type { DexAttrProps, StarterDataEntry } from "#types/save-data";
import { BooleanHolder, type NumberHolder } from "./common"; import { BooleanHolder, type NumberHolder } from "./common";
import { getPokemonSpecies } from "./pokemon-utils"; import { getPokemonSpecies } from "./pokemon-utils";

View File

@ -1,6 +1,6 @@
import { loggedInUser } from "#app/account"; import { loggedInUser } from "#app/account";
import { saveKey } from "#app/constants"; import { saveKey } from "#app/constants";
import type { StarterAttributes } from "#system/game-data"; import type { StarterAttributes } from "#types/save-data";
import { AES, enc } from "crypto-js"; import { AES, enc } from "crypto-js";
/** /**

View File

@ -1,5 +1,4 @@
import { PokerogueSessionSavedataApi } from "#api/pokerogue-session-savedata-api"; import { PokerogueSessionSavedataApi } from "#api/pokerogue-session-savedata-api";
import type { SessionSaveData } from "#system/game-data";
import { initServerForApiTests } from "#test/test-utils/test-file-initialization"; import { initServerForApiTests } from "#test/test-utils/test-file-initialization";
import { getApiBaseUrl } from "#test/test-utils/test-utils"; import { getApiBaseUrl } from "#test/test-utils/test-utils";
import type { import type {
@ -10,6 +9,7 @@ import type {
NewClearSessionSavedataRequest, NewClearSessionSavedataRequest,
UpdateSessionSavedataRequest, UpdateSessionSavedataRequest,
} from "#types/api/pokerogue-session-save-data-api"; } from "#types/api/pokerogue-session-save-data-api";
import type { SessionSaveData } from "#types/save-data";
import { HttpResponse, http } from "msw"; import { HttpResponse, http } from "msw";
import type { SetupServerApi } from "msw/node"; import type { SetupServerApi } from "msw/node";
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";

View File

@ -1,5 +1,4 @@
import { PokerogueSystemSavedataApi } from "#api/pokerogue-system-savedata-api"; import { PokerogueSystemSavedataApi } from "#api/pokerogue-system-savedata-api";
import type { SystemSaveData } from "#system/game-data";
import { initServerForApiTests } from "#test/test-utils/test-file-initialization"; import { initServerForApiTests } from "#test/test-utils/test-file-initialization";
import { getApiBaseUrl } from "#test/test-utils/test-utils"; import { getApiBaseUrl } from "#test/test-utils/test-utils";
import type { import type {
@ -8,6 +7,7 @@ import type {
VerifySystemSavedataRequest, VerifySystemSavedataRequest,
VerifySystemSavedataResponse, VerifySystemSavedataResponse,
} from "#types/api/pokerogue-system-save-data-api"; } from "#types/api/pokerogue-system-save-data-api";
import type { SystemSaveData } from "#types/save-data";
import { HttpResponse, http } from "msw"; import { HttpResponse, http } from "msw";
import type { SetupServerApi } from "msw/node"; import type { SetupServerApi } from "msw/node";
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";

View File

@ -3,8 +3,8 @@ import * as account from "#app/account";
import * as bypassLoginModule from "#app/global-vars/bypass-login"; import * as bypassLoginModule from "#app/global-vars/bypass-login";
import { AbilityId } from "#enums/ability-id"; import { AbilityId } from "#enums/ability-id";
import { MoveId } from "#enums/move-id"; import { MoveId } from "#enums/move-id";
import type { SessionSaveData } from "#system/game-data";
import { GameManager } from "#test/test-utils/game-manager"; import { GameManager } from "#test/test-utils/game-manager";
import type { SessionSaveData } from "#types/save-data";
import Phaser from "phaser"; import Phaser from "phaser";
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";

View File

@ -1,10 +1,10 @@
import * as account from "#app/account"; import * as account from "#app/account";
import * as bypassLoginModule from "#app/global-vars/bypass-login"; import * as bypassLoginModule from "#app/global-vars/bypass-login";
import { pokerogueApi } from "#app/plugins/api/pokerogue-api"; import { pokerogueApi } from "#app/plugins/api/pokerogue-api";
import type { SessionSaveData } from "#app/system/game-data";
import { AbilityId } from "#enums/ability-id"; import { AbilityId } from "#enums/ability-id";
import { MoveId } from "#enums/move-id"; import { MoveId } from "#enums/move-id";
import { GameManager } from "#test/test-utils/game-manager"; import { GameManager } from "#test/test-utils/game-manager";
import type { SessionSaveData } from "#types/save-data";
import Phaser from "phaser"; import Phaser from "phaser";
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";

View File

@ -8,7 +8,7 @@ import { GameModes } from "#enums/game-modes";
import type { MoveId } from "#enums/move-id"; import type { MoveId } from "#enums/move-id";
import type { SpeciesId } from "#enums/species-id"; import type { SpeciesId } from "#enums/species-id";
import { PlayerPokemon } from "#field/pokemon"; import { PlayerPokemon } from "#field/pokemon";
import type { StarterMoveset } from "#system/game-data"; import type { StarterMoveset } from "#types/save-data";
import type { Starter } from "#ui/handlers/starter-select-ui-handler"; import type { Starter } from "#ui/handlers/starter-select-ui-handler";
import { getPokemonSpecies, getPokemonSpeciesForm } from "#utils/pokemon-utils"; import { getPokemonSpecies, getPokemonSpeciesForm } from "#utils/pokemon-utils";

View File

@ -3,9 +3,9 @@ import { UiMode } from "#enums/ui-mode";
import { CommandPhase } from "#phases/command-phase"; import { CommandPhase } from "#phases/command-phase";
import { TitlePhase } from "#phases/title-phase"; import { TitlePhase } from "#phases/title-phase";
import { TurnInitPhase } from "#phases/turn-init-phase"; import { TurnInitPhase } from "#phases/turn-init-phase";
import type { SessionSaveData } from "#system/game-data";
import type { GameManager } from "#test/test-utils/game-manager"; import type { GameManager } from "#test/test-utils/game-manager";
import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper"; import { GameManagerHelper } from "#test/test-utils/helpers/game-manager-helper";
import type { SessionSaveData } from "#types/save-data";
import { vi } from "vitest"; import { vi } from "vitest";
/** /**

View File

@ -6,8 +6,8 @@ import { DropDownColumn } from "#enums/drop-down-column";
import { PokemonType } from "#enums/pokemon-type"; import { PokemonType } from "#enums/pokemon-type";
import { SpeciesId } from "#enums/species-id"; import { SpeciesId } from "#enums/species-id";
import { UiMode } from "#enums/ui-mode"; import { UiMode } from "#enums/ui-mode";
import type { StarterAttributes } from "#system/game-data";
import { GameManager } from "#test/test-utils/game-manager"; import { GameManager } from "#test/test-utils/game-manager";
import type { StarterAttributes } from "#types/save-data";
import { FilterTextRow } from "#ui/containers/filter-text"; import { FilterTextRow } from "#ui/containers/filter-text";
import { PokedexPageUiHandler } from "#ui/handlers/pokedex-page-ui-handler"; import { PokedexPageUiHandler } from "#ui/handlers/pokedex-page-ui-handler";
import { PokedexUiHandler } from "#ui/handlers/pokedex-ui-handler"; import { PokedexUiHandler } from "#ui/handlers/pokedex-ui-handler";