PhaseFactory
pixi-reels / index / PhaseFactory
Class: PhaseFactory
Defined in: spin/phases/PhaseFactory.ts:31
Factory for creating reel phase instances.
Ships with all four default phases pre-registered. Users can override any phase by registering a custom constructor or factory function. Use registerFactory() when the phase needs extra construction-time config (e.g. cascade drop settings baked in via closure).
Constructors#
Constructor#
new PhaseFactory(): PhaseFactory;
Defined in: spin/phases/PhaseFactory.ts:34
Returns#
PhaseFactory
Methods#
create()#
create<T extends ReelPhase<any, SpeedProfile> = ReelPhase<any, SpeedProfile>>(
name: string,
reel: Reel,
speed: SpeedProfile
): T;
Defined in: spin/phases/PhaseFactory.ts:79
Create a phase instance for a reel.
Type Parameters#
| Type Parameter | Default type |
|---|---|
T extends ReelPhase<any, SpeedProfile> | ReelPhase<any, SpeedProfile> |
Parameters#
| Parameter | Type |
|---|---|
name | string |
reel | Reel |
speed | SpeedProfile |
Returns#
T
has()#
has(name: string): boolean;
Defined in: spin/phases/PhaseFactory.ts:93
Parameters#
| Parameter | Type |
|---|---|
name | string |
Returns#
boolean
register()#
register<P extends SpeedProfile, T extends ReelPhase<any, any>, O = undefined>(
name: string,
PhaseClass: PhaseConstructor<T, P, O>,
options?: O
): void;
Defined in: spin/phases/PhaseFactory.ts:56
Register or override a phase type by constructor, with the options its
constructor takes as a third argument. Registering a built-in under its
own key with options is how a game reconfigures it without subclassing:
Type Parameters#
| Type Parameter | Default type |
|---|---|
P extends SpeedProfile | - |
T extends ReelPhase<any, any> | - |
O | undefined |
Parameters#
| Parameter | Type |
|---|---|
name | string |
PhaseClass | PhaseConstructor<T, P, O> |
options? | O |
Returns#
void
Example#
factory.register('stop', StopPhase, {
steps: (steps) => insertAfter(steps, 'land', step('flash', (ctx) => flash(ctx.reel))),
});
A phase declared against a wider profile (`ReelPhase<Config, MyProfile>`)
registers the same way: the manager hands every phase the profile
instance the game registered, so the extra fields are there at run time,
and narrowing to `P` here is what lets that declaration typecheck.
registerFactory()#
registerFactory<P extends SpeedProfile, T extends ReelPhase<any, any>>(name: string, factory: PhaseCreatorFn<T, P>): void;
Defined in: spin/phases/PhaseFactory.ts:71
Register or override a phase type by factory function. Use this when the phase needs extra args at construction time.
Type Parameters#
| Type Parameter |
|---|
P extends SpeedProfile |
T extends ReelPhase<any, any> |
Parameters#
| Parameter | Type |
|---|---|
name | string |
factory | PhaseCreatorFn<T, P> |
Returns#
void
Example#
factory.registerFactory('cascade:dropIn', (reel, speed) => new CascadeDropInPhase(reel, speed, dropConfig));