Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }