public bool CanOpenChest(ITimedChestData i_data)
        {
            int keysRequired = i_data.GetKeysRequired();
            int keysOwned    = GetCurrentKeysForChest(i_data.GetKeyId());

            return(keysOwned >= keysRequired);
        }
Exemple #2
0
 public void CommonInstall()
 {
     MockStringTable      = Substitute.For <IStringTableManager>();
     MockSaveData         = Substitute.For <ITimedChestSaveData>();
     MockData             = Substitute.For <ITimedChestData>();
     MockRewardSpawner    = Substitute.For <ISingleRewardPM_Spawner>();
     MockCountdownSpawner = Substitute.For <IMyCountdown_Spawner>();
     MockBusyIndicator    = Substitute.For <IAppBusyPM>();
 }
        private void SendOpenRequestToServer(ITimedChestData i_data, ITimedChestPM i_chestPM)
        {
            Dictionary <string, string> cloudParams = new Dictionary <string, string>()
            {
                { "Id", i_data.GetId() }
            };

            mBackend.MakeCloudCall(BackendMethods.OPEN_TIMED_CHEST, cloudParams, (result) => {
                OnOpenResponseFromServer(JsonConvert.DeserializeObject <OpenTimedChestResponse>(result["data"]), i_chestPM, i_data);
            });
        }
        public void CanOpenChest_ReturnsAsExpected(int i_ownedKeys, int i_requiredKeys, bool i_expected)
        {
            MockInventory.GetItemCount(Arg.Any <string>()).Returns(i_ownedKeys);
            ITimedChestData mockData = Substitute.For <ITimedChestData>();

            mockData.GetKeysRequired().Returns(i_requiredKeys);

            bool canOpen = systemUnderTest.CanOpenChest(mockData);

            Assert.AreEqual(i_expected, canOpen);
        }
Exemple #5
0
        public TimedChestPM(IStringTableManager i_stringTable, ISingleRewardPM_Spawner i_rewardSpawner, ITimedChestSaveData i_saveData, IMyCountdown_Spawner i_countdownSpawner, IAppBusyPM i_busyIndicator, ITimedChestData i_data)
        {
            mStringTable      = i_stringTable;
            mCountdownSpawner = i_countdownSpawner;
            mRewardSpawner    = i_rewardSpawner;
            mSaveData         = i_saveData;
            mBusyIndicator    = i_busyIndicator;
            mData             = i_data;

            RewardPM = mRewardSpawner.CreateEmpty();

            UpdateProperties();
        }
        public void WhenChestIsOpened_KeysAreRemovedFromInventory()
        {
            IBasicBackend mockBackend = Substitute.For <IBasicBackend>();

            systemUnderTest.Init(mockBackend);

            ITimedChestData mockData = Substitute.For <ITimedChestData>();

            mockData.GetKeysRequired().Returns(5);
            mockData.GetKeyId().Returns("KeyId");

            systemUnderTest.OpenChest(mockData, Substitute.For <ITimedChestPM>());

            MockInventory.Received().RemoveUsesFromItem("KeyId", 5);
        }
        public void WhenChestOpenResponseIsReceived_ChestsNextAvailableTime_IsUpdatedInSaveData()
        {
            IOpenTimedChestResponse mockResponse = Substitute.For <IOpenTimedChestResponse>();

            mockResponse.IsOpeningVerified().Returns(true);
            mockResponse.GetNextAvailableTime().Returns(1000);

            ITimedChestData mockData = Substitute.For <ITimedChestData>();

            mockData.GetId().Returns("TestId");

            systemUnderTest.SaveData = new Dictionary <string, ITimedChestSaveDataEntry>()
            {
                { "TestId", new TimedChestSaveDataEntry()
                  {
                      NextAvailableTime = 0
                  } }
            };

            systemUnderTest.OnOpenResponseFromServer(mockResponse, Substitute.For <ITimedChestPM>(), mockData);

            Assert.AreEqual(1000, systemUnderTest.SaveData["TestId"].GetNextAvailableTime());
        }
 public ITimedChestPM Create(ITimedChestData i_data)
 {
     return(factory.Create(i_data));
 }
        public void OnOpenResponseFromServer(IOpenTimedChestResponse i_response, ITimedChestPM i_chestPM, ITimedChestData i_data)
        {
            if (i_response.IsOpeningVerified())
            {
                IDungeonReward reward = RewardSpawner.Create(i_response.GetReward());
                reward.Award();
                UpdateNextAvailableTime(i_data.GetId(), i_response.GetNextAvailableTime());

                i_chestPM.ShowOpenReward(reward);
                i_chestPM.UpdateProperties();
            }
        }
 public void OpenChest(ITimedChestData i_data, ITimedChestPM i_chestPM)
 {
     RemoveKeysFromInventory(i_data);
     SendOpenRequestToServer(i_data, i_chestPM);
 }
 private void RemoveKeysFromInventory(ITimedChestData i_data)
 {
     Inventory.RemoveUsesFromItem(i_data.GetKeyId(), i_data.GetKeysRequired());
 }