public XmasModel(XmasWorld world, ActionManager actman, EventManager evtman, XmasFactory factory) { World = world; ActionManager = actman; EventManager = evtman; Factory = factory; world.EventManager = evtman; EventManager.Register(new Trigger<EngineCloseEvent>(evtman_EngineClose)); ActionManager.ActionQueuing += actman_ActionQueuing; ActionManager.ActionQueued += actman_ActionQueued; foreach (var action in ActionManager.QueuedActions) { this.AddActor(action); } }
public void ExecuteActionWithGlobalTrigger_UnitDealsDamageToAnotherUnitWithDamage_EventsWasFiredOnBothActions() { EventManager gem = new EventManager(); ActionManager actman = new ActionManager(gem); Unit A = new Unit(); Unit B = new Unit(); A.ActionManager = actman; B.ActionManager = actman; int dmg = int.MaxValue; int actualTimesFired = 0; Trigger T = new Trigger<UnitTakesDamagePostEvent>(_ => actualTimesFired++); EntityXmasAction ga1 = new DamageUnitTargetAction(B, dmg); EntityXmasAction ga2 = new DamageUnitTargetAction(A, dmg); gem.Register(T); gem.AddEntity(A); gem.AddEntity(B); A.QueueAction(ga1); B.QueueAction(ga2); actman.ExecuteActions(); int expectedTimeFired = 2; Assert.AreEqual(expectedTimeFired, actualTimesFired); }
public void RemoveTrigger_simpleGlobalTrigger_NoEventFired() { EventManager gem = new EventManager(); ActionManager actman = new ActionManager(gem); Unit A = new Unit(); Unit B = new Unit(); A.ActionManager = actman; B.ActionManager = actman; int dmg = int.MaxValue; bool eventFired = false; Trigger T = new Trigger<UnitTakesDamagePostEvent>(_ => eventFired = true); EntityXmasAction ga1 = new DamageUnitTargetAction(B, dmg); gem.Register(T); gem.Deregister(T); A.QueueAction(ga1); Assert.IsFalse(eventFired); }