Esempio n. 1
0
    /// <summary>
    /// 获取任务当前状态
    /// </summary>
    /// <param name="taskId"></param>
    /// <returns></returns>
    private GuideDefine.TaskSubTriggerType GetTaskStatus(uint taskId)
    {
        GuideDefine.TaskSubTriggerType status = GuideDefine.TaskSubTriggerType.Invalid;
        QuestTraceInfo quest = QuestTranceManager.Instance.GetQuestTraceInfo(taskId);

        if (null != quest && quest.Received)
        {
            switch (quest.GetTaskProcess())
            {
            case GameCmd.TaskProcess.TaskProcess_Doing:
                status = GuideDefine.TaskSubTriggerType.Doing;
                break;

            case GameCmd.TaskProcess.TaskProcess_CanDone:
                status = GuideDefine.TaskSubTriggerType.CanSubmit;
                break;

            case GameCmd.TaskProcess.TaskProcess_Done:
                status = GuideDefine.TaskSubTriggerType.Complete;
                break;
            }
        }
        else
        {
            List <QuestTraceInfo> canAcceptTasks = new List <QuestTraceInfo>();
            DataManager.Manager <TaskDataManager>().GetCanReceiveQuest(ref canAcceptTasks);
            if (null != canAcceptTasks)
            {
                for (int i = 0; i < canAcceptTasks.Count; i++)
                {
                    if (canAcceptTasks[i].taskId == taskId)
                    {
                        status = GuideDefine.TaskSubTriggerType.CanAccept;
                        break;
                    }
                }
            }
        }
        return(status);
    }
Esempio n. 2
0
    /// <summary>
    /// 是否triggerId满足触发条件
    /// </summary>
    /// <param name="triggerId"></param>
    /// <returns></returns>
    public bool IsMatchTriggerCondition(uint triggerId, object param = null)
    {
        table.GuideTriggerCondiDataBase
             db      = GameTableManager.Instance.GetTableItem <table.GuideTriggerCondiDataBase>(triggerId);
        bool isMatch = false;

        if (null != db)
        {
            switch (db.triggerType)
            {
            case (uint)GuideDefine.GuideTriggerType.Always:
                isMatch = true;
                break;

            case (uint)GuideDefine.GuideTriggerType.Level:
            {
                if (DataManager.Instance.PlayerLv >= db.triggerParamType)
                {
                    isMatch = true;
                }
            }
            break;

            case (uint)GuideDefine.GuideTriggerType.ChapterEnd:
            {
                if (null != param &&
                    param is uint &&
                    db.triggerParamType == ((uint)param))
                {
                    isMatch = true;
                }
            }
            break;

            case (uint)GuideDefine.GuideTriggerType.Task:
            {
                bool canCheck = false;
                if (null != param && param is GuideDefine.RecycleTriggerGuidePassData)
                {
                    GuideDefine.RecycleTriggerGuidePassData passData = (GuideDefine.RecycleTriggerGuidePassData)param;
                    if (db.triggerParamType == passData.TaskID)
                    {
                        canCheck = true;
                    }
                }
                else
                {
                    canCheck = true;
                }
                if (canCheck)
                {
                    GuideDefine.TaskSubTriggerType taskSubTriggerType = GetTaskStatus(db.triggerParamType);
                    if ((int)taskSubTriggerType == db.taskTriggerStatus)
                    {
                        isMatch = true;
                    }
                }
            }
            break;

            case (uint)GuideDefine.GuideTriggerType.Condition:
            {
                isMatch = CheckGuideConditionMatch((GuideDefine.ConditonSubTriggerType)db.triggerParamType, db.panelTriggerID);
            }
            break;

            case (uint)GuideDefine.GuideTriggerType.ItemGet:
            {
                int num = DataManager.Manager <ItemManager>().GetItemNumByBaseId(db.triggerParamType);
                isMatch = (num > 0);
            }
            break;
            }
        }
        return(isMatch);
    }