Пример #1
0
    void Awake()
    {
        ResetQuest();

        value = 0;         // начальное значение статуса

        _internal = this;
        enabled   = false;
    }
    /// <summary>
    /// Looks for replacement components for the questsystem
    /// </summary>
    private void FindObjects()
    {
        testQuest = (TestQuest)FindObjectOfType(typeof(TestQuest));
        player    = (OfficePlayerGeneral)FindObjectOfType(typeof(OfficePlayerGeneral));

        /*
         * if(GameObject.Find("Canvas/QuestPanel/QuestText").GetComponent<Text>()!=null)
         *  questText = GameObject.Find("Canvas/QuestPanel/QuestText").GetComponent<Text>();
         */
    }
        private void QuestsLoad(JSONNode node)
        {
            QuestsDict = new Dictionary <int, QuestBase>();
            foreach (JSONNode doc in node.AsArray)
            {
                QuestType type  = doc["type"].Value.ToEnumVal <QuestType>();
                QuestBase quest = null;
                switch (type)
                {
                case QuestType.testQuest:
                    quest = new TestQuest(doc);
                    break;
                }

                if (quest == null)
                {
                    continue;
                }
                QuestsDict[quest.Id] = quest;
                NPCsDict[quest.NPCId].AddQuest(quest);
            }
        }
        private void ActionCreatorForQuest(QuestBase quest)
        {
            Console.WriteLine($"Вы выполнили задание {quest.QuestName}");
            NPCDict npc = DictionaryManager.Instance.NPCsDict[quest.NPCId];

            Console.WriteLine($"{npc.NPCName} передал вам награду:");
            QuestType type = quest.Type;

            switch (type)
            {
            case QuestType.testQuest:
                TestQuest tQuest = (TestQuest)quest;

                foreach (KeyValuePair <int, int> item in tQuest.QuestRewardItems)
                {
                    ItemBase itemB = DictionaryManager.Instance.ItemDict[item.Key];
                    Console.WriteLine($"{itemB.ItemName} - {item.Value} шт.");
                    Player.Inventory.AddItem(itemB, item.Value);
                }
                break;
            }
            ActionCreatorForNPC(DictionaryManager.Instance.NPCsDict[quest.NPCId]);
        }