From 4c720b0423f4d613a2a01d984912b3d68c1dafc4 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期一, 07 九月 2020 14:15:22 +0800
Subject: [PATCH] 0312 修改采集物采集逻辑

---
 System/MainInterfacePanel/TaskModel.cs |  284 +++++++++++++++++++++++++++++---------------------------
 1 files changed, 145 insertions(+), 139 deletions(-)

diff --git a/System/MainInterfacePanel/TaskModel.cs b/System/MainInterfacePanel/TaskModel.cs
index 0f41f45..23a04f2 100644
--- a/System/MainInterfacePanel/TaskModel.cs
+++ b/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
     }

--
Gitblit v1.8.0