From 949e4b67a136a647b99a9d7514d65309a52464cb Mon Sep 17 00:00:00 2001 From: frutescens Date: Mon, 11 Nov 2024 18:36:26 -0800 Subject: [PATCH] Added some tracking, but not enough. --- src/battle-scene.ts | 19 ++++++++++++++++++- src/system/game-data.ts | 10 +++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index c30ab2e2912..d61c1d2c93b 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -10,7 +10,7 @@ import { initCommonAnims, initMoveAnim, loadCommonAnimAssets, loadMoveAnimAssets import { Phase } from "#app/phase"; import { initGameSpeed } from "#app/system/game-speed"; import { Arena, ArenaBase } from "#app/field/arena"; -import { GameData } from "#app/system/game-data"; +import { GameData, BiomeSessionData } from "#app/system/game-data"; import { addTextObject, getTextColor, TextStyle } from "#app/ui/text"; import { allMoves } from "#app/data/move"; import { MusicPreference } from "#app/system/settings/settings"; @@ -259,6 +259,7 @@ export default class BattleScene extends SceneBase { public pokeballCounts: PokeballCounts; public money: integer; public pokemonInfoContainer: PokemonInfoContainer; + public biomeTracker: BiomeSessionData; private party: PlayerPokemon[]; /** Session save data that pertains to Mystery Encounters */ public mysteryEncounterSaveData: MysteryEncounterSaveData = new MysteryEncounterSaveData(); @@ -1324,6 +1325,22 @@ export default class BattleScene extends SceneBase { } newArena(biome: Biome): Arena { + const biomeTrackerLimit = 22; + if (Utils.isNullOrUndefined(this.biomeTracker)) { + this.biomeTracker = {}; + } + if (this.currentBattle) { + this.biomeTracker[this.currentBattle.waveIndex] = biome; + } else { + this.biomeTracker[1] = biome; + } + const biomeTrackerKeys = Object.keys(this.biomeTracker).map(Number); + console.log(this.biomeTracker); + // Arbitrary limit of 22 entries per session --> Can increase or decrease + while (biomeTrackerKeys.length >= biomeTrackerLimit ) { + const smallestWave = Math.min.apply(Math, biomeTrackerKeys); + delete this.biomeTracker[smallestWave]; + } this.arena = new Arena(this, biome, Biome[biome].toLowerCase()); this.eventTarget.dispatchEvent(new NewArenaEvent()); diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 8f179ddb677..36d544bc9af 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -39,6 +39,7 @@ import { Device } from "#enums/devices"; import { GameDataType } from "#enums/game-data-type"; import { Moves } from "#enums/moves"; import { PlayerGender } from "#enums/player-gender"; +import { Biome } from "#enums/biome"; import { Species } from "#enums/species"; import { applyChallenges, ChallengeType } from "#app/data/challenge"; import { WeatherType } from "#enums/weather-type"; @@ -136,12 +137,17 @@ export interface SessionSaveData { challenges: ChallengeData[]; mysteryEncounterType: MysteryEncounterType | -1; // Only defined when current wave is ME, mysteryEncounterSaveData: MysteryEncounterSaveData; + biomeTracker: BiomeSessionData; } interface Unlocks { [key: integer]: boolean; } +export interface BiomeSessionData { + [key: number]: Biome; +} + interface AchvUnlocks { [key: string]: integer } @@ -963,7 +969,8 @@ export class GameData { timestamp: new Date().getTime(), challenges: scene.gameMode.challenges.map(c => new ChallengeData(c)), mysteryEncounterType: scene.currentBattle.mysteryEncounter?.encounterType ?? -1, - mysteryEncounterSaveData: scene.mysteryEncounterSaveData + mysteryEncounterSaveData: scene.mysteryEncounterSaveData, + biomeTracker: scene.biomeTracker } as SessionSaveData; } @@ -1023,6 +1030,7 @@ export class GameData { scene.sessionPlayTime = sessionData.playTime || 0; scene.lastSavePlayTime = 0; + scene.biomeTracker = sessionData.biomeTracker || {}; const loadPokemonAssets: Promise[] = [];