mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-04 07:22:19 +02:00
Add timing modifier and fix post speed ordering
This commit is contained in:
parent
0121589d6f
commit
2ea180e94c
5
src/enums/move-phase-timing-modifier.ts
Normal file
5
src/enums/move-phase-timing-modifier.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
export enum MovePhaseTimingModifier {
|
||||||
|
LAST = 0,
|
||||||
|
NORMAL,
|
||||||
|
FIRST
|
||||||
|
}
|
@ -1,5 +1,8 @@
|
|||||||
|
import type { PhaseConditionFunc } from "#app/@types/phase-condition";
|
||||||
import type { MovePhase } from "#app/phases/move-phase";
|
import type { MovePhase } from "#app/phases/move-phase";
|
||||||
import { PokemonPhasePriorityQueue } from "#app/queues/pokemon-phase-priority-queue";
|
import { PokemonPhasePriorityQueue } from "#app/queues/pokemon-phase-priority-queue";
|
||||||
|
import { isNullOrUndefined } from "#app/utils/common";
|
||||||
|
import type { MovePhaseTimingModifier } from "#enums/move-phase-timing-modifier";
|
||||||
|
|
||||||
export class MovePhasePriorityQueue extends PokemonPhasePriorityQueue<MovePhase> {
|
export class MovePhasePriorityQueue extends PokemonPhasePriorityQueue<MovePhase> {
|
||||||
public override reorder(): void {
|
public override reorder(): void {
|
||||||
@ -7,6 +10,13 @@ export class MovePhasePriorityQueue extends PokemonPhasePriorityQueue<MovePhase>
|
|||||||
this.sortPostSpeed();
|
this.sortPostSpeed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public setTimingModifier(condition: PhaseConditionFunc, modifier: MovePhaseTimingModifier): void {
|
||||||
|
const phase = this.queue.find(phase => condition(phase));
|
||||||
|
if (!isNullOrUndefined(phase)) {
|
||||||
|
phase.timingModifier = modifier;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private sortPostSpeed(): void {
|
private sortPostSpeed(): void {
|
||||||
this.queue.sort((a: MovePhase, b: MovePhase) => {
|
this.queue.sort((a: MovePhase, b: MovePhase) => {
|
||||||
const priority = [a, b].map(movePhase => {
|
const priority = [a, b].map(movePhase => {
|
||||||
@ -18,11 +28,17 @@ export class MovePhasePriorityQueue extends PokemonPhasePriorityQueue<MovePhase>
|
|||||||
movePhase.move.getMove().getPriorityModifier(movePhase.pokemon),
|
movePhase.move.getMove().getPriorityModifier(movePhase.pokemon),
|
||||||
);
|
);
|
||||||
|
|
||||||
if (priority[0] === priority[1] && priorityModifiers[0] !== priorityModifiers[1]) {
|
const timingModifiers = [a, b].map(movePhase => movePhase.timingModifier);
|
||||||
return priorityModifiers[0] - priorityModifiers[1];
|
|
||||||
|
if (timingModifiers[0] !== timingModifiers[1]) {
|
||||||
|
return timingModifiers[1] - timingModifiers[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
return priority[0] - priority[1];
|
if (priority[0] === priority[1] && priorityModifiers[0] !== priorityModifiers[1]) {
|
||||||
|
return priorityModifiers[1] - priorityModifiers[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
return priority[1] - priority[0];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user