mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-06-21 00:52:47 +02:00
* Move game-mode to its own file Reduces circular imports to 325 * Move battler-index to own file Reduces circular deps to 314 * Move trainer-variant to own file Reduces circ deps to 313 * Move enums in pokemon to their own file * Move arena-tag-type to its own file * Move pokemon-moves to its own file * Move command to own file * Move learnMoveType to own file * Move form change item to own file * Move battlerTagLapseType to own file * Move anim enums to own shared file * Move enums out of challenges * Move species form change triggers to own file Reduces circ imports to 291 * Update test importing pokemon move * Replace move attribute imports with string names * Untangle circular deps from game data * Fix missing string call in switch summon phase * Apply kev's suggestions from code review Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> * Ensure ChargeMove's is method calls super * Use InstanceType for proper narrowing * Apply kev's suggestions from code review Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com> --------- Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import type {
|
|
AttackMove,
|
|
StatusMove,
|
|
SelfStatusMove,
|
|
ChargingAttackMove,
|
|
ChargingSelfStatusMove,
|
|
MoveAttrConstructorMap,
|
|
MoveAttr,
|
|
} from "#app/data/moves/move";
|
|
|
|
export type MoveAttrFilter = (attr: MoveAttr) => boolean;
|
|
|
|
export type * from "#app/data/moves/move";
|
|
|
|
/**
|
|
* Map of move subclass names to their respective classes.
|
|
* Does not include the ChargeMove subclasses. For that, use `ChargingMoveClassMap`.
|
|
*
|
|
* @privateremarks
|
|
* The `never` field (`declare private _: never`) in some classes is necessary
|
|
* to ensure typescript does not improperly narrow a failed `is` guard to `never`.
|
|
*
|
|
* For example, if we did not have the never, and wrote
|
|
* ```
|
|
* function Foo(move: Move) {
|
|
* if (move.is("AttackMove")) {
|
|
*
|
|
* } else if (move.is("StatusMove")) { // typescript errors on the `is`, saying that `move` is `never`
|
|
*
|
|
* }
|
|
* ```
|
|
*/
|
|
export type MoveClassMap = {
|
|
AttackMove: AttackMove;
|
|
StatusMove: StatusMove;
|
|
SelfStatusMove: SelfStatusMove;
|
|
};
|
|
|
|
/**
|
|
* Union type of all move subclass names
|
|
*/
|
|
export type MoveKindString = "AttackMove" | "StatusMove" | "SelfStatusMove";
|
|
|
|
/**
|
|
* Map of move attribute names to attribute instances.
|
|
*/
|
|
export type MoveAttrMap = {
|
|
[K in keyof MoveAttrConstructorMap]: InstanceType<MoveAttrConstructorMap[K]>;
|
|
};
|
|
|
|
/**
|
|
* Union type of all move attribute names as strings.
|
|
*/
|
|
export type MoveAttrString = keyof MoveAttrMap;
|
|
|
|
export type ChargingMove = ChargingAttackMove | ChargingSelfStatusMove;
|