Esempio n. 1
0
    private static bool CheckCompleteCondition(int num, QuestTableItem vo)
    {
        var qcp = new QuestConditionParam();

        switch (num)
        {
        case 1:
            qcp.mConditionType = vo.completeCondition1;
            qcp.mArg1          = vo.completeCondition1Argu1;
            qcp.mArg2          = vo.completeCondition1Argu2;
            qcp.mValue         = vo.completeCondition1Argu3;
            break;

        case 2:
            qcp.mConditionType = vo.completeCondition2;
            qcp.mArg1          = vo.completeCondition2Argu1;
            qcp.mArg2          = vo.completeCondition2Argu2;
            qcp.mValue         = vo.completeCondition2Argu3;
            break;
        }

        if (qcp.mConditionType != -1)
        {
            return(CheckCondition(vo.id, qcp));
        }

        return(true);
    }
Esempio n. 2
0
 public Quest(int questid)
 {
     mVO = DataManager.QuestTable[questid] as QuestTableItem;
     if (mVO == null)
     {
         GameDebug.LogError("无效的任务id");
         return;
     }
     mTrigger = QuestTriggerEvent.Parse(mVO.triggerEvent);
     mId      = mVO.id;
     mType    = mVO.questType;
     mState   = QuestState.Accepted;
     mProcess = 0;
 }
Esempio n. 3
0
    private void CheckCondition()
    {
        IDictionaryEnumerator itr = DataManager.QuestTable.GetEnumerator();

        while (itr.MoveNext())
        {
            QuestTableItem qti = itr.Value as QuestTableItem;
            if (qti == null || mQuestData == null)
            {
                return;
            }
            //已经完成的不用检测条件
            if (mQuestData.IsFinished(qti.id))
            {
                continue;
            }

            if (qti.questType == (int)QuestType.Daily)
            {
                continue;
            }

            if (mNetCache.Contains(qti.id))
            {
                continue;
            }

            //已经接取且没有完成的检测完成条件
            if (mQuestData.IsAccepted(qti.id))
            {
                if (QuestHelper.IsCompleteCondition(qti.id))
                {
                    RequestFinish(qti.id);
                }
            }
            else
            {
                //检查上限值
                if (!mQuestData.IsMaxAcceptCount())
                {
                    if (QuestHelper.IsPrediction(qti.id))
                    {
                        RequestAccept(qti.id);
                    }
                }
            }
        }
    }
Esempio n. 4
0
    /// <summary>
    /// 判断单个前提条件
    /// </summary>
    /// <param name="num"></param>
    /// <param name="mVO"></param>
    /// <returns></returns>
    private static bool CheckPreCondition(int num, QuestTableItem mVO)
    {
        if (mVO.questType == QuestType.Daily)
        {
            return(false);
        }
        var qcp = new QuestConditionParam();

        switch (num)
        {
        case 1:
            qcp.mConditionType = mVO.precondition1;
            qcp.mArg1          = mVO.precondition1Argu1;
            qcp.mArg2          = mVO.precondition1Argu2;
            qcp.mValue         = mVO.precondition1Argu3;
            break;

        case 2:
            qcp.mConditionType = mVO.precondition2;
            qcp.mArg1          = mVO.precondition2Argu1;
            qcp.mArg2          = mVO.precondition2Argu2;
            qcp.mValue         = mVO.precondition2Argu3;
            break;

        case 3:
            qcp.mConditionType = mVO.precondition3;
            qcp.mArg1          = mVO.precondition3Argu1;
            qcp.mArg2          = mVO.precondition3Argu2;
            qcp.mValue         = mVO.precondition3Argu3;
            break;
        }

        if (qcp.mConditionType != -1)
        {
            return(CheckCondition(mVO.id, qcp));
        }

        return(true);
    }
Esempio n. 5
0
    //界面打开
    protected override void OnOpen(object param = null)
    {
        EventDelegate.Add(OkBtn.onClick, OnClickClose);

        PlayerDataModule pdm           = ModuleManager.Instance.FindModule <PlayerDataModule>();
        QuestAwardData   mCurAwardInfo = PlayerDataPool.Instance.MainData.mQuestData.GetAward();
        QuestTableItem   qti           = DataManager.QuestTable[mCurAwardInfo.mQuestId] as QuestTableItem;

        QuestName.text = qti.questName;
        ObjectCommon.DestoryChildren(DropGrid.gameObject);
        if (mAwardUIList != null)
        {
            mAwardUIList.Clear();
        }
        else
        {
            mAwardUIList = new List <AwardItemUI>();
        }

        for (int i = 0; i < mCurAwardInfo.mAwardList.Count; i++)
        {
            AwardItemUI temp = new AwardItemUI(mCurAwardInfo.mAwardList[i].mResId,
                                               (int)mCurAwardInfo.mAwardList[i].mNum);
            temp.gameObject.transform.parent     = DropGrid.gameObject.transform;
            temp.gameObject.transform.localScale = Vector3.one;
        }

        DropGrid.repositionNow = true;

        mCurStep = UIStep.STEP_ORIGINAL;

        //强制隐藏引导
        GuideModule module = ModuleManager.Instance.FindModule <GuideModule>();

        module.ForceHideGuide(true);
    }
Esempio n. 6
0
    private void RefreshDetails()
    {
        if (mQuestBtnMap.ContainsKey(mModule.CurShowIndex) &&
            mQuestBtnMap[mModule.CurShowIndex].IsSelected == false)
        {
            mQuestBtnMap[mModule.CurShowIndex].IsSelected = true;
        }
        GameDebug.Log(mModule.CurShowIndex);
        if (mModule.CurShowIndex == -1)
        {
            questDetailObj.SetActive(false);
            return;
        }
        questDetailObj.SetActive(true);
        var quest = mModule.GetQuestById(mModule.CurShowIndex);

        QuestName.text  = quest.mVO.questName;
        QuestScrib.text = quest.mVO.questScrib;
        QuestGoal.text  = quest.mVO.goal;

        //0为寻路去关卡,1 为直接打开界面
        if (quest.GetTriggerType() == 0)
        {
            GoToBtn.gameObject.SetActive(true);
            TodoBtn.gameObject.SetActive(false);
        }
        else
        {
            GoToBtn.gameObject.SetActive(false);
            TodoBtn.gameObject.SetActive(true);
        }

        BtnGrid.repositionNow = true;

        //奖励
        QuestTableItem qti = DataManager.QuestTable[mModule.CurShowIndex] as QuestTableItem;

        if (qti == null)
        {
            GameDebug.LogError("无效任务id" + mModule.CurShowIndex);
            return;
        }
        if (AwardItemUIList != null)
        {
            foreach (var item in AwardItemUIList)
            {
                GameObject.DestroyImmediate(item.gameObject);
            }
            AwardItemUIList.Clear();
        }
        else
        {
            AwardItemUIList = new List <AwardItemUI>();
        }

        if (qti.itemType1 != -1)
        {
            AwardItemUI temp = new AwardItemUI(qti.itemType1, qti.itemNum1);
            AwardItemUIList.Add(temp);
            temp.gameObject.transform.parent     = DropGrid.transform;
            temp.gameObject.transform.localScale = Vector3.one;
        }

        if (qti.itemType2 != -1)
        {
            AwardItemUI temp = new AwardItemUI(qti.itemType2, qti.itemNum2);
            AwardItemUIList.Add(temp);
            temp.gameObject.transform.parent     = DropGrid.transform;
            temp.gameObject.transform.localScale = Vector3.one;
        }

        if (qti.itemType3 != -1)
        {
            AwardItemUI temp = new AwardItemUI(qti.itemType3, qti.itemNum3);
            AwardItemUIList.Add(temp);
            temp.gameObject.transform.parent     = DropGrid.transform;
            temp.gameObject.transform.localScale = Vector3.one;
        }
        DropGrid.repositionNow = true;

        //进度
        Process.text = quest.mProcess + "/" +
                       ModuleManager.Instance.FindModule <PlayerDataModule>().GetQuestTotalProgress(quest.mId);
    }