Example #1
0
    public virtual void OnCollisionEnter2D(Collision2D collision)
    {
        int   questIndex = 0;
        Quest quest      = giveableQuests[currentQuest];

        if (CheckDependentQuests(collision.gameObject.GetComponent <CiscoTesting>(), quest, questIndex))
        {
            //Enable first dialog talk
            if (collision.gameObject.CompareTag("Player") && quest.questData.questState < QuestState.completed)
            {
                characterDialogs[currentQuest].EnableDialog();
                if (!gaveQuest)
                {
                    for (int i = 0; i < giveableQuests.Count; i++)
                    {
                        GiveQuest(collision.gameObject.GetComponent <CiscoTesting>(), currentQuest);
                    }
                }
            }
            //Quest is completed and we need to go to the npc to end the quest
            else
            {
                for (int i = 0; i < giveableQuests.Count; i++)
                {
                    if (quest.questData.questState == QuestState.completed)
                    {
                        //Complete the quest and enable the quest completion dialog
                        collision.gameObject.GetComponent <PlayerQuestSystem>().SetQuestStatus(quest.questID, QuestState.done);
                        gaveQuest = false;
                        currentQuest++;
                        dialogSystemController.GetComponent <AudioSource>().Play();

                        if (quest.reward != null)
                        {
                            if (collision.gameObject.GetComponent <CiscoTesting>().items.ContainsKey(quest.reward))
                            {
                                collision.gameObject.GetComponent <CiscoTesting>().items[quest.reward]++;
                            }
                            else
                            {
                                collision.gameObject.GetComponent <CiscoTesting>().items.Add(quest.reward, 1);
                            }
                            Debug.Log("Gave a reward of " + quest.reward.Name);
                        }
                        //normal thanks dialog
                        afterQuestDialogs[currentQuest - 1].EnableDialog();

                        for (int j = 0; j < quest.questData.requiredItems.Count; j++)
                        {
                            RequiredItem item = quest.questData.requiredItems[j];
                            collision.gameObject.GetComponent <CiscoTesting>().RemoveItems(item.item, item.requiredAmount);
                        }
                        Debug.Log("Finished Quest");
                    }
                }
            }
        }
        else
        {
            cantGiveQuestDialog.EnableDialog();
        }
    }