示例#1
0
    //Fill the missing fields
    private void FillQuestProgress(List <QuestProgress> qpList)
    {
        foreach (QuestProgress qp in qpList)
        {
            QuestData qd = CurrentQuestList.FindQuestDataByID(qp.quest_id);

            qp.viewed = Utils.IsViewedQuest(qp.quest_id);

            int index = 0;

            foreach (QuestTargetProgress qtp in qp.target_progress_list)
            {
                if (index < qd.target_list.Count)
                {
                    qtp.required_amount = qd.target_list[index].target_count;
                    qtp.target_id       = qd.target_list[index].target_id;
                    qtp.target_type     = qd.target_list[index].target_type;
                    qtp.target_var1     = qd.target_list[index].target_var1;
                }
                else
                {
                    qp.target_progress_list.Remove(qtp);
                    break;
                }
                index++;
            }
        }
    }
示例#2
0
    private void ApplyActiveQuestList(List <int> questIDList, List <QuestProgress> questProgressList)
    {
        Debug.Log(string.Format("======== Applying active quest... Active quest count: {0}\t\tQuest progress count: {1}", questIDList.Count, questProgressList.Count));

        //search for removed quests
        List <QuestProgress> removeList = new List <QuestProgress>();

        foreach (QuestProgress qp in questProgressList)
        {
            if (questIDList.IndexOf(qp.quest_id) < 0)   //this quest has been removed on server
            {
                removeList.Add(qp);
            }
        }

        foreach (QuestProgress qp in removeList)
        {
            questProgressList.Remove(qp);
        }

        if (removeList.Count > 0)
        {
            Debug.Log(string.Format("\t\tOut of date quests found and removed: {0}", removeList.Count));
        }

        //search for new quests
        int newQuestCount = 0;

        foreach (int questID in questIDList)
        {
            QuestProgress questProgress = questProgressList.Find(delegate(QuestProgress qp) { return(qp.quest_id == questID); });

            if (questProgress == null) //a new quest is found
            {
                QuestData qd = CurrentQuestList.FindQuestDataByID(questID);

                questProgress = new QuestProgress();

                questProgress.quest_id = qd.quest_id;

                questProgress.viewed = false;

                List <QuestTargetProgress> qtpList = new List <QuestTargetProgress>();

                foreach (QuestTarget target in qd.target_list)
                {
                    QuestTargetProgress qtp = new QuestTargetProgress();
                    qtp.target_type     = target.target_type;
                    qtp.target_id       = target.target_id;
                    qtp.actual_amount   = 0;
                    qtp.required_amount = target.target_count;
                    qtp.target_var1     = target.target_var1;

                    qtpList.Add(qtp);
                }

                questProgress.target_progress_list = qtpList;

                questProgressList.Add(questProgress);

                Debug.Log(string.Format("\t\tNew quest added: {0}", questProgress.quest_id));

                newQuestCount++;
            }
        }

        UpdateQuests(QuestTargetType.level_up, null, 0);

        if (newQuestCount > 0)
        {
            Debug.Log(string.Format("\t\tNumber of newly added quests: {0}", newQuestCount));
        }

        Debug.Log(string.Format("======== Active quests applied. Active quest count: {0}\t\tQuest progress count: {1}", questIDList.Count, questProgressList.Count));
    }