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]) ); }); }
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); }