From 196c1f03fe7a8908272c8127133e632d107eaef8 Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期一, 13 八月 2018 16:35:33 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 Fight/PreFightMission.cs                 |  116 ++++++++++++++++++++++++----
 System/Welfare/MultipleExpWin.cs         |    5 +
 System/Welfare/OperationTimeHepler.cs    |   17 +--
 System/FindPrecious/DemonJarWin.cs       |    3 
 System/RuneTower/RuneTowerWin.cs         |   13 +++
 Fight/Stage/Dungeon/DungeonStage.cs      |    2 
 System/DailyQuest/DailyQuestBehaviour.cs |   14 ++
 System/DailyQuest/DailyQuestWin.cs       |    1 
 System/DailyQuest/DailyQuestModel.cs     |   18 ++++
 9 files changed, 153 insertions(+), 36 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()
     {
diff --git a/Fight/Stage/Dungeon/DungeonStage.cs b/Fight/Stage/Dungeon/DungeonStage.cs
index 7b8c3a7..6a6909e 100644
--- a/Fight/Stage/Dungeon/DungeonStage.cs
+++ b/Fight/Stage/Dungeon/DungeonStage.cs
@@ -122,7 +122,7 @@
             CameraController.Instance.StopShake();
         }
 
-        PreFightMission.Instance.refreshNpcHandlerList.Clear();
+        PreFightMission.Instance.Destroy();
         GAMgr.Instance.UnInit();
         DropItemManager.ReleaseAll();
         SFXPlayUtility.Instance.Unitialize();
diff --git a/System/DailyQuest/DailyQuestBehaviour.cs b/System/DailyQuest/DailyQuestBehaviour.cs
index d969fa1..230eeea 100644
--- a/System/DailyQuest/DailyQuestBehaviour.cs
+++ b/System/DailyQuest/DailyQuestBehaviour.cs
@@ -125,9 +125,17 @@
             {
                 if (state == DailyQuestModel.DailyQuestState.CanBuyTimes)
                 {
-                    var config = ConfigManager.Instance.GetTemplate<DailyQuestConfig>(data.id);
-                    dungeonModel.currentDungeon = new Dungeon(config.RelatedID, 0);
-                    WindowCenter.Instance.Open<DungeonBuyTimesWin>();
+                    switch ((DailyQuestType)data.id)
+                    {
+                        case DailyQuestType.RuneTowerSweep:
+                            dailyQuestWin.GotoDailyQuest(data.id);
+                            break;
+                        default:
+                            var config = ConfigManager.Instance.GetTemplate<DailyQuestConfig>(data.id);
+                            dungeonModel.currentDungeon = new Dungeon(config.RelatedID, 0);
+                            WindowCenter.Instance.Open<DungeonBuyTimesWin>();
+                            break;
+                    }
                 }
                 else
                 {
diff --git a/System/DailyQuest/DailyQuestModel.cs b/System/DailyQuest/DailyQuestModel.cs
index e9df2bf..656fc01 100644
--- a/System/DailyQuest/DailyQuestModel.cs
+++ b/System/DailyQuest/DailyQuestModel.cs
@@ -246,7 +246,7 @@
                         switch (config.RelatedID)
                         {
                             case 11:
-                                return dailyQuestOpenTime.DayTimes + GeneralConfig.Instance.runeTowerSweepBuyTimes;
+                                return Math.Max(dailyQuestOpenTime.DayTimes, GetDailyQuestCompletedTimes(_dailyQuestId));
                             case 16:
                                 return ModelCenter.Instance.GetModel<VipModel>().GetVipPrivilegeCnt(VipPrivilegeType.BossHomeAwardLimit);
                             default:
@@ -831,7 +831,21 @@
                 switch (config.RelatedType)
                 {
                     case 1:
-                        return DailyQuestState.Completed;
+                        switch (config.RelatedID)
+                        {
+                            case 11:
+                                var dailyQuestOpenTime = ConfigManager.Instance.GetTemplate<DailyQuestOpenTimeConfig>(config.RelatedID);
+                                if (completedTimes >= dailyQuestOpenTime.DayTimes + GeneralConfig.Instance.runeTowerSweepBuyTimes)
+                                {
+                                    return DailyQuestState.Completed;
+                                }
+                                else
+                                {
+                                    return DailyQuestState.CanBuyTimes;
+                                }
+                            default:
+                                return DailyQuestState.Completed;
+                        }
                     case 2:
                         DungeonRecord record;
                         dungeonModel.TryGetDungeonRecord(config.RelatedID, out record);
diff --git a/System/DailyQuest/DailyQuestWin.cs b/System/DailyQuest/DailyQuestWin.cs
index f0fb056..fe0d5d4 100644
--- a/System/DailyQuest/DailyQuestWin.cs
+++ b/System/DailyQuest/DailyQuestWin.cs
@@ -252,6 +252,7 @@
                     dungeonModel.SingleChallengeDungeon(config.RelatedID);
                     break;
                 case DailyQuestType.RuneTowerSweep:
+                    RuneTowerWin.guideSweep = true;
                     WindowCenter.Instance.CloseImmediately<DailyQuestWin>();
                     WindowCenter.Instance.Open<RuneTowerWin>();
                     break;
diff --git a/System/FindPrecious/DemonJarWin.cs b/System/FindPrecious/DemonJarWin.cs
index 5986089..c4d20bc 100644
--- a/System/FindPrecious/DemonJarWin.cs
+++ b/System/FindPrecious/DemonJarWin.cs
@@ -297,6 +297,9 @@
                 return;
             }
 
+            totalTimes = dungeonModel.GetDungeonTotalTimes(DemonJarModel.DEMONJAR_MAPID);
+            enterTimes = dungeonModel.GetDungeonEnterTimes(DemonJarModel.DEMONJAR_MAPID);
+
             m_Times.text = StringUtility.Contact(totalTimes - enterTimes, "/", DemonJarModel.TOTALTIME_LIMIT);
 
             if ((totalTimes - enterTimes) < DemonJarModel.TOTALTIME_LIMIT)
diff --git a/System/RuneTower/RuneTowerWin.cs b/System/RuneTower/RuneTowerWin.cs
index c446264..6572750 100644
--- a/System/RuneTower/RuneTowerWin.cs
+++ b/System/RuneTower/RuneTowerWin.cs
@@ -17,6 +17,7 @@
     public class RuneTowerWin : Window
     {
         public static bool guideChallenge = false;
+        public static bool guideSweep = false;
 
         [SerializeField] RuneTowerBehaviour m_Tower;
         [SerializeField] Transform m_ContainerBossInfo;
@@ -98,6 +99,7 @@
         protected override void OnPreClose()
         {
             guideChallenge = false;
+            guideSweep = false;
             WindowCenter.Instance.uiRoot.eventSystem.enabled = true;
             m_Tower.Dispose();
             UI3DModelExhibition.Instance.StopShowNPC();
@@ -126,6 +128,7 @@
             }
 
             CheckTaskGuide();
+            CheckSweepGuide();
             CheckAchievementGuide();
         }
 
@@ -331,7 +334,6 @@
             }
         }
 
-
         private void CheckTaskGuide()
         {
             if (guideChallenge)
@@ -341,6 +343,15 @@
             }
         }
 
+        private void CheckSweepGuide()
+        {
+            if (guideSweep && m_Sweep.gameObject.activeInHierarchy)
+            {
+                var guideEffect = AchievementGuideEffectPool.Require(1);
+                guideEffect.transform.SetParentEx(m_Sweep.transform, Vector3.zero, Vector3.zero, Vector3.one);
+            }
+        }
+
         private void CheckAchievementGuide()
         {
             if (AchievementGoto.guideAchievementId != 0)
diff --git a/System/Welfare/MultipleExpWin.cs b/System/Welfare/MultipleExpWin.cs
index c35d485..72b33c3 100644
--- a/System/Welfare/MultipleExpWin.cs
+++ b/System/Welfare/MultipleExpWin.cs
@@ -15,6 +15,7 @@
     public class MultipleExpWin : Window
     {
         [SerializeField] Text m_MultipleTime;
+        [SerializeField] Text m_MultipleDate;
         [SerializeField] Text m_ActivityRule;
         [SerializeField] Image m_MultipleIcon1;
         [SerializeField] Image m_MultipleIcon2;
@@ -64,6 +65,10 @@
             {
                 OperationMultiExp operation = operationBase as OperationMultiExp;
                 m_MultipleTime.text = operation.ToDisplayTime();
+                m_MultipleDate.text = StringUtility.Contact(Language.Get("OperationDate"), operation.startDate.ToDisplay(),
+                    operation.startDate == operation.endDate ? string.Empty : "鈥�",
+                    operation.startDate == operation.endDate ? string.Empty :
+                    operation.endDate.ToDisplay(operation.startDate.year != operation.endDate.year));
                 m_ActivityRule.text = Language.Get("MultipleExp_Rule_2", operation.GetMultipleCHS());
                 m_MultipleIcon1.SetSprite(StringUtility.Contact("MultipleExp_Icon_", operation.multiple / 10000));
                 m_MultipleIcon2.SetSprite(StringUtility.Contact("MultipleExp_Icon_", operation.multiple / 10000));
diff --git a/System/Welfare/OperationTimeHepler.cs b/System/Welfare/OperationTimeHepler.cs
index 916c5a3..203f306 100644
--- a/System/Welfare/OperationTimeHepler.cs
+++ b/System/Welfare/OperationTimeHepler.cs
@@ -890,17 +890,12 @@
         {
             var textBuilder = OperationTimeHepler.textBuilder;
             textBuilder.Length = 0;
-            textBuilder.Append(startDate.ToDisplay());
-            if (startDate == endDate)
-            {
-                textBuilder.Append("锛�");
-            }
-            else
-            {
-                textBuilder.Append("鈥�");
-                textBuilder.Append(endDate.ToDisplay(startDate.year != endDate.year));
-                textBuilder.Append("锛�");
-            }
+            //textBuilder.Append(startDate.ToDisplay());
+            //if (startDate != endDate)
+            //{
+            //    textBuilder.Append("鈥�");
+            //    textBuilder.Append(endDate.ToDisplay(startDate.year != endDate.year));
+            //}
             if (allDay)
             {
                 textBuilder.Append(Language.Get("OpenAllDay"));

--
Gitblit v1.8.0