Added some tracking, but not enough.

This commit is contained in:
frutescens 2024-11-11 18:36:26 -08:00
parent 4802f512ff
commit 949e4b67a1
2 changed files with 27 additions and 2 deletions

View File

@ -10,7 +10,7 @@ import { initCommonAnims, initMoveAnim, loadCommonAnimAssets, loadMoveAnimAssets
import { Phase } from "#app/phase"; import { Phase } from "#app/phase";
import { initGameSpeed } from "#app/system/game-speed"; import { initGameSpeed } from "#app/system/game-speed";
import { Arena, ArenaBase } from "#app/field/arena"; 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 { addTextObject, getTextColor, TextStyle } from "#app/ui/text";
import { allMoves } from "#app/data/move"; import { allMoves } from "#app/data/move";
import { MusicPreference } from "#app/system/settings/settings"; import { MusicPreference } from "#app/system/settings/settings";
@ -259,6 +259,7 @@ export default class BattleScene extends SceneBase {
public pokeballCounts: PokeballCounts; public pokeballCounts: PokeballCounts;
public money: integer; public money: integer;
public pokemonInfoContainer: PokemonInfoContainer; public pokemonInfoContainer: PokemonInfoContainer;
public biomeTracker: BiomeSessionData;
private party: PlayerPokemon[]; private party: PlayerPokemon[];
/** Session save data that pertains to Mystery Encounters */ /** Session save data that pertains to Mystery Encounters */
public mysteryEncounterSaveData: MysteryEncounterSaveData = new MysteryEncounterSaveData(); public mysteryEncounterSaveData: MysteryEncounterSaveData = new MysteryEncounterSaveData();
@ -1324,6 +1325,22 @@ export default class BattleScene extends SceneBase {
} }
newArena(biome: Biome): Arena { 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.arena = new Arena(this, biome, Biome[biome].toLowerCase());
this.eventTarget.dispatchEvent(new NewArenaEvent()); this.eventTarget.dispatchEvent(new NewArenaEvent());

View File

@ -39,6 +39,7 @@ import { Device } from "#enums/devices";
import { GameDataType } from "#enums/game-data-type"; import { GameDataType } from "#enums/game-data-type";
import { Moves } from "#enums/moves"; import { Moves } from "#enums/moves";
import { PlayerGender } from "#enums/player-gender"; import { PlayerGender } from "#enums/player-gender";
import { Biome } from "#enums/biome";
import { Species } from "#enums/species"; import { Species } from "#enums/species";
import { applyChallenges, ChallengeType } from "#app/data/challenge"; import { applyChallenges, ChallengeType } from "#app/data/challenge";
import { WeatherType } from "#enums/weather-type"; import { WeatherType } from "#enums/weather-type";
@ -136,12 +137,17 @@ export interface SessionSaveData {
challenges: ChallengeData[]; challenges: ChallengeData[];
mysteryEncounterType: MysteryEncounterType | -1; // Only defined when current wave is ME, mysteryEncounterType: MysteryEncounterType | -1; // Only defined when current wave is ME,
mysteryEncounterSaveData: MysteryEncounterSaveData; mysteryEncounterSaveData: MysteryEncounterSaveData;
biomeTracker: BiomeSessionData;
} }
interface Unlocks { interface Unlocks {
[key: integer]: boolean; [key: integer]: boolean;
} }
export interface BiomeSessionData {
[key: number]: Biome;
}
interface AchvUnlocks { interface AchvUnlocks {
[key: string]: integer [key: string]: integer
} }
@ -963,7 +969,8 @@ export class GameData {
timestamp: new Date().getTime(), timestamp: new Date().getTime(),
challenges: scene.gameMode.challenges.map(c => new ChallengeData(c)), challenges: scene.gameMode.challenges.map(c => new ChallengeData(c)),
mysteryEncounterType: scene.currentBattle.mysteryEncounter?.encounterType ?? -1, mysteryEncounterType: scene.currentBattle.mysteryEncounter?.encounterType ?? -1,
mysteryEncounterSaveData: scene.mysteryEncounterSaveData mysteryEncounterSaveData: scene.mysteryEncounterSaveData,
biomeTracker: scene.biomeTracker
} as SessionSaveData; } as SessionSaveData;
} }
@ -1023,6 +1030,7 @@ export class GameData {
scene.sessionPlayTime = sessionData.playTime || 0; scene.sessionPlayTime = sessionData.playTime || 0;
scene.lastSavePlayTime = 0; scene.lastSavePlayTime = 0;
scene.biomeTracker = sessionData.biomeTracker || {};
const loadPokemonAssets: Promise<void>[] = []; const loadPokemonAssets: Promise<void>[] = [];