/// <summary> /// Set the data of the given mission to the UI elements. /// </summary> /// <param name="mission"></param> public void SetMission(Mission mission) { this.mission = mission; // General Info if (Name != null) { Name.text = mission.GetName(); } if (Description != null) { Description.text = mission.GetDescription(); } if (Duration != null) { Duration.text = mission.Duration.ToString(); } if (RemainingDays != null) { RemainingDays.text = mission.RemainingDays.ToString(); } if (Reward != null) { Reward.text = mission.RewardMoney.ToString(); } SetSkillRequirements(); if (MissionRequirementContainer != null && SkillRequirementPrefab != null) { // Mission Requirements foreach (var missionRequirement in mission.Definition.RequiredMissions.RequiredMissions) { var missionR = Instantiate(MissionRequirementPrefab, MissionRequirementContainer.transform, false); missionR.transform.GetChild(1).GetComponent <Text>().text = missionRequirement.Title; } } if (DisplayMode == MissionUiModeSelector.InProgress || RemainingDays != null) { timeStepAction = OnTimeStep; TimeStepEvent.AddListener(timeStepAction); OnTimeStep(0); } if (SkillProgressUi != null) { SkillProgressUi.SetMission(mission); } if (AcceptMissionButton != null) { AcceptMissionButton.onClick.AddListener(OnAcceptMission); } if (SelectMissionButton != null) { SelectMissionButton.onClick.AddListener(OnSelectMission); } if (AbortMissionButton != null) { AbortMissionButton.onClick.AddListener(OnAbortMission); } }
/// <summary> /// This method is called when a mission finishes. /// It determines whether the mission is completed successfully or has failed. /// It also handles the payout as well as a possible reappearing of the mission. /// </summary> /// <param name="mission"></param> private void missionFinished(Mission mission) { data.InProgress.Remove(mission); InProgressMissionsChanged.Raise(); missionWorkers[mission].Cleanup(); missionWorkers.Remove(mission); mission.Cleanup(); if (mission.Completed()) { // Mission has completed successfully data.Completed.Add(mission); CompletedMissionsChanged.Raise(); //Notification if (mission.GetSuccessText() != null && mission.GetSuccessText() != "") { notificationManager.Success($"Mission: {mission.GetName()} completed! " + $"{mission.GetSuccessText()} You've earned: {mission.RewardMoney}$."); } else { notificationManager.Success($"Mission: {mission.GetName()} completed! You've earned: {mission.RewardMoney}$."); } // Payout ContentHub.Instance.bank.Income(mission.RewardMoney); } else { // Mission has failed List <string> failedSkills = new List <string>(); foreach (var skill in mission.Progress) { if (skill.Value < 1f) { failedSkills.Add(skill.Key.skillName); } } string failedSkillsText; if (failedSkills.Count > 1) { failedSkillsText = "Skills "; for (int i = 0; i < failedSkills.Count; i++) { if (i == failedSkills.Count - 1) { failedSkillsText += failedSkills[i] + " "; } else { failedSkillsText += failedSkills[i] + ", "; } } failedSkillsText += "have failed."; } else { failedSkillsText = "Skill " + failedSkills.First() + " has failed."; } //Notification if (mission.GetFailedText() != null && mission.GetFailedText() != "") { notificationManager.Success($"Mission: {mission.GetName()} failed! " + $"{mission.GetFailedText()} " + failedSkillsText); } else { notificationManager.Success($"Mission: {mission.GetName()} failed! " + failedSkillsText); } if (mission.Definition.Reappear) { data.Available.Add(mission); } } }