public void EndMission(MissionsEnum missionEnumValue) { AMission missionLogic = GetMissionLogic(missionEnumValue); ObjectiveList.Instance.HideObjectiveList(); Chaser.ResetChaserCount(); if (activeMissions.Contains(missionEnumValue)) { activeMissions.Remove(missionEnumValue); missionLogic.gameObject.SetActive(false); ProgressManager.Instance.UpdateMissionStatus(missionLogic, MissionStatusCode.Closed); StampCollectible collectible = GetStampCollectibleFromEnum(missionEnumValue); if (collectible != null) { ProgressManager.Instance.UnlockStampCollectible(collectible); } } else { Debug.LogError($"Tried to end an invalid mission: {missionEnumValue}"); } }
// Updates the status of the mission public void UpdateMissionStatus(AMission mission, MissionStatusCode status) { if (!missionsStatus.ContainsKey(mission)) { Debug.LogError("Trying to update a nonexistant mission"); return; } missionsStatus[mission] = status; }
public AMission StartMission(MissionsEnum missionEnumValue) { AMission missionLogic = GetMissionLogic(missionEnumValue); missionLogic.gameObject.SetActive(true); ProgressManager.Instance.AddMission(missionLogic); activeMissions.Add(missionEnumValue); SetObjectiveTextForList(missionEnumValue); return(missionLogic); }
public MissionStatusCode GetMissionStatus(AMission mission) { return(missionsStatus[mission]); }
public void AddMission(AMission mission) { missionsStatus.Add(mission, MissionStatusCode.Started); }
public override void OnInteract() { if (!DialogueManager.Instance.CheckIsAdvancing()) { // If input already disabled, then we won't continue from here and start a conversation if (!GameManager.Instance.GetPlayerController().EnablePlayerInput) { return; } // NPC has mission to offer (Mission should have been loaded in LoadConversation) if (currentMissionConvos != null) { // Start mission if (startedMission == null) { // Start mission and store reference because needed to end mission startedMission = MissionManager.Instance.StartMission(currentMissionConvos.missionsEnum); startedMission.OnMissionComplete += HandleOnMissionComplete; startedMission.OnMissionComplete += TryReactiveActions; startedMission.OnMissionReset += HandleOnMissionReset; startedMission.OnMissionReset += TryResetReactiveActions; } else if (startedMission != null && ProgressManager.Instance.GetMissionStatus(startedMission) == MissionStatusCode.Started) { //Must have this case because it is the catch for a during mission interaction (without this it will go to else) } // Objective of mission has been completed but now talking to NPC to close mission else if (startedMission != null && ProgressManager.Instance.GetMissionStatus(startedMission) == MissionStatusCode.Completed) { // Ends current mission with NPC MissionManager.Instance.EndMission(currentMissionConvos.missionsEnum); // Cleanup any reactive actions now CleanupReactiveActions(); // Unsubscribe startedMission.OnMissionComplete -= HandleOnMissionComplete; startedMission.OnMissionComplete -= TryReactiveActions; startedMission.OnMissionReset -= HandleOnMissionReset; startedMission.OnMissionReset -= TryResetReactiveActions; startedMission = null; missionsOffered.RemoveAt(0); DialogueManager.Instance.OnFinishConversation += HandleEndMissionFinishConversation; } else { Debug.LogError("Should not be getting to here"); return; } } if (!conversation.autoplayConversation) { NPCFacePlayer(); } DialogueManager.Instance.OnFinishConversation += NPCFaceOriginalRotation; DialogueManager.Instance.StartConversation(conversation); TriggerOnInteractEnd(); } }