private void InitAllGaidenTask()
    {
        var allGaidenInfos = ConfigManager.GetAll <GaidenTaskInfo>();
        var allTasks       = ConfigManager.GetAll <TaskInfo>();

        gaidenTaskDic.Clear();
        foreach (var item in allGaidenInfos)
        {
            //init info
            if (!gaidenInfoDic.ContainsKey(item))
            {
                gaidenInfoDic.Add(item, false);
            }

            //init task list
            if (!gaidenTaskDic.ContainsKey(item.taskType))
            {
                gaidenTaskDic.Add(item.taskType, new List <ChaseTask>());
            }
            var ts = allTasks.FindAll(t => t.level == (int)item.taskType);
            if (ts != null && ts.Count > 0)
            {
                foreach (var task in ts)
                {
                    gaidenTaskDic[item.taskType].Add(ChaseTask.Create(task));
                }
            }
        }
    }
    private void HandleTasks(PChaseTask[] tasks)
    {
        if (tasks == null)
        {
            return;
        }
        canEnterList.Clear();
        for (var i = 0; i < tasks.Length; i++)
        {
            var t = ConfigManager.Get <TaskInfo>(tasks[i].taskId);
            if (t == null)
            {
                continue;
            }
            var type = moduleChase.GetCurrentTaskType(t);
            if (type != TaskType.Awake)
            {
                continue;
            }
            canEnterList.Add(ChaseTask.Create(tasks[i], t));
        }

        ClassifyList();

        //重新生成了ChaseTask对象,需要重新更新当前任务对象
        var ta = ConfigManager.Get <TaskInfo>(StageId);

        if (ta != null)
        {
            var type = moduleChase.GetCurrentTaskType(ta);
            if (type == TaskType.Awake)
            {
                CurrentTask = CanEnterList.Find(item => item.taskConfigInfo && item.taskConfigInfo.ID == StageId);
            }
            else if (type == TaskType.Nightmare)
            {
                CurrentTask = moduleChase.CanEnterNightmareList.Find(item => item.taskConfigInfo.ID == StageId);
            }
            else if (type == TaskType.Emergency)
            {
                CurrentTask = moduleChase.emergencyList.Find(item => item.taskConfigInfo.ID == StageId);
            }
        }
    }
    private void _Packet(ScChaseTaskUnlock p)
    {
        PChaseTask[] tasks = null;
        p.chaseList.CopyTo(ref tasks);

        for (var i = 0; i < tasks?.Length; i++)
        {
            TaskInfo ti    = ConfigManager.Get <TaskInfo>(tasks[i].taskId);
            TaskType _type = moduleChase.GetCurrentTaskType(ti);
            if (_type != TaskType.Awake)
            {
                continue;
            }
            if (!canEnterList.Exists(item => item.taskConfigInfo.ID == ti.ID))
            {
                canEnterList.Add(ChaseTask.Create(tasks[i]));
            }
        }

        ClassifyList();
    }