少年修仙传客户端代码仓库
hch
2020-09-07 4c720b0423f4d613a2a01d984912b3d68c1dafc4
0312 修改采集物采集逻辑
2个文件已修改
304 ■■■■ 已修改文件
Fight/GameActor/GA_NpcCollect.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/TaskModel.cs 284 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_NpcCollect.cs
@@ -259,7 +259,7 @@
        {
            _hero.MoveToPosition(Pos, 1f);
        }
        PrepareHandler.Instance.TriggerOnShowCollect(ServerInstID, NpcConfig.NPCID);
    }
@@ -369,19 +369,15 @@
        }
        else
        {
            if (ModelCenter.Instance.GetModel<HazyGrassModel>().IsInDungeon
            || PlayerDatas.Instance.baseData.MapID == 31190
            || PlayerDatas.Instance.baseData.MapID == 31220
            || PlayerDatas.Instance.baseData.MapID == 32020
            || PlayerDatas.Instance.baseData.MapID == 32021)
            m_CanCollect = true;
            TaskModel _model = ModelCenter.Instance.GetModel<TaskModel>();
            if (!_model.IsGather(NpcConfig.NPCID))
            {
                m_CanCollect = true;
                m_CanCollect = false;
            }
            else
            {
                TaskModel _model = ModelCenter.Instance.GetModel<TaskModel>();
                m_CanCollect = _model.IsGather(NpcConfig.NPCID);
            }
        }
        PrepareHandler.Instance.Leave(this);
System/MainInterfacePanel/TaskModel.cs
@@ -170,9 +170,9 @@
        TaskAutoTime = int.Parse(Task_Auto.Numerical2);
        mainTaskAutoWaitTime = int.Parse(Task_Auto.Numerical3) / 1000f;
        var mapIds = ConfigParse.GetMultipleStr<int>(Task_Auto.Numerical4);
        if (mapIds != null && mapIds.Length > 0)
        {
            allowAutoTaskMapIds.AddRange(mapIds);
        if (mapIds != null && mapIds.Length > 0)
        {
            allowAutoTaskMapIds.AddRange(mapIds);
        }
        FairyAuTaskCount_Day = int.Parse(FuncConfigConfig.Get("RunTaskCnt").Numerical1.Split('|')[1].Split('_')[1]);
@@ -183,12 +183,12 @@
        var funcConfig = FuncConfigConfig.Get("AutoSelectTaskChain");
        var taskChainArray = LitJson.JsonMapper.ToObject<int[][]>(funcConfig.Numerical1);
        if (taskChainArray != null)
        {
            for (int i = 0; i < taskChainArray.Length; i++)
            {
                priorityTaskChains.Add(taskChainArray[i]);
            }
        if (taskChainArray != null)
        {
            for (int i = 0; i < taskChainArray.Length; i++)
            {
                priorityTaskChains.Add(taskChainArray[i]);
            }
        }
    }
@@ -305,22 +305,22 @@
                    }
                }
                if (lastDescriptionIndex != DiscriptionIndex)
                {
                    if (taskDescriptionRefresh != null)
                    {
                        taskDescriptionRefresh(MissionID);
                    }
                if (lastDescriptionIndex != DiscriptionIndex)
                {
                    if (taskDescriptionRefresh != null)
                    {
                        taskDescriptionRefresh(MissionID);
                    }
                }
            }
            else
            {
                AddMission(MissionID, MissionState, DiscriptionIndex);//任务的添加
                if (taskDescriptionRefresh != null)
                {
                AddMission(MissionID, MissionState, DiscriptionIndex);//任务的添加
                if (taskDescriptionRefresh != null)
                {
                    taskDescriptionRefresh(MissionID);
                }
                }
                if (Event_TaskToAdd != null)
                {
                    Event_TaskToAdd(MissionID, MissionState, DiscriptionIndex);
@@ -382,29 +382,29 @@
        }
    }
    public ImpactRankModel.RankAwardItem GetRunTaskRward()//添加任务奖励
    {
        var runTaskAward = FuncConfigConfig.Get("RunTaskAward");
        ImpactRankModel.RankAwardItem _award = new ImpactRankModel.RankAwardItem();
        var _jsonData = LitJson.JsonMapper.ToObject(runTaskAward.Numerical3);
        var jsonData2 = LitJson.JsonMapper.ToObject(runTaskAward.Numerical4);
        foreach (string key in _jsonData.Keys)
        {
            var _job = int.Parse(key);
            var _itemArray = LitJson.JsonMapper.ToObject<int[][]>(_jsonData[key].ToJson());
            for (int j = 0; j < _itemArray.Length; j++)
            {
                _award.Add(_job, new Item(_itemArray[j][0], _itemArray[j][1]));
            }
        }
        foreach (string key in jsonData2.Keys)
        {
            var _job = int.Parse(key);
            _award.Add(_job, new Item(2301, 0));
        }
        return _award;
    public ImpactRankModel.RankAwardItem GetRunTaskRward()//添加任务奖励
    {
        var runTaskAward = FuncConfigConfig.Get("RunTaskAward");
        ImpactRankModel.RankAwardItem _award = new ImpactRankModel.RankAwardItem();
        var _jsonData = LitJson.JsonMapper.ToObject(runTaskAward.Numerical3);
        var jsonData2 = LitJson.JsonMapper.ToObject(runTaskAward.Numerical4);
        foreach (string key in _jsonData.Keys)
        {
            var _job = int.Parse(key);
            var _itemArray = LitJson.JsonMapper.ToObject<int[][]>(_jsonData[key].ToJson());
            for (int j = 0; j < _itemArray.Length; j++)
            {
                _award.Add(_job, new Item(_itemArray[j][0], _itemArray[j][1]));
            }
        }
        foreach (string key in jsonData2.Keys)
        {
            var _job = int.Parse(key);
            _award.Add(_job, new Item(2301, 0));
        }
        return _award;
    }
    public int GetLatestMainTaskId()
@@ -420,9 +420,9 @@
        return taskId;
    }
    public bool TryGetTaskData(int _taskId, out MissionDetailDates taskData)
    {
        return allMissionDict.TryGetValue(_taskId, out taskData);
    public bool TryGetTaskData(int _taskId, out MissionDetailDates taskData)
    {
        return allMissionDict.TryGetValue(_taskId, out taskData);
    }
    void DefaultDialogue()//关于打开默认对话界面
@@ -437,12 +437,12 @@
            WindowCenter.Instance.Open<DefaultDialogueBoxWin>();
            WindowCenter.Instance.Close<MainInterfaceWin>();
        }
        else
        {
            if (talkNpcIdUpdate != null)
            {
                talkNpcIdUpdate(NPCid);
            }
        else
        {
            if (talkNpcIdUpdate != null)
            {
                talkNpcIdUpdate(NPCid);
            }
        }
    }
    private void OnEventTalkEvent(int taskID)//NPC对话后的弹框
@@ -582,46 +582,46 @@
        vDetailData.descIndex = DiscriptionIndex;
        var canSwitchSelectTask = true;
        if (GetNowTaskID != 0 && !IsMainTaskType(vDetailData.Type))
        {
            MissionDetailDates taskData;
            if (TryGetTaskData(GetNowTaskID, out taskData)
                && IsMainTaskType(taskData.Type)
                && taskData.MissionState != 3)
            {
                canSwitchSelectTask = false;
            }
        }
        if (isServerPrepare && PriorityTaskChainContains(MissionID))
        {
            canSwitchSelectTask = true;
        }
        if (canSwitchSelectTask)
        {
        if (GetNowTaskID != 0 && !IsMainTaskType(vDetailData.Type))
        {
            MissionDetailDates taskData;
            if (TryGetTaskData(GetNowTaskID, out taskData)
                && IsMainTaskType(taskData.Type)
                && taskData.MissionState != 3)
            {
                canSwitchSelectTask = false;
            }
        }
        if (isServerPrepare && PriorityTaskChainContains(MissionID))
        {
            canSwitchSelectTask = true;
        }
        if (canSwitchSelectTask)
        {
            GetNowTaskID = MissionID;
        }
        allMissionDict.Add(MissionID, vDetailData);//添加任务
    }
    public bool PriorityTaskChainContains(int taskId)
    {
        for (int i = 0; i < priorityTaskChains.Count; i++)
        {
            if (taskId >= priorityTaskChains[i][0]
                && taskId <= priorityTaskChains[i][1])
            {
                return true;
            }
        }
        return false;
    public bool PriorityTaskChainContains(int taskId)
    {
        for (int i = 0; i < priorityTaskChains.Count; i++)
        {
            if (taskId >= priorityTaskChains[i][0]
                && taskId <= priorityTaskChains[i][1])
            {
                return true;
            }
        }
        return false;
    }
    public bool IsMainTaskType(int type)
    {
        return type == (int)TaskTypenum.MainlineTaskType || type == (int)TaskTypenum.MainlineTaskTyp2;
    public bool IsMainTaskType(int type)
    {
        return type == (int)TaskTypenum.MainlineTaskType || type == (int)TaskTypenum.MainlineTaskTyp2;
    }
    public enum TaskTypenum//任务类型分类
@@ -1006,10 +1006,10 @@
    public void RequestGetTaskAward(string _answer, int taskId = 0)
    {
        if (taskId == clientGuardDugeonTask)
        {
            ClientGuardDungeon.RequestEnter();
            return;
        if (taskId == clientGuardDugeonTask)
        {
            ClientGuardDungeon.RequestEnter();
            return;
        }
        var sendInfo = new C0802_tagCNPCAnswer();
@@ -1310,18 +1310,18 @@
    {
        try
        {
            if (!allowAutoTaskMapIds.Contains(PlayerDatas.Instance.baseData.MapID))
            {
                return;
            }
            var _hero = PlayerDatas.Instance.hero;
            if (_hero != null)
            {
                if (MapArea.IsInMapArea(_hero.CurMapArea, MapArea.E_Type.Boss))
                {
                    return;
                }
            if (!allowAutoTaskMapIds.Contains(PlayerDatas.Instance.baseData.MapID))
            {
                return;
            }
            var _hero = PlayerDatas.Instance.hero;
            if (_hero != null)
            {
                if (MapArea.IsInMapArea(_hero.CurMapArea, MapArea.E_Type.Boss))
                {
                    return;
                }
            }
            if (MainTaskDic.ContainsKey(_taskID))//主线任务
@@ -1437,9 +1437,9 @@
            yield return null;
        }
        yield return WaitingForSecondConst.WaitMS500;
        // 如果有守护, 则不拾取
        yield return WaitingForSecondConst.WaitMS500;
        // 如果有守护, 则不拾取
        var equipIndex = EquipSet.ClientPlaceToServerPlace(new Int2(0, (int)RoleEquipType.Guard));
        var _itemModel = packModel.GetItemByIndex(PackType.Equip, equipIndex);
        if (_itemModel == null || !GeneralDefine.GuardianPickUpID.Contains(_itemModel.itemId))
@@ -1470,9 +1470,9 @@
            }
        }
        if (AdventureStage.Instance.IsInAdventureStage)
        {
            yield break;
        if (AdventureStage.Instance.IsInAdventureStage)
        {
            yield break;
        }
        if (NewBieCenter.Instance.inGuiding || ModelCenter.Instance.GetModel<TreasureModel>().newGotShowing
@@ -1496,9 +1496,9 @@
            yield break;
        }
        if (BossShowModel.Instance.BossShowing)
        {
            yield break;
        if (BossShowModel.Instance.BossShowing)
        {
            yield break;
        }
        if (BountyDic.ContainsKey(_taskID) || FairyAuDic.ContainsKey(_taskID))
@@ -1514,9 +1514,9 @@
            }
        }
        while(ClientSceneManager.Instance.isWaitPickup)
        {
            yield return null;
        while(ClientSceneManager.Instance.isWaitPickup)
        {
            yield return null;
        }
        if (GA_Hero.s_MapSwitching)
@@ -1615,7 +1615,7 @@
                if (Npcid != 0 && NPCShowDic.ContainsKey(Npcid))
                {
                    if (NPCShowDic[Npcid] == 0)
                    {
                    {
                        GA_NpcFunc.SetNpcFuncVisible(Npcid, false);
                    }
                    else if (NPCShowDic[Npcid] == 1)
@@ -1636,7 +1636,7 @@
            if (Npcid != 0 && NPCShowDic.ContainsKey(Npcid))
            {
                if (NPCShowDic[Npcid] == 0)
                {
                {
                    GA_NpcFunc.SetNpcFuncVisible(Npcid, false);
                }
                else if (NPCShowDic[Npcid] == 1)
@@ -1695,20 +1695,26 @@
        if (taskListConfig != null)
        {
            int[] collectNPCList = taskListConfig.CollectNPC;
            if ((collectNPCList.Length == 1 && collectNPCList[0] == 0) || GetTaskStatus(currentMission) != 0)
            {
                return false;
            }
            var isTaskNPC = false;
            for (int i = 0; i < collectNPCList.Length; i++)
            {
                if (collectNPCList[i] == npdId)
                {
                    return true;
                    isTaskNPC = true;
                    break;
                }
            }
            if (isTaskNPC)
            {
                if ((collectNPCList.Length == 1 && collectNPCList[0] == 0) || GetTaskStatus(currentMission) != 0)
                {
                    return false;
                }
            }
        }
        return false;
        return true;
    }
    public static bool IsOPenAutoResolve()//任务面板不开启自动挂机状态
@@ -1865,9 +1871,9 @@
                foreach (var key in taskWaits.Keys)
                {
                    if ((Time.realtimeSinceStartup - taskWaits[key]) < 1f)
                    {
                    {
#if UNITY_EDITOR
                        DebugEx.LogFormat("<color=#00ffff>由于{0}开始任务等待</color>", GetTaskWaitTypeLabel(key));
                        DebugEx.LogFormat("<color=#00ffff>由于{0}开始任务等待</color>", GetTaskWaitTypeLabel(key));
#endif
                        return true;
                    }
@@ -1881,24 +1887,24 @@
        public void Push(TaskWaitType type)
        {
            taskWaits[type] = Time.realtimeSinceStartup;
        }
        }
#if UNITY_EDITOR
        static string GetTaskWaitTypeLabel(TaskWaitType waitType)
        {
            switch (waitType)
            {
                case TaskWaitType.TaskComplete:
                    return "主界面任务完成表现";
                case TaskWaitType.LevelUp:
                    return "玩家升级表现";
                case TaskWaitType.TreasureProgress:
                    return "法宝进度更新";
                case TaskWaitType.BetterEquip:
                    return "获得更好装备";
                default:
                    return waitType.ToString();
            }
        static string GetTaskWaitTypeLabel(TaskWaitType waitType)
        {
            switch (waitType)
            {
                case TaskWaitType.TaskComplete:
                    return "主界面任务完成表现";
                case TaskWaitType.LevelUp:
                    return "玩家升级表现";
                case TaskWaitType.TreasureProgress:
                    return "法宝进度更新";
                case TaskWaitType.BetterEquip:
                    return "获得更好装备";
                default:
                    return waitType.ToString();
            }
        }
#endif
    }