コード例 #1
0
    public Dialogue GetDialogue()
    {
        PnjManager.Mood curMood        = GetComponent <PnjManager>().CurrentMood;
        List <Dialogue> priorityChoose = new List <Dialogue>();

        priorityChoose.Add(InitDialogueChoice(curMood));
        Dialogue choice;

        for (int i = 0; i < characterDialogues.Count; i++)
        {
            if (characterDialogues[i].dialoguePriority == priorityChoose[0].dialoguePriority)
            {
                if (IsMoodValid(characterDialogues[i], curMood))
                {
                    priorityChoose.Add(characterDialogues[i]);
                }
            }
            else if (characterDialogues[i].dialoguePriority > priorityChoose[0].dialoguePriority)
            {
                if (IsMoodValid(characterDialogues[i], curMood))
                {
                    priorityChoose = new List <Dialogue>();
                    priorityChoose.Add(characterDialogues[i]);
                }
            }
        }
        choice = priorityChoose[(int)Random.Range(0f, priorityChoose.Count)];
        if (choice.IsUniqueSentence)
        {
            RemoveDialogue(choice);
        }
        TriggerDialogueEvent(choice);
        return(choice);
    }
コード例 #2
0
    public Dialogue InitDialogueChoice(PnjManager.Mood curMood)
    {
        Dialogue toReturn = null;

        for (int i = 0; i < characterDialogues.Count; i++)
        {
            if (IsMoodValid(characterDialogues[i], curMood))
            {
                toReturn = characterDialogues[i];
                i        = characterDialogues.Count;
            }
        }
        return(toReturn);
    }
コード例 #3
0
    public bool IsMoodValid(Dialogue curTest, PnjManager.Mood curMood)
    {
        bool result = false;

        if (curTest.moodRequired == Dialogue.MoodRequired.none)
        {
            result = true;
        }
        else if (curTest.moodRequired == Dialogue.MoodRequired.agressive && curMood == PnjManager.Mood.aggressive)
        {
            result = true;
        }
        else if (curTest.moodRequired == Dialogue.MoodRequired.neutral && curMood == PnjManager.Mood.neutral)
        {
            result = true;
        }
        return(result);
    }