From b2865aa711abef93cf2e84fbe6bb33d6d4ae021d Mon Sep 17 00:00:00 2001
From: client_Hale <339726288@qq.com>
Date: 星期三, 22 五月 2019 11:51:49 +0800
Subject: [PATCH] 3644 【2.0】【bug】跨服灵草园采集出错

---
 Fight/GameActor/GA_NpcCollect.cs                  |   15 +++++++++++++++
 System/MainInterfacePanel/MainCollectBehaviour.cs |   11 ++---------
 Fight/PrepareHandler.cs                           |    6 ------
 3 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/Fight/GameActor/GA_NpcCollect.cs b/Fight/GameActor/GA_NpcCollect.cs
index f02d35c..f46a9e6 100644
--- a/Fight/GameActor/GA_NpcCollect.cs
+++ b/Fight/GameActor/GA_NpcCollect.cs
@@ -301,6 +301,21 @@
         }
 
         PrepareHandler.Instance.Leave(this);
+
+        GA_Hero _hero = PlayerDatas.Instance.hero;
+        if (_hero != null)
+        {
+            if (_hero.SelectTarget != null && ServerInstID == _hero.SelectTarget.ServerInstID)
+            {
+                SelectionManager.Release(SelectionManager.E_Type.Green);
+                _hero.SelectTarget = null;
+            }
+
+            if (_hero.LockTarget == this)
+            {
+                _hero.LockTarget = null;
+            }
+        }
     }
 
     public override bool CanBeSelected()
diff --git a/Fight/PrepareHandler.cs b/Fight/PrepareHandler.cs
index 74cf798..5ad5a9f 100644
--- a/Fight/PrepareHandler.cs
+++ b/Fight/PrepareHandler.cs
@@ -96,12 +96,6 @@
 
     public void HandleCallback(E_NpcType type, int npcID, uint sid)
     {
-        var _target = GAMgr.Instance.GetBySID(sid);
-        if (!(_target is GA_NpcCollect))
-        {
-            return;
-        }
-
         var _hero = PlayerDatas.Instance.hero;
         if (_hero != null)
         {
diff --git a/System/MainInterfacePanel/MainCollectBehaviour.cs b/System/MainInterfacePanel/MainCollectBehaviour.cs
index f10cc10..5bbc4d6 100644
--- a/System/MainInterfacePanel/MainCollectBehaviour.cs
+++ b/System/MainInterfacePanel/MainCollectBehaviour.cs
@@ -82,15 +82,8 @@
         {
             if (collectNpcId != 0 && serverInstanceId != 0)
             {
-                var _npc = GAMgr.Instance.GetBySID(serverInstanceId);
-                if (_npc is GA_NpcCollect)
-                {
-                    PrepareHandler.Instance.HandleCallback(E_NpcType.Collect, collectNpcId, serverInstanceId);
-                }
-                else if (_npc is GA_NpcClientCollect)
-                {
-                    ClientCollectUtility.HandleCallback(E_NpcType.Collect, collectNpcId, serverInstanceId);
-                }
+                PrepareHandler.Instance.HandleCallback(E_NpcType.Collect, collectNpcId, serverInstanceId);
+                ClientCollectUtility.HandleCallback(E_NpcType.Collect, collectNpcId, serverInstanceId);
                 // NPCInteractProcessor.InvokeEvent(E_NpcType.Collect, collectNpcId, serverInstanceId);
             }
         }

--
Gitblit v1.8.0