示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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);
                }
            }
        }