public void UpdateAvatarState(int avatarIndex, Constant.AvatarState state, bool isEndDayStateLoop) { Reward reward = new Reward(); switch (avatarIndex) { case 0: reward = avatarData1.SetState(state, cafeLevel, dormLevel, factoryLevel, null, isEndDayStateLoop); break; case 1: reward = avatarData2.SetState(state, cafeLevel, dormLevel, factoryLevel, null, isEndDayStateLoop); break; case 2: reward = avatarData3.SetState(state, cafeLevel, dormLevel, factoryLevel, null, isEndDayStateLoop); break; } if (reward.energyGain > 0) { // Update material cost if from factory working to idling if (factoryLevel == 1) { materialAmount += Constant.FACTORY_MATERIAL_COST_LEVEL_1; } else if (factoryLevel == 2) { materialAmount += Constant.FACTORY_MATERIAL_COST_LEVEL_2; } // Update enercy collected if from factory working to idling energyAmount += reward.energyGain; Debug.Log("Reward: energy get " + reward.energyGain); } // Update collected item from adventure foreach (var item in reward.items) { int alreayHaveCount = 0; bool hasValue = this.items.TryGetValue(item.Key, out alreayHaveCount); if (hasValue) { this.items[item.Key] = alreayHaveCount + item.Value; } else { this.items[item.Key] = item.Value; } } }
public void StartAdventure() { //validate whether the avatar has enough sanity & hungry if (selectedIndexAdventure != -1 && selectedIndexAvatar != -1 && currentSelectedAdventure != null && currentSelectedAvatarData != null) { // Deduct energy & sanity currentSelectedAvatarData.hungry -= currentSelectedAdventure.hungryCost; currentSelectedAvatarData.sanity -= currentSelectedAdventure.sanityCost; currentSelectedAvatarData.SetState(Constant.AvatarState.ADVENTURE, envManager.player.playerData.cafeLevel, envManager.player.playerData.dormLevel, envManager.player.playerData.factoryLevel, currentSelectedAdventure, false); } else { Debug.LogError("Not able to start adventure with adv:" + selectedIndexAdventure + ", ava:" + selectedIndexAvatar); } }