// Use this for initialization
 private void Start()
 {
     IsWriting                     = false;
     currentSpeaker                = null;
     currentDiscussion             = null;
     currentDiscussionContentIndex = -1;
     topicsPanels                  = new List <GameObject>();
     RetrieveTopicsPanels();
 }
 private void EndOfDiscussion()
 {
     topicGUI.SetActive(false);
     discussionGUI.SetActive(false);
     nextGUI.SetActive(false);
     currentSpeaker                = null;
     currentDiscussion             = null;
     currentDiscussionContentIndex = -1;
     player.ExitInteractionWithNPC();
     Cursor.visible = false;
 }
    public void SetCurrentSpeaker(InteractableNPC speaker)
    {
        topicGUI.SetActive(false);
        discussionGUI.SetActive(false);
        nextGUI.SetActive(false);
        currentSpeaker                = speaker;
        currentDiscussion             = speaker.GetIntroDiscussion();
        currentDiscussionContentIndex = 0;
        mainCamera.transform.position = currentSpeaker.PositionForInteraction.position;
        mainCamera.transform.LookAt(currentSpeaker.transform.position);

        speakerName.text = currentSpeaker.Npc.name;
        BuildDiscussionArea();
    }
    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();
        }
    }