public void TickPhasesAreExecutedInCorrectOrder() { List <TickPhase> executionOrder = new List <TickPhase>(); TickPhase phase0 = new TickPhase(0); TickPhase phase1 = new TickPhase(1); TickPhase phase4 = new TickPhase(4); Hero hero = new Hero(team: default, initialHp: default, new IRequisite[] { CreatePhaseAbility(phase1), CreatePhaseAbility(phase4), CreatePhaseAbility(phase0) });
public RemoveRequisiteAbility(IRequisite requisiteToRemove, TickPhase phase) { _requisiteToRemove = requisiteToRemove; Phase = phase; Id = new RequisiteId("Remove" + requisiteToRemove.Id); }
public static IActiveAbility CreateActiveAbility(TickPhase phase, Action <Hero, GameContext> actionLambda) => CreateActiveAbility ( phase, (hero, context) => CreateAction(hero, actionLambda) );
public LambdaActiveAbility(TickPhase phase, Func <Hero, GameContext, IReadOnlyCollection <IAction> > actionFactory) { Phase = phase; _actionFactory = actionFactory; Id = new RequisiteId(Guid.NewGuid().ToString()); }
public static IActiveAbility CreateActiveAbility(TickPhase phase, Func <Hero, GameContext, IReadOnlyCollection <IAction> > actionFactory) => new LambdaActiveAbility(phase, actionFactory);
public static IActiveAbility CreateActiveAbility(TickPhase phase, Func <Hero, GameContext, IAction> actionFactory) => CreateActiveAbility(phase, (h, c) => actionFactory(h, c).AsArray());