Ejemplo n.º 1
0
    public void BuildGUIForDetailedQuest(string questName)
    {
        questInDetailPanel.SetActive(false);
        NPC_Quest_Scriptable_Object quest = currentQuests.Find(x => x.name == questName);

        if (quest != null)
        {
            titleDetailedQuest.text       = quest.name;
            briefDetailedQuest.text       = quest.brief;
            descriptionDetailedQuest.text = quest.description;

            foreach (NPC_Quest_Objective_Scriptable_Object objective in quest.objectives)
            {
                if (objective.isComplete)
                {
                    objectivesDetailedQuest.text = objective.description + " (1/1)";
                }
                else
                {
                    objectivesDetailedQuest.text = objective.description + " (0/1)";
                }
            }
            foreach (NPC_Quest_Reward_Scriptable_Object reward in quest.rewards)
            {
                rewardsDetailedQuest.text = reward.quantity + " " + reward.name;
            }
        }

        questInDetailPanel.SetActive(true);
    }
Ejemplo n.º 2
0
    public void AddNewQuest(NPC_Quest_Scriptable_Object quest)
    {
        GameObject questItem = Instantiate(questItemPrefab);

        Text[] texts = questItem.GetComponentsInChildren <Text>();
        texts[0].text = quest.name;
        texts[1].text = quest.brief;
        questItem.transform.SetParent(questListGUI.transform);
        foreach (NPC_Quest_Objective_Scriptable_Object obj in quest.objectives)
        {
            obj.isComplete = false;
        }
        currentQuests.Add(quest);
    }
Ejemplo n.º 3
0
    public void ValidateObjectiveOnQuest(string questName, string objectiveName)
    {
        NPC_Quest_Scriptable_Object quest = GetQuestByName(questName);

        if (quest != null)
        {
            NPC_Quest_Objective_Scriptable_Object objective = quest.objectives.Find(x => x.description == objectiveName);
            if (objective != null)
            {
                objective.isComplete = true;
                bool allComplete = true;
                foreach (NPC_Quest_Objective_Scriptable_Object obj in quest.objectives)
                {
                    if (obj.isComplete == false)
                    {
                        allComplete = false;
                    }
                }

                if (allComplete && !quest.needValidation)
                {
                    RemoveQuestFromQuestList(quest.name);
                    questSucceedText.text = "Félicitation\nVous venez de terminer la quête\n\"" + quest.name + "\"";
                    questSucceedText.gameObject.SetActive(true);
                    questSucceedText.CrossFadeAlpha(0, 0.0f, false);
                    questSucceedText.CrossFadeAlpha(1, 1.0f, false);
                    StartCoroutine(FadeOutTextQuestSucceed());
                    foreach (NPC_Quest_Reward_Scriptable_Object reward in quest.rewards)
                    {
                        reward.Claim(player);
                    }

                    if (quest.name == "Récupérer l'arceau")
                    {
                        pool.GetComponent <Pool.Main>().hoopFound();
                    }
                }
            }
        }
    }
    public void SetCurrentSpeakerTopic(int topicIndex)
    {
        NPC_Discussion_Scriptable_Object nextDiscussion = currentDiscussion.relatedDiscussions[topicIndex];

        currentDiscussion = nextDiscussion;

        if (currentDiscussion.isQuestAttached && !currentDiscussion.isFinalQuestDiscussion)
        {
            if (currentSpeaker.Npc.hasAlreadyProposeQuest)
            {
                NPC_Discussion_Quest_Scriptable_Object asQuest = (NPC_Discussion_Quest_Scriptable_Object)currentDiscussion;
                currentDiscussion = asQuest.questSeen;
            }
            else
            {
                NPC_Discussion_Quest_Scriptable_Object asQuest = (NPC_Discussion_Quest_Scriptable_Object)currentDiscussion;
                currentDiscussion = asQuest.questUnseen;
                currentSpeaker.Npc.hasAlreadyProposeQuest = true;
            }
        }

        currentDiscussionContentIndex = 0;
        topicGUI.SetActive(false);
        discussionGUI.SetActive(false);

        if (currentDiscussion.content.Count == 0 && currentDiscussion.relatedDiscussions.Count == 0)
        {
            if (currentDiscussion.isQuestAttached)
            {
                NPC_Quest_Scriptable_Object quest = currentSpeaker.Quest;
                player.AcceptQuest(quest);
            }
            EndOfDiscussion();
        }
        else
        {
            BuildDiscussionArea();
        }
    }
Ejemplo n.º 5
0
 public void AcceptQuest(NPC_Quest_Scriptable_Object quest)
 {
     quests.AddNewQuest(quest);
 }