示例#1
0
        public void StartLevel()
        {
            FashionGameCommands.TryUseEnergy(mLevel.RequiredEnergy, delegate(Message useEnergyResultMessage)
            {
                Energy.UseRequestResult useEnergyResult = (Energy.UseRequestResult)Enum.Parse(typeof(Energy.UseRequestResult), (string)useEnergyResultMessage.Data[0]);

                switch (useEnergyResult)
                {
                case Energy.UseRequestResult.Success:
                    StartWaves();
                    break;

                case Energy.UseRequestResult.NotEnoughEnergy:
                    EventLogger.Log(LogGlobals.CATEGORY_FASHION_MINIGAME, LogGlobals.OUT_OF_ENERGY, "Level", mLevel.Name);
                    mLevel.Gui.ShowOutOfEnergyGui();
                    return;

                default:
                    throw new NotImplementedException("Unhandled Energy.UseRequestResult");
                }

                GameFacade.Instance.RetrieveMediator <FashionGameGui>().SetEnergy
                (
                    float.Parse((string)useEnergyResultMessage.Data[1]),
                    float.Parse((string)useEnergyResultMessage.Data[2]),
                    DateTime.Parse((string)useEnergyResultMessage.Data[3])
                );
            });
        }
示例#2
0
        public void UsingEnergyStartingAtMaxUpdatesRechargeDate()
        {
            // Fresh user (from yesterday)
            SetupEnergyData(100, 100, DateTime.UtcNow - new TimeSpan(24, 0, 0));

            Message useEnergyMessage = new Message
                                       (
                MessageType.FashionMinigame,
                new List <object>(new object[]
            {
                "0",                                    // callbackId
                "50"                                    // energy to use
            })
                                       );

            bool responseCalled = false;

            mClientMessageFunc = delegate(Message clientResponse)
            {
                responseCalled = true;

                Energy.UseRequestResult useEnergyResult = (Energy.UseRequestResult)Enum.Parse(typeof(Energy.UseRequestResult), (string)clientResponse.Data[0]);
                Assert.AreEqual(Energy.UseRequestResult.Success, useEnergyResult);

                bool getEnergyCalled = false;
                mEnergyManager.GetCurrentEnergyData
                (
                    MockServerAccount,
                    delegate(float lastEnergy, float maxEnergy, DateTime rechargeDate)
                {
                    getEnergyCalled     = true;
                    float currentEnergy = Energy.CalculateCurrentEnergy(maxEnergy, lastEnergy, rechargeDate);
                    Assert.IsWithin(50.0f, currentEnergy, 0.01f, "Energy should be removed from database when UseEnergy is called");
                    Assert.IsTrue
                    (
                        (DateTime.UtcNow - rechargeDate).TotalHours < 1.0,
                        "The recharge date was not updated when UseEnergy was called with full energy (Expected: " + DateTime.UtcNow + ", Actual: " + rechargeDate + ")"
                    );
                }
                );
                Assert.IsTrue(getEnergyCalled);
            };

            mEnergyManager.UseEnergy(useEnergyMessage, Guid.Empty);

            // make sure all the necessary parts are mocked out and that the message wasn't just dropped
            Assert.IsTrue(responseCalled);
        }