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); }
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; }
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); } } } } }
/// <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); }
//界面打开 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); }
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); }