import { globalScene } from "#app/global-scene"; import type { Biome } from "#app/enums/biome"; import { getBiomeKey } from "#app/field/arena"; import { BattlePhase } from "./battle-phase"; export class SwitchBiomePhase extends BattlePhase { private nextBiome: Biome; constructor(nextBiome: Biome) { super(); this.nextBiome = nextBiome; } start() { super.start(); if (this.nextBiome === undefined) { return this.end(); } // Before switching biomes, make sure to set the last encounter for other phases that need it too. globalScene.lastEnemyTrainer = globalScene.currentBattle?.trainer ?? null; globalScene.lastMysteryEncounter = globalScene.currentBattle?.mysteryEncounter; globalScene.tweens.add({ targets: [globalScene.arenaEnemy, globalScene.lastEnemyTrainer], x: "+=300", duration: 2000, onComplete: () => { globalScene.arenaEnemy.setX(globalScene.arenaEnemy.x - 600); globalScene.newArena(this.nextBiome); const biomeKey = getBiomeKey(this.nextBiome); const bgTexture = `${biomeKey}_bg`; globalScene.arenaBgTransition.setTexture(bgTexture); globalScene.arenaBgTransition.setAlpha(0); globalScene.arenaBgTransition.setVisible(true); globalScene.arenaPlayerTransition.setBiome(this.nextBiome); globalScene.arenaPlayerTransition.setAlpha(0); globalScene.arenaPlayerTransition.setVisible(true); globalScene.tweens.add({ targets: [globalScene.arenaPlayer, globalScene.arenaBgTransition, globalScene.arenaPlayerTransition], duration: 1000, delay: 1000, ease: "Sine.easeInOut", alpha: (target: any) => (target === globalScene.arenaPlayer ? 0 : 1), onComplete: () => { globalScene.arenaBg.setTexture(bgTexture); globalScene.arenaPlayer.setBiome(this.nextBiome); globalScene.arenaPlayer.setAlpha(1); globalScene.arenaEnemy.setBiome(this.nextBiome); globalScene.arenaEnemy.setAlpha(1); globalScene.arenaNextEnemy.setBiome(this.nextBiome); globalScene.arenaBgTransition.setVisible(false); globalScene.arenaPlayerTransition.setVisible(false); if (globalScene.lastEnemyTrainer) { globalScene.lastEnemyTrainer.destroy(); } this.end(); }, }); }, }); } }