Skip to content

Commit

Permalink
Replace various scene pass-arounds with global scene variable
Browse files Browse the repository at this point in the history
  • Loading branch information
DayKev committed Oct 31, 2024
1 parent dfb42e4 commit ffb5382
Show file tree
Hide file tree
Showing 252 changed files with 7,675 additions and 7,749 deletions.
4 changes: 1 addition & 3 deletions src/@types/common.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
import BattleScene from "#app/battle-scene";

export type ConditionFn = (scene: BattleScene, args?: any[]) => boolean;
export type ConditionFn = (args?: any[]) => boolean;
55 changes: 29 additions & 26 deletions src/battle-scene.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ import { FRIENDSHIP_GAIN_FROM_BATTLE } from "#app/data/balance/starters";

export const bypassLogin = import.meta.env.VITE_BYPASS_LOGIN === "1";

export let gScene: BattleScene;

const DEBUG_RNG = false;

const OPP_IVS_OVERRIDE_VALIDATED : integer[] = (
Expand Down Expand Up @@ -324,6 +326,7 @@ export default class BattleScene extends SceneBase {
this.phaseQueuePrependSpliceIndex = -1;
this.nextCommandPhaseQueue = [];
this.updateGameInfo();
gScene = this;
}

loadPokemonAtlas(key: string, atlasPath: string, experimental?: boolean) {
Expand All @@ -346,10 +349,10 @@ export default class BattleScene extends SceneBase {
const originalRealInRange = Phaser.Math.RND.realInRange;
Phaser.Math.RND.realInRange = function (min: number, max: number): number {
const ret = originalRealInRange.apply(this, [ min, max ]);
const args = [ "RNG", ++scene.rngCounter, ret / (max - min), `min: ${min} / max: ${max}` ];
args.push(`seed: ${scene.rngSeedOverride || scene.waveSeed || scene.seed}`);
if (scene.rngOffset) {
args.push(`offset: ${scene.rngOffset}`);
const args = [ "RNG", ++gScene.rngCounter, ret / (max - min), `min: ${min} / max: ${max}` ];
args.push(`seed: ${gScene.rngSeedOverride || gScene.waveSeed || gScene.seed}`);
if (gScene.rngOffset) {
args.push(`offset: ${gScene.rngOffset}`);
}
console.log(...args);
return ret;
Expand All @@ -362,9 +365,9 @@ export default class BattleScene extends SceneBase {
}

create() {
this.scene.remove(LoadingScene.KEY);
gScene.remove(LoadingScene.KEY);
initGameSpeed.apply(this);
this.inputController = new InputsController(this);
this.inputController = new InputsController();
this.uiInputs = new UiInputs(this, this.inputController);

this.gameData = new GameData(this);
Expand Down Expand Up @@ -457,12 +460,12 @@ export default class BattleScene extends SceneBase {
this.modifiers = [];
this.enemyModifiers = [];

this.modifierBar = new ModifierBar(this);
this.modifierBar = new ModifierBar();
this.modifierBar.setName("modifier-bar");
this.add.existing(this.modifierBar);
uiContainer.add(this.modifierBar);

this.enemyModifierBar = new ModifierBar(this, true);
this.enemyModifierBar = new ModifierBar(true);
this.enemyModifierBar.setName("enemy-modifier-bar");
this.add.existing(this.enemyModifierBar);
uiContainer.add(this.enemyModifierBar);
Expand Down Expand Up @@ -894,8 +897,8 @@ export default class BattleScene extends SceneBase {
pokemon.generateFusionSpecies();
}

overrideModifiers(this, false);
overrideHeldItems(this, pokemon, false);
overrideModifiers(false);
overrideHeldItems(pokemon, false);
if (boss && !dataSource) {
const secondaryIvs = Utils.getIvsFromId(Utils.randSeedInt(4294967296));

Expand Down Expand Up @@ -1034,7 +1037,7 @@ export default class BattleScene extends SceneBase {
* @returns A random integer between {@linkcode min} and ({@linkcode min} + {@linkcode range} - 1)
*/
randBattleSeedInt(range: integer, min: integer = 0): integer {
return this.currentBattle?.randSeedInt(this, range, min);
return this.currentBattle?.randSeedInt(range, min);
}

reset(clearScene: boolean = false, clearData: boolean = false, reloadI18n: boolean = false): void {
Expand Down Expand Up @@ -1172,7 +1175,7 @@ export default class BattleScene extends SceneBase {
battleConfig = this.gameMode.getFixedBattle(newWaveIndex);
newDouble = battleConfig.double;
newBattleType = battleConfig.battleType;
this.executeWithSeedOffset(() => newTrainer = battleConfig?.getTrainer(this), (battleConfig.seedOffsetWaveIndex || newWaveIndex) << 8);
this.executeWithSeedOffset(() => newTrainer = battleConfig?.getTrainer(), (battleConfig.seedOffsetWaveIndex || newWaveIndex) << 8);
if (newTrainer) {
this.field.add(newTrainer);
}
Expand Down Expand Up @@ -1243,7 +1246,7 @@ export default class BattleScene extends SceneBase {
this.executeWithSeedOffset(() => {
this.currentBattle = new Battle(this.gameMode, newWaveIndex, newBattleType, newTrainer, newDouble);
}, newWaveIndex << 3, this.waveSeed);
this.currentBattle.incrementTurn(this);
this.currentBattle.incrementTurn();

if (newBattleType === BattleType.MYSTERY_ENCOUNTER) {
// Disable double battle on mystery encounters (it may be re-enabled as part of encounter)
Expand Down Expand Up @@ -1711,7 +1714,7 @@ export default class BattleScene extends SceneBase {
}

updateUIPositions(): void {
const enemyModifierCount = this.enemyModifiers.filter(m => m.isIconVisible(this)).length;
const enemyModifierCount = this.enemyModifiers.filter(m => m.isIconVisible()).length;
const biomeWaveTextHeight = this.biomeWaveText.getBottomLeft().y - this.biomeWaveText.getTopLeft().y;
this.biomeWaveText.setY(
-(this.game.canvas.height / 6) + (enemyModifierCount ? enemyModifierCount <= 12 ? 15 : 24 : 0) + (biomeWaveTextHeight / 2)
Expand Down Expand Up @@ -1798,7 +1801,7 @@ export default class BattleScene extends SceneBase {

playBgm(bgmName?: string, fadeOut?: boolean): void {
if (bgmName === undefined) {
bgmName = this.currentBattle?.getBgmOverride(this) || this.arena?.bgm;
bgmName = this.currentBattle?.getBgmOverride() || this.arena?.bgm;
}
if (this.bgm && bgmName === this.bgm.key) {
if (!this.bgm.isPlaying) {
Expand Down Expand Up @@ -2448,7 +2451,7 @@ export default class BattleScene extends SceneBase {
if (modifier instanceof TerastallizeModifier) {
modifiersToRemove.push(...(this.findModifiers(m => m instanceof TerastallizeModifier && m.pokemonId === modifier.pokemonId)));
}
if ((modifier as PersistentModifier).add(this.modifiers, !!virtual, this)) {
if ((modifier as PersistentModifier).add(this.modifiers, !!virtual)) {
if (modifier instanceof PokemonFormChangeItemModifier || modifier instanceof TerastallizeModifier) {
const pokemon = this.getPokemonById(modifier.pokemonId);
if (pokemon) {
Expand Down Expand Up @@ -2529,7 +2532,7 @@ export default class BattleScene extends SceneBase {
if (modifier instanceof TerastallizeModifier) {
modifiersToRemove.push(...(this.findModifiers(m => m instanceof TerastallizeModifier && m.pokemonId === modifier.pokemonId, false)));
}
if ((modifier as PersistentModifier).add(this.enemyModifiers, false, this)) {
if ((modifier as PersistentModifier).add(this.enemyModifiers, false)) {
if (modifier instanceof PokemonFormChangeItemModifier || modifier instanceof TerastallizeModifier) {
const pokemon = this.getPokemonById(modifier.pokemonId);
if (pokemon) {
Expand Down Expand Up @@ -2563,19 +2566,19 @@ export default class BattleScene extends SceneBase {
*/
tryTransferHeldItemModifier(itemModifier: PokemonHeldItemModifier, target: Pokemon, playSound: boolean, transferQuantity: integer = 1, instant?: boolean, ignoreUpdate?: boolean): Promise<boolean> {
return new Promise(resolve => {
const source = itemModifier.pokemonId ? itemModifier.getPokemon(target.scene) : null;
const source = itemModifier.pokemonId ? itemModifier.getPokemon() : null;
const cancelled = new Utils.BooleanHolder(false);
Utils.executeIf(!!source && source.isPlayer() !== target.isPlayer(), () => applyAbAttrs(BlockItemTheftAbAttr, source! /* checked in condition*/, cancelled)).then(() => {
if (cancelled.value) {
return resolve(false);
}
const newItemModifier = itemModifier.clone() as PokemonHeldItemModifier;
newItemModifier.pokemonId = target.id;
const matchingModifier = target.scene.findModifier(m => m instanceof PokemonHeldItemModifier
const matchingModifier = this.findModifier(m => m instanceof PokemonHeldItemModifier
&& (m as PokemonHeldItemModifier).matchType(itemModifier) && m.pokemonId === target.id, target.isPlayer()) as PokemonHeldItemModifier;
let removeOld = true;
if (matchingModifier) {
const maxStackCount = matchingModifier.getMaxStackCount(target.scene);
const maxStackCount = matchingModifier.getMaxStackCount();
if (matchingModifier.stackCount >= maxStackCount) {
return resolve(false);
}
Expand Down Expand Up @@ -2682,7 +2685,7 @@ export default class BattleScene extends SceneBase {
count = Math.max(count, Math.floor(chances / 2));
}
getEnemyModifierTypesForWave(difficultyWaveIndex, count, [ enemyPokemon ], this.currentBattle.battleType === BattleType.TRAINER ? ModifierPoolType.TRAINER : ModifierPoolType.WILD, upgradeChance)
.map(mt => mt.newModifier(enemyPokemon).add(this.enemyModifiers, false, this));
.map(mt => mt.newModifier(enemyPokemon).add(this.enemyModifiers, false));
}
return true;
});
Expand All @@ -2706,7 +2709,7 @@ export default class BattleScene extends SceneBase {
* @param pokemon - If specified, only removes held items from that {@linkcode Pokemon}
*/
clearEnemyHeldItemModifiers(pokemon?: Pokemon): void {
const modifiersToRemove = this.enemyModifiers.filter(m => m instanceof PokemonHeldItemModifier && (!pokemon || m.getPokemon(this) === pokemon));
const modifiersToRemove = this.enemyModifiers.filter(m => m instanceof PokemonHeldItemModifier && (!pokemon || m.getPokemon() === pokemon));
for (const m of modifiersToRemove) {
this.enemyModifiers.splice(this.enemyModifiers.indexOf(m), 1);
}
Expand Down Expand Up @@ -2818,9 +2821,9 @@ export default class BattleScene extends SceneBase {
* @param ...args The list of arguments needed to invoke `modifierType.apply`
* @returns the list of all modifiers that matched `modifierType` and were applied.
*/
applyShuffledModifiers<T extends PersistentModifier>(scene: BattleScene, modifierType: Constructor<T>, player: boolean = true, ...args: Parameters<T["apply"]>): T[] {
applyShuffledModifiers<T extends PersistentModifier>(modifierType: Constructor<T>, player: boolean = true, ...args: Parameters<T["apply"]>): T[] {
let modifiers = (player ? this.modifiers : this.enemyModifiers).filter((m): m is T => m instanceof modifierType && m.shouldApply(...args));
scene.executeWithSeedOffset(() => {
gScene.executeWithSeedOffset(() => {
const shuffleModifiers = mods => {
if (mods.length < 1) {
return mods;
Expand All @@ -2829,7 +2832,7 @@ export default class BattleScene extends SceneBase {
return [ mods[rand], ...shuffleModifiers(mods.filter((_, i) => i !== rand)) ];
};
modifiers = shuffleModifiers(modifiers);
}, scene.currentBattle.turn << 4, scene.waveSeed);
}, gScene.currentBattle.turn << 4, gScene.waveSeed);
return this.applyModifiersInternal(modifiers, player, args);
}

Expand Down Expand Up @@ -3065,7 +3068,7 @@ export default class BattleScene extends SceneBase {
if (participated && pokemonDefeated) {
partyMember.addFriendship(FRIENDSHIP_GAIN_FROM_BATTLE);
const machoBraceModifier = partyMember.getHeldItems().find(m => m instanceof PokemonIncrementingStatModifier);
if (machoBraceModifier && machoBraceModifier.stackCount < machoBraceModifier.getMaxStackCount(this)) {
if (machoBraceModifier && machoBraceModifier.stackCount < machoBraceModifier.getMaxStackCount()) {
machoBraceModifier.stackCount++;
this.updateModifiers(true, true);
partyMember.updateInfo();
Expand Down
Loading

0 comments on commit ffb5382

Please sign in to comment.