mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-12-24 02:29:25 +01:00
[Refactor] Remove BattleScene#eventManager (#6868)
* remove EventManager from battleScene * remove `MockEventManager`
This commit is contained in:
parent
fc42530ca3
commit
b1f482e22c
@ -22,7 +22,6 @@ import { InvertPostFX } from "#app/pipelines/invert";
|
||||
import { SpritePipeline } from "#app/pipelines/sprite";
|
||||
import { SceneBase } from "#app/scene-base";
|
||||
import { startingWave } from "#app/starting-wave";
|
||||
import { TimedEventManager } from "#app/timed-event-manager";
|
||||
import { UiInputs } from "#app/ui-inputs";
|
||||
import { pokemonPrevolutions } from "#balance/pokemon-evolutions";
|
||||
import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#balance/starters";
|
||||
@ -310,7 +309,7 @@ export class BattleScene extends SceneBase {
|
||||
|
||||
private bgm: AnySound;
|
||||
private bgmResumeTimer: Phaser.Time.TimerEvent | null;
|
||||
private bgmCache: Set<string> = new Set();
|
||||
private readonly bgmCache: Set<string> = new Set();
|
||||
private playTimeTimer: Phaser.Time.TimerEvent;
|
||||
|
||||
public rngCounter = 0;
|
||||
@ -318,9 +317,7 @@ export class BattleScene extends SceneBase {
|
||||
public rngOffset = 0;
|
||||
|
||||
public inputMethod: string;
|
||||
private infoToggles: InfoToggle[] = [];
|
||||
|
||||
public eventManager: TimedEventManager;
|
||||
private readonly infoToggles: InfoToggle[] = [];
|
||||
|
||||
/**
|
||||
* Allows subscribers to listen for events
|
||||
@ -336,7 +333,6 @@ export class BattleScene extends SceneBase {
|
||||
constructor() {
|
||||
super("battle");
|
||||
this.phaseManager = new PhaseManager();
|
||||
this.eventManager = new TimedEventManager();
|
||||
this.updateGameInfo();
|
||||
initGlobalScene(this);
|
||||
}
|
||||
@ -3651,7 +3647,7 @@ export class BattleScene extends SceneBase {
|
||||
|
||||
let availableEncounters: MysteryEncounter[] = [];
|
||||
const previousEncounter = this.mysteryEncounterSaveData.encounteredEvents.at(-1)?.type ?? null; // TODO: This being `null` is a bit weird
|
||||
const disabledEncounters = this.eventManager.getEventMysteryEncountersDisabled();
|
||||
const disabledEncounters = timedEventManager.getEventMysteryEncountersDisabled();
|
||||
const biomeMysteryEncounters =
|
||||
mysteryEncountersByBiome.get(this.arena.biomeType)?.filter(enc => !disabledEncounters.includes(enc)) ?? [];
|
||||
// If no valid encounters exist at tier, checks next tier down, continuing until there are some encounters available
|
||||
@ -3663,7 +3659,7 @@ export class BattleScene extends SceneBase {
|
||||
return false;
|
||||
}
|
||||
if (
|
||||
this.eventManager.getMysteryEncounterTierForEvent(encounterType, encounterCandidate.encounterTier) !== tier
|
||||
timedEventManager.getMysteryEncounterTierForEvent(encounterType, encounterCandidate.encounterTier) !== tier
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -214,7 +214,7 @@ export class TitlePhase extends Phase {
|
||||
const generateDaily = (seed: string) => {
|
||||
globalScene.gameMode = getGameMode(GameModes.DAILY);
|
||||
// Daily runs don't support all challenges yet (starter select restrictions aren't considered)
|
||||
globalScene.eventManager.startEventChallenges();
|
||||
timedEventManager.startEventChallenges();
|
||||
|
||||
globalScene.setSeed(seed);
|
||||
globalScene.resetSeed();
|
||||
|
||||
@ -491,7 +491,16 @@ const timedEvents: readonly TimedEvent[] = [
|
||||
];
|
||||
|
||||
export class TimedEventManager {
|
||||
/**
|
||||
* Whether the timed event manager is disabled.
|
||||
* Used to disable events in testing.
|
||||
*/
|
||||
private disabled: boolean;
|
||||
|
||||
isActive(event: TimedEvent) {
|
||||
if (this.disabled) {
|
||||
return false;
|
||||
}
|
||||
const now = new Date();
|
||||
return event.startDate < now && now < event.endDate;
|
||||
}
|
||||
@ -687,6 +696,15 @@ export class TimedEventManager {
|
||||
getEventDailyStartingItems(): readonly ModifierTypeKeys[] {
|
||||
return this.activeEvent()?.dailyRunStartingItems ?? [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable the timed event manager. Used for testing.
|
||||
*/
|
||||
public disable(): void {
|
||||
this.disabled = true;
|
||||
}
|
||||
|
||||
// todo: add option to enable to aloow for testing timed events
|
||||
}
|
||||
|
||||
export class TimedEventDisplay extends Phaser.GameObjects.Container {
|
||||
|
||||
@ -357,8 +357,7 @@ describe("Delibird-y - Mystery Encounter", () => {
|
||||
});
|
||||
});
|
||||
|
||||
// TODO: fix mocking of events (and remove `BattleScene#eventManager`)
|
||||
it.skip("Should decrease held item stacks and give the player a Healing Charm", async () => {
|
||||
it("Should decrease held item stacks and give the player a Healing Charm", async () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty);
|
||||
|
||||
// Set 2 Soul Dew on party lead
|
||||
@ -379,8 +378,7 @@ describe("Delibird-y - Mystery Encounter", () => {
|
||||
expect(healingCharmAfter?.stackCount).toBe(1);
|
||||
});
|
||||
|
||||
// TODO: fix mocking of events (and remove `BattleScene#eventManager`)
|
||||
it.todo("Should remove held item and give the player a Healing Charm", async () => {
|
||||
it("Should remove held item and give the player a Healing Charm", async () => {
|
||||
await game.runToMysteryEncounter(MysteryEncounterType.DELIBIRDY, defaultParty);
|
||||
|
||||
// Set 1 Soul Dew on party lead
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
// @ts-nocheck - TODO: remove this
|
||||
|
||||
import { BattleScene } from "#app/battle-scene";
|
||||
import { timedEventManager } from "#app/global-event-manager";
|
||||
// biome-ignore lint/performance/noNamespaceImport: Necessary in order to mock the var
|
||||
import * as appConstants from "#constants/app-constants";
|
||||
import { MoveAnim } from "#data/battle-anims";
|
||||
@ -10,7 +11,6 @@ import { MockClock } from "#test/test-utils/mocks/mock-clock";
|
||||
import { MockGameObjectCreator } from "#test/test-utils/mocks/mock-game-object-creator";
|
||||
import { MockLoader } from "#test/test-utils/mocks/mock-loader";
|
||||
import { MockTextureManager } from "#test/test-utils/mocks/mock-texture-manager";
|
||||
import { MockTimedEventManager } from "#test/test-utils/mocks/mock-timed-event-manager";
|
||||
import { MockContainer } from "#test/test-utils/mocks/mocks-container/mock-container";
|
||||
import { PokedexMonContainer } from "#ui/pokedex-mon-container";
|
||||
import fs from "node:fs";
|
||||
@ -196,7 +196,7 @@ export class GameWrapper {
|
||||
this.scene.make = new MockGameObjectCreator(mockTextureManager);
|
||||
this.scene.time = new MockClock(this.scene);
|
||||
this.scene.remove = vi.fn(); // TODO: this should be stubbed differently
|
||||
this.scene.eventManager = new MockTimedEventManager(); // Disable Timed Events
|
||||
timedEventManager.disable();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,19 +0,0 @@
|
||||
import { TimedEventManager } from "#app/timed-event-manager";
|
||||
import { CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER } from "#balance/starters";
|
||||
|
||||
/** Mock TimedEventManager so that ongoing events don't impact tests */
|
||||
export class MockTimedEventManager extends TimedEventManager {
|
||||
// biome-ignore lint/nursery/noUselessUndefined: Changes return type to void instead of undefined
|
||||
override activeEvent(): undefined {
|
||||
return;
|
||||
}
|
||||
override isEventActive(): boolean {
|
||||
return false;
|
||||
}
|
||||
override getClassicFriendshipMultiplier(): number {
|
||||
return CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER;
|
||||
}
|
||||
override getShinyEncounterMultiplier(): number {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user