Ejemplo n.º 1
0
    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}");
        }
    }
Ejemplo n.º 2
0
    // 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;
    }
Ejemplo n.º 3
0
    public AMission StartMission(MissionsEnum missionEnumValue)
    {
        AMission missionLogic = GetMissionLogic(missionEnumValue);

        missionLogic.gameObject.SetActive(true);

        ProgressManager.Instance.AddMission(missionLogic);
        activeMissions.Add(missionEnumValue);

        SetObjectiveTextForList(missionEnumValue);

        return(missionLogic);
    }
Ejemplo n.º 4
0
 public MissionStatusCode GetMissionStatus(AMission mission)
 {
     return(missionsStatus[mission]);
 }
Ejemplo n.º 5
0
 public void AddMission(AMission mission)
 {
     missionsStatus.Add(mission, MissionStatusCode.Started);
 }
Ejemplo n.º 6
0
    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();
        }
    }