Esempio n. 1
0
        public void CalculateCurrentEnergyVerification3()
        {
            DateTime lastTimeAtMaxEnergy = DateTime.Now.ToUniversalTime() - new TimeSpan(1, 0, 0);             // 1 hour ago
            float    currentEnergy       = Energy.CalculateCurrentEnergy(100.0f, 83.0f, lastTimeAtMaxEnergy);

            Assert.AreEqual(100.0f, currentEnergy);
        }
Esempio n. 2
0
        public void CalculateCurrentEnergyVerification1()
        {
            DateTime lastTimeAtMaxEnergy = DateTime.Now.ToUniversalTime() - new TimeSpan(1, 0, 0);             // 1 hour ago
            float    currentEnergy       = Energy.CalculateCurrentEnergy(130.0f, 60.0f, lastTimeAtMaxEnergy);

            Assert.IsWithin(80.0f, currentEnergy, 0.01f);
        }
Esempio n. 3
0
        public void CalculateCurrentEnergyVerification2()
        {
            DateTime lastTimeAtMaxEnergy = DateTime.Now.ToUniversalTime() - new TimeSpan(56, 45, 23);
            float    currentEnergyAtCap  = Energy.CalculateCurrentEnergy(75.0f, 60.0f, lastTimeAtMaxEnergy);

            Assert.AreEqual(75.0f, currentEnergyAtCap);
        }
Esempio n. 4
0
        public void UseEnergy(Message message, Guid sessionId)
        {
            if (!FashionMinigameServer.VerifyMessageData(message, 2, mLogger))
            {
                // Drop the message
                return;
            }

            ServerAccount serverAccount = mGuidToServerAccount(sessionId);
            float         energyToUse   = CheckType.TryAssignType <float>(message.Data[1]);

            GetCurrentEnergyData
            (
                serverAccount,
                delegate(float lastEnergy, float maxEnergy, DateTime lastUpdate)
            {
                List <object> responseData = new List <object>();
                responseData.Add(message.Data[0]);                         // callback Id

                float energy = Energy.CalculateCurrentEnergy(maxEnergy, lastEnergy, lastUpdate);
                if (energy >= energyToUse)
                {
                    float newEnergy = energy - energyToUse;
                    responseData.Add(Energy.UseRequestResult.Success.ToString());
                    responseData.Add(newEnergy.ToString());
                    responseData.Add(maxEnergy.ToString());

                    if (energy == maxEnergy)
                    {
                        SetEnergyRegenDate(serverAccount, DateTime.UtcNow);
                        responseData.Add(DateTime.UtcNow.ToString());
                    }
                    else
                    {
                        responseData.Add(lastUpdate.ToString());
                    }

                    SetEnergy(serverAccount, newEnergy);
                }
                else
                {
                    responseData.Add(Energy.UseRequestResult.NotEnoughEnergy.ToString());
                }

                Message responseMessage = new Message(MessageType.FashionMinigame, responseData);
                mSendMessageToClientCallback(responseMessage, sessionId);
            }
            );
        }
Esempio n. 5
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);
        }
Esempio n. 6
0
        private void UpdateEnergyMeter()
        {
            int currentEnergy = (int)Energy.CalculateCurrentEnergy(mMaxEnergy, mLastKnownEnergy, (DateTime)mLastEnergyTime);

            mEnergyLabel.Text = currentEnergy + "/" + mMaxEnergy.ToString("f0");
            float progress = (currentEnergy / mMaxEnergy);

            mEnergyMeter.SetProgress(progress);
            if (progress < 1.0)
            {
                TimeSpan ts = Energy.GetTimeToNextRecharge(mMaxEnergy, mLastKnownEnergy, (DateTime)mLastEnergyTime);
                mEnergyTimerLabel.Text = String.Format("More in {0}:{1:00}", ts.Minutes, ts.Seconds);
            }
            else
            {
                mEnergyTimerLabel.Text = "Energy Full";
            }
        }
Esempio n. 7
0
        public void GetCurrentEnergyVerification()
        {
            // User went from 100 to 0 an hour ago
            SetupEnergyData(0, 100, DateTime.UtcNow - new TimeSpan(1, 0, 0));

            bool callbackCalledImmediately = false;

            mEnergyManager.GetCurrentEnergyData
            (
                MockServerAccount,
                delegate(float lastEnergy, float maxEnergy, DateTime rechargeDate)
            {
                callbackCalledImmediately = true;
                float currentEnergy       = Energy.CalculateCurrentEnergy(maxEnergy, lastEnergy, rechargeDate);
                Assert.IsWithin(60.0f * (float)Energy.RECHARGE_RATE, currentEnergy, 0.01f);
            }
            );
            Assert.IsTrue(callbackCalledImmediately);
        }
Esempio n. 8
0
        public void RefillEnergyVerification()
        {
            SetupEnergyData(40, 100, DateTime.UtcNow - new TimeSpan(1, 0, 0));

            bool getCurrentEnergyDataReturned = false;

            mEnergyManager.RefillEnergy(MockServerAccount);
            mEnergyManager.GetCurrentEnergyData
            (
                MockServerAccount,
                delegate(float lastEnergy, float maxEnergy, DateTime rechargeDate)
            {
                getCurrentEnergyDataReturned = true;
                float currentEnergy          = Energy.CalculateCurrentEnergy(maxEnergy, lastEnergy, rechargeDate);
                Assert.AreEqual(maxEnergy, currentEnergy);
            }
            );
            Assert.IsTrue(getCurrentEnergyDataReturned);
        }