From bd2c2f1bd3ab7624f62bae55b041b71c0bc352ce Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期一, 13 八月 2018 15:45:34 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 Fight/PreFightMission.cs |  116 +++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 98 insertions(+), 18 deletions(-)

diff --git a/Fight/PreFightMission.cs b/Fight/PreFightMission.cs
index 699a06c..54979b5 100644
--- a/Fight/PreFightMission.cs
+++ b/Fight/PreFightMission.cs
@@ -102,22 +102,6 @@
         UILoader.LoadPrefab(_actorShowConfig.cam);
     }
 
-    public void CreateAllMissionNpc()
-    {
-        if (s_MissionDict.Count == 0)
-        {
-            return;
-        }
-
-        foreach (var _mission in s_MissionDict.Values)
-        {
-            if (_mission.status == 1)
-            {
-                HandlerMission(_mission.id);
-            }
-        }
-    }
-
     public void HandleNewPlayerMission(H0820_tagMissionDict h0820)
     {
         if (h0820.MissionID == 1)
@@ -190,6 +174,7 @@
 
     public void Start()
     {
+        mDestroy = false;
         NewGuideModel _model = ModelCenter.Instance.GetModel<NewGuideModel>();
         _model.arrowScale = 1;
 
@@ -445,13 +430,20 @@
         GA_Hero _hero = PlayerDatas.Instance.hero;
         while (true)
         {
+            if (mDestroy)
+            {
+                yield break;
+            }
             if (_hero.IsIdle())
             {
                 break;
             }
             yield return null;
         }
-        PlayerDatas.Instance.hero.MoveToPosition(pos);
+        if (!mDestroy)
+        {
+            PlayerDatas.Instance.hero.MoveToPosition(pos);
+        }
     }
 
     private void HandlerMission(uint missionId)
@@ -468,7 +460,6 @@
 
         if (s_MissionDict.ContainsKey(missionId))
         {
-            DesignDebug.LogFormat("宸茬粡鍒涘缓杩囩殑浠诲姟ID: {0}", missionId);
             return;
         }
 
@@ -1532,6 +1523,95 @@
 
         DesignDebug.Log("鍓嶆湡缁撴潫...");
     }
+    private bool mDestroy = false;
+    public void Destroy()
+    {
+        mDestroy = true;
+        if (m_FuncNpc != null)
+        {
+            GAMgr.Instance.ServerDie(m_FuncNpc.ServerInstID);
+            GAMgr.Instance.Release(m_FuncNpc);
+            m_FuncNpc = null;
+        }
+
+        missionNpcDict.Clear();
+        s_MissionDict.Clear();
+        s_MissionImpasseDict.Clear();
+        refreshNpcHandlerList.Clear();
+
+        if (m_SimpleTransfer)
+        {
+            Object.Destroy(m_SimpleTransfer.gameObject);
+            m_SimpleTransfer = null;
+        }
+
+        if (m_ObstacleEffect)
+        {
+            Object.Destroy(m_ObstacleEffect.gameObject);
+            m_ObstacleEffect = null;
+        }
+
+        if (m_HuaShouEffect)
+        {
+            Object.Destroy(m_HuaShouEffect.gameObject);
+            m_HuaShouEffect = null;
+        }
+
+        if (m_FabaoEffect)
+        {
+            SFXPlayUtility.Instance.Release(m_FabaoEffect);
+            m_FabaoEffect = null;
+        }
+
+        // 璧勬簮鍗歌浇
+        if (!AssetSource.sceneFromEditor)
+        {
+            UnityEngine.SceneManagement.SceneManager.UnloadSceneAsync("Map000_Xsdt");
+            AssetBundleUtility.Instance.UnloadAssetBundle("maps/map000_xsdt", true, false);
+        }
+
+        List<GActor> _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcClientFightNorm);
+        if (_list != null)
+        {
+            for (int i = _list.Count - 1; i >= 0; --i)
+            {
+                GAMgr.Instance.ServerDie(_list[i].ServerInstID);
+                GAMgr.Instance.Release(_list[i]);
+            }
+        }
+
+        _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcClientFightBoss);
+        if (_list != null)
+        {
+            for (int i = _list.Count - 1; i >= 0; --i)
+            {
+                GAMgr.Instance.ServerDie(_list[i].ServerInstID);
+                GAMgr.Instance.Release(_list[i]);
+            }
+        }
+
+        _list = GAMgr.Instance.GetTypeList(E_ActorClassType.NpcClientFunc);
+        if (_list != null)
+        {
+            for (int i = _list.Count - 1; i >= 0; --i)
+            {
+                GAMgr.Instance.ServerDie(_list[i].ServerInstID);
+                GAMgr.Instance.Release(_list[i]);
+            }
+        }
+
+        GameObjectPoolManager.Instance.UnLoadNPC(1000);
+        GameObjectPoolManager.Instance.UnLoadNPC(1003);
+        GameObjectPoolManager.Instance.UnLoadNPC(1006);
+        GameObjectPoolManager.Instance.UnLoadNPC(1007);
+        GameObjectPoolManager.Instance.UnLoadNPC(1008);
+        GameObjectPoolManager.Instance.UnLoadNPC(1009);
+
+        if (!AssetSource.mobFromEditor)
+        {
+            AssetBundleUtility.Instance.UnloadAssetBundle("mob/prefab_race_n017a", true, true);
+        }
+    }
 
     private SimpleMapTrasfer CreateTransfer()
     {

--
Gitblit v1.8.0