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(); } 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(); } }); } }); } }