UNPKG

werewolf-core

Version:

Are you a WEREWOLF?

53 lines (52 loc) 2.56 kB
import { Event, EventBase } from './event'; import { Player, Players } from './player'; import { Effect, Effects } from './effect'; import { Field } from './field'; import { HandlerParam, HandlerParamWithPlayer, HandlerParamWithEffect, HandlerProducer, KeyedHandlerProducers, EventAction, EventActions } from './handler'; export interface Package<P extends Player, E extends Effect, F extends Field> { ruleProducers: Array<HandlerProducer<P, E, F, EventRunner<P, E, F>, HandlerParam<P, E, F, Event, EventRunner<P, E, F>>>>; playerProducers: KeyedHandlerProducers<P, E, F, EventRunner<P, E, F>, HandlerParamWithPlayer<P, E, F, Event, EventRunner<P, E, F>>>; effectProducers: KeyedHandlerProducers<P, E, F, EventRunner<P, E, F>, HandlerParamWithEffect<P, E, F, Event, EventRunner<P, E, F>>>; actions: EventActions<P, E, F, EventRunner<P, E, F>>; } export declare class Game<P extends Player, E extends Effect, F extends Field> { private players; private effects; private field; private ruleProducers; private playerProducers; private effectProducers; private actions; constructor(initField: F); loadRuleProducers(ps: Array<HandlerProducer<P, E, F, EventRunner<P, E, F>, HandlerParam<P, E, F, Event, EventRunner<P, E, F>>>>): void; loadPlayerProducers(ps: KeyedHandlerProducers<P, E, F, EventRunner<P, E, F>, HandlerParamWithPlayer<P, E, F, Event, EventRunner<P, E, F>>>): void; loadEffectProducers(ps: KeyedHandlerProducers<P, E, F, EventRunner<P, E, F>, HandlerParamWithEffect<P, E, F, Event, EventRunner<P, E, F>>>): void; loadActions(acts: { [event: string]: EventAction<P, E, F, Event, EventRunner<P, E, F>>; }): void; loadPackage(p: Package<P, E, F>): void; addPlayer(p: P): void; addEffect(e: E): void; removeEffect(id: string): void; runEvent<Ev extends Event>(e: Ev): Ev; getPlayers(): Players<P>; getEffects(): Effects<E>; getField(): F; } export declare class EventRunner<P extends Player, Ef extends Effect, F extends Field> { private handlers; private base; private resultObject?; private players; private effects; private field; constructor(players: Players<P>, effects: Effects<Ef>, field: F, handlers: Package<P, Ef, F>, base: EventBase | null, resultObject?: { players?: Players<P>; effects?: Effects<Ef>; field?: F; }); private runOneEvent<Ev>(e, subrunner); runEvent<Ev extends Event>(e: Ev): Ev; addEvent<Ev extends Event>(e: Ev): void; private branchRunner(base); }