예제 #1
0
    static bool isAll(int questId)
    {
        QuestData     quest = QuestData.GetData(questId);
        COM_QuestInst inst  = GetQuestInst(questId);

        if (inst == null)
        {
            return(false);
        }

        if (quest == null)
        {
            return(false);
        }

        for (int i = 0; i < inst.targets_.Length; i++)
        {
            //QuestData questd = QuestData.GetData((int)inst.targets_[i].targetId_);
            if (inst.targets_[i].targetNum_ < int.Parse(quest.targetNum_[i]))
            {
                return(false);
            }
        }
        return(true);
    }
예제 #2
0
    public static void UpdateQuest(COM_QuestInst questInst)
    {
        if (QuestListKind == null)
        {
            return;
        }

        QuestData qdata = QuestData.GetData(questInst.questId_);
        int       i;

        for (i = 0; i < QuestListKind[(int)qdata.questKind_].Count; ++i)
        {
            if (QuestListKind[(int)qdata.questKind_][i].questId_ == qdata.id_)
            {
                QuestListKind[(int)qdata.questKind_][i] = questInst;
                break;
            }
        }

        for (i = 0; i < QuestList.Count; ++i)
        {
            if (QuestList[i].questId_ == questInst.questId_)
            {
                QuestList[i] = questInst;
                break;
            }
        }
        if (IsQuestFinish(questInst.questId_))
        {
            isEffectF = true;
            isTaskF   = true;
            sqid      = questInst.questId_;
            //Èç¹ûÍê³ÉµÄÈÎÎñÊǵ±Ç°Ñ²ÂßµÄÈÎÎñ Í£Ö¹
            if (Prebattle.Instance.clickedQuestId_ == sqid)
            {
                NetConnection.Instance.stopMove();
                Prebattle.Instance.ChangeWalkEff(Prebattle.WalkState.WS_Normal);
                Prebattle.Instance.ResetCurrentQuest();
            }
        }


//		for(int j =0;j<TrackQues.Count;j++)
//		{
//			if (TrackQues[j].questId_ == questInst.questId_)
//				TrackQues[j] = questInst;
//		}
        isDirty = true;
        if (OnQuestUpdate != null)
        {
            OnQuestUpdate();
        }
    }
예제 #3
0
    public static bool IsQuestFinish(int questId)
    {
        QuestData     quest = QuestData.GetData(questId);
        COM_QuestInst inst  = GetQuestInst(questId);

        if (null == inst)
        {
            return(false);
        }
        switch (quest.questType_)
        {
        case QuestType.QT_Battle:
            for (int i = 0; i < inst.targets_.Length; i++)
            {
                if (inst.targets_[i].targetNum_ >= 1)
                {
                    return(true);
                }
            }
//                if (inst.questNum_ >= 1)
//                    return true;
            break;

        case QuestType.QT_Dialog:
            return(true);

        case QuestType.QT_Item:
        case QuestType.QT_Other:
        case QuestType.QT_GiveBaby:
        case QuestType.QT_Kill:
        case QuestType.QT_KillAI:
        {
            if (isAll((int)questId))
            {
                return(true);
            }
        }
        break;

        case QuestType.QT_GiveItem:
            if (isGiveItemAll((int)questId))
            {
                return(true);
            }
            break;

        default:
            return(false);
        }
        return(false);
    }
예제 #4
0
    public static void AcceptQuestOk(COM_QuestInst quest)
    {
        NewQuest = true;
        InsertQuestInst(quest);
        UpdateAcceptableQuests();
        //AddTrackQues(quest);
        if (OnQuestUpdate != null)
        {
            OnQuestUpdate();
        }
        isDirty = true;

        GuideManager.Instance.ProcEvent(ScriptGameEvent.SGE_NpcRenwuAccept, quest.questId_);
        EffectAPI.PlayUIEffect((EFFECT_ID)GlobalValue.EFFECT_AcceptQuest, ApplicationEntry.Instance.uiRoot.transform);
    }
예제 #5
0
    int sor(COM_QuestInst q1, COM_QuestInst q2)
    {
        QuestData qdata = QuestData.GetData(q1.questId_);

        if (qdata.questKind_ == QuestKind.QK_Main)
        {
            return(1);
        }

        if (QuestSystem.IsQuestFinish(q1.questId_) && !QuestSystem.IsQuestFinish(q2.questId_))
        {
            return(-1);
        }
        else
        {
            return(1);
        }

        return(0);
    }
예제 #6
0
    public static void InsertQuestInst(COM_QuestInst quest)
    {
        if (QuestList == null)
        {
            return;
        }

        QuestData qdata0 = QuestData.GetData(quest.questId_);
        int       i;

        for (i = 0; i < QuestList.Count; ++i)
        {
            QuestData qdata1 = QuestData.GetData(QuestList[i].questId_);
            if (qdata0.questKind_ > qdata1.questKind_)
            {
                break;
            }
        }
        QuestListKind[(int)qdata0.questKind_].Add(quest);
        QuestList.Insert(i, quest);

        UpdateAcceptableQuests();
    }