public void SetPower_CallsOnPowerClearedWithPriorPowerAssignedToSlot()
        {
            const EPowerSetting expectedSetting = EPowerSetting.Primary;

            _assign.SetPower(_power, expectedSetting);
            _assign.SetPower(_otherPower, expectedSetting);

            Assert.IsTrue(_power.OnPowerClearedCalled);
        }
        public void ActivatePower_CanActivatePowerFalse_DoesNotActivatePower()
        {
            const EPowerSetting expectedSetting = EPowerSetting.Primary;

            _power.CanActivatePowerResult = false;

            _assign.SetPower(_power, expectedSetting);
            _assign.ActivatePower(expectedSetting);

            Assert.IsNull(_power.ActivatePowerGameObject);
        }
        public void ActivatePower_CanActivatePowerTrue_DoesActivatePower()
        {
            const EPowerSetting expectedSetting = EPowerSetting.Primary;

            _power.CanActivatePowerResult = true;

            _assign.SetPower(_power, expectedSetting);
            _assign.ActivatePower(expectedSetting);

            Assert.AreSame(_power.ActivatePowerGameObject, _assign.gameObject);
        }
        public void ActivatePower(EPowerSetting inPowerSetting)
        {
            var activatedPower = false;

            if (_registeredPowers.ContainsKey(inPowerSetting) &&
                _registeredPowers[inPowerSetting].CurrentPower.CanActivatePower(gameObject))
            {
                _registeredPowers[inPowerSetting].CurrentPower.ActivatePower(gameObject);
                activatedPower = true;
            }

            UnityMessageEventFunctions.InvokeMessageEventWithDispatcher(gameObject, new PowerActivationAttemptMessage(inPowerSetting, activatedPower));
        }
        public void ActivatePower_NoPowerSet_SendsAttemptMessageRecordingFailure()
        {
            const EPowerSetting expectedSetting = EPowerSetting.Primary;

            var messageSpy = new UnityTestMessageHandleResponseObject <PowerActivationAttemptMessage>();

            var handle =
                UnityMessageEventFunctions.RegisterActionWithDispatcher <PowerActivationAttemptMessage>(_assign.gameObject,
                                                                                                        messageSpy.OnResponse);

            _assign.ActivatePower(expectedSetting);

            UnityMessageEventFunctions.UnregisterActionWithDispatcher(_assign.gameObject, handle);

            Assert.IsTrue(messageSpy.ActionCalled);
            Assert.AreEqual(expectedSetting, messageSpy.MessagePayload.PowerSetting);
            Assert.AreEqual(false, messageSpy.MessagePayload.Success);
        }
        public void SetPower_SendsPowerSetMessageContainingPower()
        {
            const EPowerSetting expectedSetting = EPowerSetting.Primary;

            var messageSpy = new UnityTestMessageHandleResponseObject <PowerSetMessage>();

            var handle =
                UnityMessageEventFunctions.RegisterActionWithDispatcher <PowerSetMessage>(_assign.gameObject,
                                                                                          messageSpy.OnResponse);

            _assign.SetPower(_power, expectedSetting);

            UnityMessageEventFunctions.UnregisterActionWithDispatcher(_assign.gameObject, handle);

            Assert.IsTrue(messageSpy.ActionCalled);
            Assert.AreEqual(expectedSetting, messageSpy.MessagePayload.PowerSetting);
            Assert.AreSame(_power, messageSpy.MessagePayload.PowerInterface);
        }
        public void SetPower_SendsPowerUpdateMessageContainingCorrectPowerStatus()
        {
            const EPowerSetting expectedSetting = EPowerSetting.Primary;

            var messageSpy = new UnityTestMessageHandleResponseObject <PowerUpdateMessage>();

            var handle =
                UnityMessageEventFunctions.RegisterActionWithDispatcher <PowerUpdateMessage>(_assign.gameObject,
                                                                                             messageSpy.OnResponse);

            _assign.SetPower(_power, expectedSetting);

            UnityMessageEventFunctions.UnregisterActionWithDispatcher(_assign.gameObject, handle);

            Assert.IsTrue(messageSpy.ActionCalled);
            Assert.AreEqual(expectedSetting, messageSpy.MessagePayload.PowerSetting);
            Assert.AreEqual(_power.CanActivatePowerResult, messageSpy.MessagePayload.Active);
            Assert.AreEqual(_power.GetPowerCooldownPercentageResult, messageSpy.MessagePayload.UpdatePercentage);
        }
        // IPowerAssignmentInterface
        public void SetPower(IPowerInterface inPower, EPowerSetting inPowerSetting)
        {
            var newStatus = new PowerStatus(inPower, inPower.CanActivatePower(gameObject));

            if (_registeredPowers.ContainsKey(inPowerSetting))
            {
                _registeredPowers[inPowerSetting].CurrentPower.OnPowerCleared();
                _registeredPowers[inPowerSetting] = newStatus;
            }
            else
            {
                _registeredPowers.Add(inPowerSetting, newStatus);
            }

            inPower.OnPowerSet(gameObject);

            UnityMessageEventFunctions.InvokeMessageEventWithDispatcher(gameObject, new PowerSetMessage(inPower, inPowerSetting));
            UnityMessageEventFunctions.InvokeMessageEventWithDispatcher(gameObject, new PowerUpdateMessage(inPowerSetting, newStatus.Activatable, inPower.GetPowerCooldownPercentage()));
        }
        public void Update_PowerActive_DoesNotSendsPowerUpdateMessage()
        {
            const EPowerSetting expectedSetting = EPowerSetting.Primary;

            _power.CanActivatePowerResult = true;

            _assign.SetPower(_power, expectedSetting);

            var messageSpy = new UnityTestMessageHandleResponseObject <PowerUpdateMessage>();

            var handle =
                UnityMessageEventFunctions.RegisterActionWithDispatcher <PowerUpdateMessage>(_assign.gameObject,
                                                                                             messageSpy.OnResponse);

            _assign.TestUpdate();

            UnityMessageEventFunctions.UnregisterActionWithDispatcher(_assign.gameObject, handle);

            Assert.IsFalse(messageSpy.ActionCalled);
        }
Esempio n. 10
0
 public PowerUpdateMessage(EPowerSetting inPowerSetting, bool inActive, float inUpdatePercentage)
 {
     PowerSetting     = inPowerSetting;
     Active           = inActive;
     UpdatePercentage = inUpdatePercentage;
 }
Esempio n. 11
0
 public PowerActivationAttemptMessage(EPowerSetting inPowerSetting, bool inSuccess)
     : base()
 {
     PowerSetting = inPowerSetting;
     Success      = inSuccess;
 }
Esempio n. 12
0
 public PowerSetMessage(IPowerInterface inPowerInterface, EPowerSetting inPowerSetting)
     : base()
 {
     PowerInterface = inPowerInterface;
     PowerSetting   = inPowerSetting;
 }
Esempio n. 13
0
 public void ActivatePower(EPowerSetting inPowerSetting)
 {
     ActivatePowerSetting = inPowerSetting;
 }
Esempio n. 14
0
 public void SetPower(IPowerInterface inPower, EPowerSetting inPowerSetting)
 {
     SetPowerInterface = inPower;
     SetPowerSetting   = inPowerSetting;
 }