From 42e8bf4cf1ed3f5e249b7ae50e3cefca487652fc Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期三, 22 八月 2018 14:57:49 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts

---
 System/MainInterfacePanel/PlayerMainDate.cs          |   35 +++
 System/Store/StoreModel.cs                           |    2 
 UI/Common/UI3DShowHero.cs                            |   24 --
 System/Treasure/FairyTreasureCollectPanelPattern5.cs |   34 +++
 System/MainInterfacePanel/SideMission.cs             |  132 ++++++++++++-
 System/MainInterfacePanel/TaskListTip.cs             |   57 +++++
 System/Realm/RealmBossShow.cs                        |  204 ++++++++++++++++++++
 System/MainInterfacePanel/FlyingShoesTask.cs         |  108 +++++++---
 8 files changed, 513 insertions(+), 83 deletions(-)

diff --git a/System/MainInterfacePanel/FlyingShoesTask.cs b/System/MainInterfacePanel/FlyingShoesTask.cs
index 067699e..66291d4 100644
--- a/System/MainInterfacePanel/FlyingShoesTask.cs
+++ b/System/MainInterfacePanel/FlyingShoesTask.cs
@@ -120,36 +120,27 @@
             m_ImgSelected.SetActive(true);
 
             taskmodel.GetNowTaskID = Task_ID;
+
+            if (mainModel.TaskId_Skill1.Contains(Task_ID))
+            {
+                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//鑾峰彇鐗规畩鐗╁搧
+                if (itemNumber >= mainModel.ItemNumber)
+                {
+                    taskmodel.CompletionOfTask(Task_ID);
+                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
+                }
+                else
+                {
+                    StateDetermination();
+                    ContentText.ExcuteHref();
+                }
+                return;
+            }
             switch ((int)taskmodel.GetTaskStatus(Task_ID))
             {
                 case -5:
                 case 0:
-                    DropItemManager.StopMissionPickup = true;//涓诲姩鍋滄鎷惧彇鐗╁搧
-                    if (PlayerDatas.Instance.extersion.bossState == 1)
-                    {
-                        string strNpc = string.Empty;
-                        strNpc = ContentText.GetHrefMessage("movenpc");
-                        int npcId = 0;
-                        int mapID = PlayerDatas.Instance.baseData.MapID;
-                        if (int.TryParse(strNpc, out npcId))
-                        {
-                            var npcConfig = Config.Instance.GetAllValues<mapnpcConfig>();
-                            foreach (var value in npcConfig)
-                            {
-                                if (value.NPCID == npcId && value.MapID != mapID)
-                                {
-                                    SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
-                                    return;
-                                }
-                            }
-                            var MonsterConfig = Config.Instance.Get<MonsterRefreshPointConfig>(npcId);
-                            if (MonsterConfig != null && MonsterConfig.MapId != mapID)
-                            {
-                                SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
-                                return;
-                            }
-                        }
-                    }
+                    StateDetermination();
                     ContentText.ExcuteHref();
                     OpenPanel(Task_ID);
                     break;
@@ -202,12 +193,47 @@
                     break;
                 case 3:
                     taskmodel.CompletionOfTask(Task_ID);
+                    if (mainModel.TaskId_Skill.Contains(Task_ID))
+                    {
+                        WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
+                    }
                     break;
                 default:
                     break;
-
             }
         }
+
+        private void StateDetermination()//鐘舵�佸垽瀹�
+        {
+            DropItemManager.StopMissionPickup = true;//涓诲姩鍋滄鎷惧彇鐗╁搧
+            if (PlayerDatas.Instance.extersion.bossState == 1)
+            {
+                string strNpc = string.Empty;
+                strNpc = ContentText.GetHrefMessage("movenpc");
+                int npcId = 0;
+                int mapID = PlayerDatas.Instance.baseData.MapID;
+                if (int.TryParse(strNpc, out npcId))
+                {
+                    var npcConfig = Config.Instance.GetAllValues<mapnpcConfig>();
+                    foreach (var value in npcConfig)
+                    {
+                        if (value.NPCID == npcId && value.MapID != mapID)
+                        {
+                            SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
+                            return;
+                        }
+                    }
+                    var MonsterConfig = Config.Instance.Get<MonsterRefreshPointConfig>(npcId);
+                    if (MonsterConfig != null && MonsterConfig.MapId != mapID)
+                    {
+                        SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
+                        return;
+                    }
+                }
+            }
+
+        }
+
         private void OnClickDeliveryButton()//浼犻�佺
         {
             mainModel.FlyShoseTaskID = Task_ID;
@@ -293,16 +319,32 @@
             }
             string str = taskmodel.allMissionDict[TaskID].InforList;
             var taskinfo = Config.Instance.Get<TASKINFOConfig>(str);
-            if (taskinfo != null)
+            if (mainModel.TaskId_Skill1.Contains(TaskID))//鐗规畩浠诲姟
             {
-                m_ContentText.text = taskinfo.show_writing;
+                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//鑾峰彇鐗规畩鐗╁搧
+                string Str_A = string.Format(Language.Get("PassiveSkillTask1"), mainModel.ItemID, itemNumber);
+                string Str_B = Language.Get("PassiveSkillTask2");
+                if (itemNumber >= mainModel.ItemNumber)
+                {
+                    m_ContentText.text = Str_B;
+                }
+                else
+                {
+                    m_ContentText.text = Str_A;
+                }
             }
             else
             {
-                DebugEx.LogError("浠诲姟琛ㄦ牸PyTaskInfo閰嶇疆缂哄け");
-                return;
-            }
-
+                if (taskinfo != null)
+                {
+                    m_ContentText.text = taskinfo.show_writing;
+                }
+                else
+                {
+                    DebugEx.LogError("浠诲姟琛ㄦ牸PyTaskInfo閰嶇疆缂哄け");
+                    return;
+                }
+            }          
             bool isOPenTransferButton = HrefAnalysis.Inst.ContainsKey(taskinfo.show_writing, "flynpc");
             if (isOPenTransferButton && !IsKaJiBool)
             {
diff --git a/System/MainInterfacePanel/PlayerMainDate.cs b/System/MainInterfacePanel/PlayerMainDate.cs
index e49ebe1..d791053 100644
--- a/System/MainInterfacePanel/PlayerMainDate.cs
+++ b/System/MainInterfacePanel/PlayerMainDate.cs
@@ -123,6 +123,7 @@
             OneKeyList.Add(Listmap[i]);
         }
         NetworkState = (int)SDKUtility.Instance.NetworkType;
+        GetPassiveSkillTask();
     }
     //----------鍏充簬鏌愪簺鍓湰鍙互杩涜鍦板浘鎸傛満
     public List<int> OneKeyList = new List<int>();
@@ -130,6 +131,40 @@
     //----------浣跨敤濞茬殗鍗疯酱鍚庣殑Buff琛ㄧ幇
     public static event Action EmperorBuffEvent;
     public bool IsEmperor = false;
+
+    //---------鍏充簬浠诲姟闇�瑕佺殑鏁版嵁
+    public List<int> TaskId_Skill = new List<int>();
+    public List<int> TaskId_Skill1 = new List<int>();
+    public int ItemID = 0;
+    public int UnitPrice = 0;
+    public int ItemNumber = 0;
+
+
+    private void GetPassiveSkillTask()//鑾峰彇浠诲姟鏁版嵁
+    {
+        TaskId_Skill.Clear();
+        TaskId_Skill1.Clear();
+        var PassiveSkillTaskconfig = Config.Instance.Get<FuncConfigConfig>("PassiveSkillTask");
+        int[] TaskId_SkillInt = ConfigParse.GetMultipleStr<int>(PassiveSkillTaskconfig.Numerical1);
+        for (int i = 0; i < TaskId_SkillInt.Length; i++)
+        {
+            TaskId_Skill.Add(TaskId_SkillInt[i]);
+        }
+        int[] TaskId_SkillInt1 = ConfigParse.GetMultipleStr<int>(PassiveSkillTaskconfig.Numerical2);
+        for (int i = 0; i < TaskId_SkillInt1.Length; i++)
+        {
+            TaskId_Skill1.Add(TaskId_SkillInt1[i]);
+        }
+        int[] PassiveSkillTask = ConfigParse.GetMultipleStr<int>(PassiveSkillTaskconfig.Numerical3);
+        if (PassiveSkillTask.Length >= 3)
+        {
+            ItemID = PassiveSkillTask[0];
+            UnitPrice = PassiveSkillTask[1];
+            ItemNumber = PassiveSkillTask[2];
+        }     
+    }
+
+
     private void UseItemSuccessAct(int Index, int ItemID)
     {
         if (ItemID == 221)
diff --git a/System/MainInterfacePanel/SideMission.cs b/System/MainInterfacePanel/SideMission.cs
index 8c168cf..b9ec018 100644
--- a/System/MainInterfacePanel/SideMission.cs
+++ b/System/MainInterfacePanel/SideMission.cs
@@ -9,9 +9,11 @@
 using TableConfig;
 using System.Collections.Generic;
 //浠诲姟闈㈡澘鐨勬敮绾夸换鍔�
-namespace Snxxz.UI {
+namespace Snxxz.UI
+{
 
-    public class SideMission:MonoBehaviour {
+    public class SideMission : MonoBehaviour
+    {
         [SerializeField] ScrollerController _TaskRamusList;
         //鍙充晶闈㈡澘
         [SerializeField] Text _Text_TaskName;//浠诲姟鍚�
@@ -25,11 +27,15 @@
         PlayerTaskDatas taskmodel { get { return m_TaskModel ?? (m_TaskModel = ModelCenter.Instance.GetModel<PlayerTaskDatas>()); } }
         ItemTipsModel _itemTipsModel;
         ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>()); } }
+        PlayerPackModel _playerPack;
+        PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }
+        PlayerMainDate m_MainModel;
+        PlayerMainDate mainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel<PlayerMainDate>()); } }
         private List<RewardAnalysis.RewardInfo> rewardList = new List<RewardAnalysis.RewardInfo>();
         private int TaskIdNow = 0;
         private void Awake()
         {
-            
+
         }
         private void Start()
         {
@@ -39,25 +45,108 @@
         {
             TaskIdNow = 0;
             _TaskRamusList.OnRefreshCell += OnRefreshGridCell;
+            playerPack.RefreshItemCountAct += RefreshItemCountAct;
+            playerPack.ItemCntReduceAct += ItemCntReduceAct;
             OnCreateGridLineCell(_TaskRamusList);
         }
 
         private void OnDisable()
         {
             _TaskRamusList.OnRefreshCell -= OnRefreshGridCell;
+            playerPack.RefreshItemCountAct -= RefreshItemCountAct;
+            playerPack.ItemCntReduceAct -= ItemCntReduceAct;
+        }
+
+        private void ItemCntReduceAct(PackType arg1, int arg2, int arg3)
+        {
+            if (arg1 == PackType.rptItem && arg3 == mainModel.ItemID)
+            {
+                foreach (var key in taskmodel.SideQuestsDic.Keys)
+                {
+                    if (mainModel.TaskId_Skill1.Contains(key))
+                    {
+                        _TaskRamusList.m_Scorller.RefreshActiveCellViews();//鍒锋柊褰撳墠鍙
+                    }
+                }
+            }
+        }
+
+        private void RefreshItemCountAct(PackType arg1, int arg2, int arg3)
+        {
+            if (arg1 == PackType.rptItem && arg3 == mainModel.ItemID)
+            {
+                foreach (var key in taskmodel.SideQuestsDic.Keys)
+                {
+                    if (mainModel.TaskId_Skill1.Contains(key))
+                    {
+                        _TaskRamusList.m_Scorller.RefreshActiveCellViews();//鍒锋柊褰撳墠鍙
+                    }
+                }
+            }
         }
 
         private void ForwardButton()
         {
+            if (mainModel.TaskId_Skill1.Contains(TaskIdNow))
+            {
+                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//鑾峰彇鐗规畩鐗╁搧
+                if (itemNumber >= mainModel.ItemNumber)
+                {
+                    taskmodel.CompletionOfTask(TaskIdNow);
+                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
+                }
+                else
+                {
+                    int Gold = (int)UIHelper.GetMoneyCnt(1);//浠欑帀
+                    int GoldPaper = (int)UIHelper.GetMoneyCnt(2);//缁戠帀
+                    string strNull = string.Empty;
+                    int needNumber = (mainModel.ItemNumber - itemNumber) * mainModel.UnitPrice;//鎵�闇�閲戦
+                    if (GoldPaper >= needNumber)
+                    {
+                        strNull = string.Format(Language.Get("PassiveSkillTask3"), needNumber);
+                    }
+                    else
+                    {
+                        strNull = string.Format(Language.Get("PassiveSkillTask4"), needNumber, GoldPaper, needNumber- GoldPaper);
+                    }
+                    ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), strNull, (bool isOk) =>
+                    {
+                       
+                        if (isOk)
+                        {
+                            if (Gold + GoldPaper >= needNumber)
+                            {
+                                taskmodel.CompletionOfTask(TaskIdNow);
+                                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
+                            }
+                            else
+                            {
+                                if (VersionConfig.Get().isBanShu)
+                                {
+                                    SysNotifyMgr.Instance.ShowTip("GoldErr");
+                                    return;
+                                }
+                                WindowCenter.Instance.Open<RechargeTipWin>();
+                            }
+                        }                    
+                    });
+
+                }
+                return;
+            }
             if ((int)taskmodel.GetTaskStatus(TaskIdNow) == 3)
             {
                 taskmodel.CompletionOfTask(TaskIdNow);
+                if (mainModel.TaskId_Skill.Contains(TaskIdNow))
+                {
+                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
+                }
             }
             else
             {
                 _Text_TaskTarget.ExcuteHref();
             }
-            
+
             WindowCenter.Instance.CloseImmediately<TaskWin>();
             WindowCenter.Instance.Open<MainInterfaceWin>();
         }
@@ -92,17 +181,17 @@
                 var taskname = taskmodel.SideQuestsDic[TaskId].Name;
                 if (Config.Instance.Get<TASKINFOConfig>(taskname) == null)
                 {
-                    DebugEx.LogError("TASKINFO浠诲姟琛ㄦ牸娌℃湁鑾峰彇鍒拌浠诲姟鍚嶇О"+ taskname);
+                    DebugEx.LogError("TASKINFO浠诲姟琛ㄦ牸娌℃湁鑾峰彇鍒拌浠诲姟鍚嶇О" + taskname);
                     return;
                 }
-                sideMissionTitleBtton.TitleName.text= Config.Instance.Get<TASKINFOConfig>(taskname).show_writing;//浠诲姟鍚�
+                sideMissionTitleBtton.TitleName.text = Config.Instance.Get<TASKINFOConfig>(taskname).show_writing;//浠诲姟鍚�
                 if (!taskmodel.SideQuestsDic.ContainsKey(TaskId))
                 {
                     return;
                 }
                 sideMissionTitleBtton.Text_RamusState.text = GegionalTaskStatus(taskmodel.SideQuestsDic[TaskId].MissionState);
                 sideMissionTitleBtton.SideMissionTitleBtton1.RemoveAllListeners();
-                sideMissionTitleBtton.SideMissionTitleBtton1.AddListener(()=> 
+                sideMissionTitleBtton.SideMissionTitleBtton1.AddListener(() =>
                 {
                     if (TaskId != TaskIdNow)
                     {
@@ -122,24 +211,43 @@
             _Text_TaskName.text = Config.Instance.Get<TASKINFOConfig>(taskmodel.SideQuestsDic[taskID].Name).show_writing;//浠诲姟鍚�
             _Text_TaskDescribe.text = Config.Instance.Get<TASKINFOConfig>(taskmodel.SideQuestsDic[taskID].Desclist).show_writing;//浠诲姟鎻忚堪
             string strINfor = taskmodel.SideQuestsDic[taskID].InforList;
-            string str = Config.Instance.Get<TASKINFOConfig>(strINfor).show_writing;
+            string str = string.Empty;
+            if (mainModel.TaskId_Skill1.Contains(taskID))
+            {
+                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//鑾峰彇鐗规畩鐗╁搧
+                if (itemNumber >= mainModel.ItemNumber)
+                {
+                    string Str_A = string.Format(Language.Get("PassiveSkillTask1"), mainModel.ItemID, mainModel.ItemNumber);
+                    str = Str_A;
+                }
+                else
+                {
+                    string Str_A = string.Format(Language.Get("PassiveSkillTask1"), mainModel.ItemID, itemNumber);
+                    str = Str_A;
+                }
+            }
+            else
+            {
+                str = Config.Instance.Get<TASKINFOConfig>(strINfor).show_writing;
+            }       
             str = WordAnalysis.Color_Start_Regex.Replace(str, string.Empty);
             str = WordAnalysis.Color_End_Regex.Replace(str, string.Empty);
             _Text_TaskTarget.text = str;//浠诲姟鐩爣
-            if ((int)taskmodel.GetTaskStatus(TaskIdNow) == 3)
+           
+            if ((int)taskmodel.GetTaskStatus(TaskIdNow) == 3 || mainModel.TaskId_Skill1.Contains(taskID))//鑳藉杩涜绔嬪嵆瀹屾垚鐨勬敮绾夸换鍔�
             {
-                _Text_Forward.text = string.Format(Language.Get("FinishAtOnce_Z")) ;
+                _Text_Forward.text = string.Format(Language.Get("FinishAtOnce_Z"));
             }
             else
             {
                 _Text_Forward.text = TaskStatus(taskmodel.SideQuestsDic[taskID].MissionState);
             }
-            
+
             if (taskmodel._DicTaskInformation.ContainsKey(taskID))
             {
                 _Text_TaskTarget.SetReplaceInfo(taskmodel._DicTaskInformation[taskID]);
             }
-          
+
             if (taskmodel.SideQuestsDic[taskID].RewardList == null)
             {
                 if (_Grid.childCount != 0)
diff --git a/System/MainInterfacePanel/TaskListTip.cs b/System/MainInterfacePanel/TaskListTip.cs
index 5981779..a7f6553 100644
--- a/System/MainInterfacePanel/TaskListTip.cs
+++ b/System/MainInterfacePanel/TaskListTip.cs
@@ -33,6 +33,10 @@
         TreasureModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<TreasureModel>()); } }
         PlayerTaskDatas m_TaskModel;
         PlayerTaskDatas taskmodel { get { return m_TaskModel ?? (m_TaskModel = ModelCenter.Instance.GetModel<PlayerTaskDatas>()); } }
+        PlayerPackModel _playerPack;
+        PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }
+        PlayerMainDate m_MainModel;
+        PlayerMainDate mainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel<PlayerMainDate>()); } }
         List<int> RenzhuTaskIDList = new List<int>();//娉曞疂浠诲姟鏁扮粍ID
         List<int> ListSort = new List<int>();//鐢ㄤ簬鎺掑垪椤哄簭(鏈崱绾�)
         List<int> ListSort1 = new List<int>();//鐢ㄤ簬鎺掑簭锛堝崱绾э級
@@ -104,12 +108,12 @@
             PlayerTaskDatas.Event_TaskRefreshes += TaskRefreshes;//浠诲姟鐨勫埛鏂�
             PlayerTaskDatas.Event_TaskToDelete += OnTaskToDelete;//浠诲姟鐨勫垹闄�
             PlayerTaskDatas.Event_TaskInformation += TaskInformation;//浠诲姟瀛楀吀淇℃伅
-            //PlayerTaskDatas.CardLevelChange += CardLevelChange;//浠诲姟鍗$骇鐘舵�佹敼鍙�
             PlayerTaskDatas.MainCardLevelChange += MainCardLevelChange;//鍗$骇浠诲姟淇敼
             model.collectingTreasureChangeEvent += OnCollectingTreasureChangeEvent;
             FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
             TreasureNewGotWin.CloseTreasureNewGotWinEvent += CloseTreasureNewGotWinEvent;
-
+            playerPack.RefreshItemCountAct += RefreshItemCountAct;
+            playerPack.ItemCntReduceAct += ItemCntReduceAct;
             OnCollectingTreasureChangeEvent(TreasureCategory.Human);
             TaskScheduling();//浠诲姟鎺掑簭  1
             TheTaskToGenerate();//浠诲姟鐢熸垚
@@ -139,11 +143,55 @@
             FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
             TreasureNewGotWin.CloseTreasureNewGotWinEvent -= CloseTreasureNewGotWinEvent;
             PlayerTaskDatas.MainCardLevelChange -= MainCardLevelChange;//鍗$骇浠诲姟淇敼
+            playerPack.RefreshItemCountAct -= RefreshItemCountAct;
+            playerPack.ItemCntReduceAct -= ItemCntReduceAct;
+        }
+
+        private void ItemCntReduceAct(PackType arg1, int arg2, int arg3)
+        {
+            if (arg1 == PackType.rptItem && arg3== mainModel.ItemID)
+            {
+                foreach (var key in taskmodel.SideQuestsDic.Keys)
+                {
+                    if (mainModel.TaskId_Skill1.Contains(key))
+                    {
+                        TaskIdUpdate(key);
+                    }
+                }
+            }
+            
+        }
+
+        private void RefreshItemCountAct(PackType arg1, int arg2, int arg3)
+        {
+            if (arg1 == PackType.rptItem && arg3 == mainModel.ItemID)
+            {
+                foreach (var key in taskmodel.SideQuestsDic.Keys)
+                {
+                    if (mainModel.TaskId_Skill1.Contains(key))
+                    {
+                        TaskIdUpdate(key);
+                    }
+                }
+            }
+        }
+
+        private void TaskIdUpdate(int taskId)
+        {
+            int leng = Content.childCount;
+            for (int i = 0; i < leng; i++)
+            {
+                GameObject childObj = Content.GetChild(i).gameObject;
+                TaskType childObjTaskType = Content.GetChild(i).gameObject.GetComponent<TaskType>();
+                if (childObj.activeSelf && childObjTaskType.TaskID == taskId)
+                {
+                    childObj.GetComponent<FlyingShoesTask>().FlyingShoes_Task(taskId);
+                }
+            }
         }
 
         private void MainCardLevelChange(int _id)
         {
-
             TaskScheduling();
             bool IsDefault = true;
             var State = taskmodel.GetTaskStatus(_id);
@@ -348,7 +396,6 @@
             {
                 _list.Sort(Compare1);//鍗$骇鎺掑簭   
             }
-
         }
         int Compare(int x, int y)//榛樿鎺掑簭(鏃犲崱绾�)
         {
@@ -401,8 +448,6 @@
                 var _position = (_list.Count - type) * m_SizeHeight + (_list.Count - type - 1) * 2;
                 _position -= 196;
                 m_ScrollRect.verticalNormalizedPosition = Mathf.Clamp01(_position / ((Content as RectTransform).sizeDelta.y - 196));
-                // m_ScrollRect.verticalNormalizedPosition = Mathf.Clamp01(m_ScrollRect.verticalNormalizedPosition + ((Content as RectTransform).sizeDelta.y - 196));
-                //m_ScrollRect.verticalNormalizedPosition = ((float)1 - (float)(type + 1) / _list.Count);
             }
         }
     }
diff --git a/System/Realm/RealmBossShow.cs b/System/Realm/RealmBossShow.cs
index b2aaa7d..891a8e6 100644
--- a/System/Realm/RealmBossShow.cs
+++ b/System/Realm/RealmBossShow.cs
@@ -11,7 +11,12 @@
         [SerializeField, Header("灞曠ず鏃堕棿")] float m_DisplayTime = 15f;
         [SerializeField, Header("鐗规晥浣嶇疆")] Vector3 m_EffectPosition = Vector3.zero;
 
-        UI3DShowHero showHero = new UI3DShowHero();
+        GameObject clothesModel;
+        Animator clothesAnimator;
+
+        Transform showPoint;
+
+        List<SFXController> closthesSFXList = new List<SFXController>();
 
         static RealmBossShow m_Instance = null;
         public static RealmBossShow Instance
@@ -134,10 +139,11 @@
             }
             #endregion
 
-            var _hero = showHero.Show(_job, _clothesId, _suitLevel, _weaponId, _wingsId, _secondaryId, m_HeroStage);
+            showPoint = m_HeroStage;
+            var _hero = ShowHero(_job, _clothesId, _suitLevel, _weaponId, _wingsId, _secondaryId);
             if (_hero != null)
             {
-                showHero.SitDown();
+                SitDown();
                 LayerUtility.SetLayer(m_HeroStage.gameObject, LayerUtility.BossShow, true);
             }
         }
@@ -185,12 +191,202 @@
             showCamera.enabled = false;
             m_Effect.gameObject.SetActive(false);
             transform.localPosition = new Vector3(0, 4000, 5000);
-            showHero.Dispose();
             if (m_Effect != null)
             {
                 SFXPlayUtility.Instance.Release(m_Effect);
                 m_Effect = null;
             }
+
+            for (int i = closthesSFXList.Count - 1; i >= 0; i--)
+            {
+                if (closthesSFXList[i] != null)
+                {
+                    Destroy(closthesSFXList[i].gameObject);
+                }
+            }
+            closthesSFXList.Clear();
+
+            if (clothesModel != null)
+            {
+                Destroy(clothesModel);
+                clothesModel = null;
+                clothesAnimator = null;
+            }
+        }
+
+        GameObject ShowHero(int _job, int _clothes, int suitID, int _weaponId, int _wingsId, int _secondaryId)
+        {
+            PutOnClothes(_job, _clothes, suitID);
+            return clothesModel;
+        }
+
+        public void SitDown()
+        {
+            if (clothesModel != null)
+            {
+                var animator = clothesModel.GetComponent<Animator>();
+                animator.Play(GAStaticDefine.State_SitDown);
+            }
+        }
+
+        public void PutOnClothes(int _job, int itemID, int suitID)
+        {
+            var newClothes = 0;
+            var config = Config.Instance.Get<JobSetupConfig>(_job);
+
+            if (itemID == 0)
+            {
+                newClothes = config.BaseEquip[0];
+            }
+            else
+            {
+                var item = Config.Instance.Get<ItemConfig>(itemID);
+                newClothes = item == null ? newClothes = config.BaseEquip[0] : item.ChangeOrd;
+            }
+
+            var _prefab = InstanceResourcesLoader.LoadModelRes(newClothes);
+            if (!_prefab)
+            {
+                newClothes = config.BaseEquip[0];
+            }
+
+            LoadClothes(newClothes);
+
+            LoadClothesEffect(_job, itemID, suitID);
+        }
+
+        private void LoadClothes(int resID)
+        {
+            var prefab = InstanceResourcesLoader.LoadModelRes(resID);
+            if (clothesModel == null)
+            {
+                clothesModel = Instantiate(prefab, Constants.Special_Hide_Position, Quaternion.identity);
+            }
+
+            clothesModel.transform.SetParent(null);
+            clothesModel.transform.localScale = Vector3.one;
+
+            LayerUtility.SetLayer(clothesModel, LayerUtility.Player, false);
+            var skinnedMeshRenderer = clothesModel.GetComponentInChildren<SkinnedMeshRenderer>(true);
+            LayerUtility.SetLayer(skinnedMeshRenderer.gameObject, LayerUtility.Player, false);
+            clothesModel.SetActive(true);
+            clothesModel.transform.SetParentEx(showPoint, Vector3.zero, Quaternion.identity, Vector3.one);
+            clothesAnimator = clothesModel.GetComponent<Animator>();
+
+            if (clothesAnimator == null)
+            {
+                DebugEx.LogErrorFormat("瑙掕壊璧勬簮: {0} 娌℃湁鍔ㄧ敾鎺у埗鍣�", resID);
+            }
+
+            // 鍔ㄧ敾鐘舵�佹満淇敼
+            if (clothesAnimator)
+            {
+                RuntimeAnimatorController _controller = AnimatorControllerLoader.Load(AnimatorControllerLoader.controllerUISuffix, resID);
+                clothesAnimator.runtimeAnimatorController = _controller;
+                clothesAnimator.enabled = true;
+            }
+        }
+
+        public void LoadClothesEffect(int job,int clothedID, int suitLevel)
+        {
+            var _equipModel = ModelCenter.Instance.GetModel<PlayerPackModel>().GetSinglePackModel(PackType.rptEquip);
+            if (_equipModel == null)
+            {
+                if (DTC0309_tagPlayerLoginInfo.equipSuitID > 0)
+                {
+                    PutOnEffect(DTC0309_tagPlayerLoginInfo.equipSuitID);
+                }
+                return;
+            }
+
+            int _suitCount = 0;
+
+            int _start = (int)RoleEquipType.retHat;
+            int _end = (int)RoleEquipType.retShoes;
+
+            ItemModel _itemModel = null;
+
+            _itemModel = _equipModel.GetItemModelByIndex((int)RoleEquipType.retClothes);
+
+            if (_itemModel == null)
+            {
+                return;
+            }
+
+            int _rank = _itemModel.chinItemModel.LV;
+
+            for (int i = _start; i <= _end; ++i)
+            {
+                _itemModel = _equipModel.GetItemModelByIndex(i);
+
+                if (_itemModel == null)
+                {
+                    continue;
+                }
+
+                if (_itemModel.chinItemModel.SuiteiD <= 0)
+                {
+                    continue;
+                }
+
+                if (i == (int)RoleEquipType.retClothes)
+                {
+                    _rank = _itemModel.chinItemModel.LV;
+                }
+
+                var suitModel = ModelCenter.Instance.GetModel<PlayerSuitModel>();
+                if (suitModel.suitModelDict.ContainsKey(i))
+                {
+                    if (suitModel.suitModelDict[i].ContainsKey(1)
+                     || suitModel.suitModelDict[i].ContainsKey(2))
+                    {
+                        if (_itemModel.chinItemModel.LV >= _rank)
+                        {
+                            _suitCount += 1;
+                        }
+                    }
+                }
+            }
+
+            if (_suitCount == 5)
+            {
+                int _type = 1;
+
+                int _suitEffectID = _type * 1000 + job * 100 + _rank;
+
+                PutOnEffect(_suitEffectID);
+            }
+        }
+
+        public void PutOnEffect(int id)
+        {
+            SuitEffectConfig _suitEffect = Config.Instance.Get<SuitEffectConfig>(id);
+
+            // 涓婄壒鏁�
+            if (_suitEffect != null)
+            {
+                Transform _parent = null;
+                SFXController _sfx = null;
+                for (int i = 0; _suitEffect.bindbones != null && i < _suitEffect.bindbones.Length; ++i)
+                {
+                    if (string.IsNullOrEmpty(_suitEffect.bindbones[i])
+                        || _suitEffect.effectIds[i] == 0)
+                    {
+                        continue;
+                    }
+
+                    _parent = clothesModel.transform.GetChildTransformDeeply(_suitEffect.bindbones[i]);
+
+                    if (_parent == null)
+                    {
+                        Debug.LogErrorFormat("濂楄: {0} 閰嶇疆鐨勯楠艰妭鐐�: {1} 涓嶅瓨鍦�", id, _suitEffect.bindbones[i]);
+                        continue;
+                    }
+
+                    _sfx = SFXPlayUtility.Instance.PlayBattleEffect(_suitEffect.effectIds[i], _parent);
+                    closthesSFXList.Add(_sfx);
+                }
+            }
         }
     }
 }
diff --git a/System/Store/StoreModel.cs b/System/Store/StoreModel.cs
index db7725d..25a4299 100644
--- a/System/Store/StoreModel.cs
+++ b/System/Store/StoreModel.cs
@@ -69,6 +69,8 @@
     {
         PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= RefreshFamilyLv;
         PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += RefreshFamilyLv;
+        PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= RefreshServerHour;
+        PlayerDatas.Instance.fairyData.OnRefreshFairyMine += RefreshServerHour;
         FuncOpen.Instance.OnFuncStateChangeEvent -= FuncStateChange;
         FuncOpen.Instance.OnFuncStateChangeEvent += FuncStateChange;
         RefreshTCBPlayerDataEvent -= RefreshPlayerLv;
diff --git a/System/Treasure/FairyTreasureCollectPanelPattern5.cs b/System/Treasure/FairyTreasureCollectPanelPattern5.cs
index 6da991c..9a5de96 100644
--- a/System/Treasure/FairyTreasureCollectPanelPattern5.cs
+++ b/System/Treasure/FairyTreasureCollectPanelPattern5.cs
@@ -13,6 +13,7 @@
         [SerializeField] ScrollRect m_AchievementScroller;
         [SerializeField] FurnacesAchievement[] m_FurnacesAchievements;
         [SerializeField] Button m_AchievementGetBtn;
+        [SerializeField] Button m_ActiveBtn;
         [SerializeField] RectTransform m_ContainerHoles;
         [SerializeField] Image[] m_FurnacesIcons;
         [SerializeField] RectTransform m_ContainerFunc;
@@ -56,10 +57,12 @@
         {
             m_AchievementGetBtn.onClick.AddListener(OnAchievementGet);
             m_GotoStove.onClick.AddListener(GotoStove);
+            m_ActiveBtn.onClick.AddListener(Active);
         }
 
         public override void Display(int _treasureId, bool _tween = false)
         {
+            base.Display(_treasureId);
             m_GotoGet.onClick.RemoveAllListeners();
             m_GotoGet.onClick.AddListener(GotoGet);
 
@@ -77,7 +80,11 @@
             DisplayFurnacesHole();
             DisplayFurnace();
             DisplayFunc();
+
+            achievementModel.achievementCompletedEvent -= AchievementCompletedEvent;
             achievementModel.achievementCompletedEvent += AchievementCompletedEvent;
+            model.treasureStageUpEvent -= TreasureStageUpEvent;
+            model.treasureStageUpEvent += TreasureStageUpEvent;
 
             completedAchivement = 0;
 
@@ -112,9 +119,18 @@
         {
             m_GotoGet.onClick.RemoveAllListeners();
             achievementModel.achievementCompletedEvent -= AchievementCompletedEvent;
+            model.treasureStageUpEvent -= TreasureStageUpEvent;
             for (int i = 0; i < m_FurnacesAchievements.Length; i++)
             {
                 m_FurnacesAchievements[i].Dispose();
+            }
+        }
+
+        private void TreasureStageUpEvent(int _id)
+        {
+            if (_id == treasureId && model.serverInited)
+            {
+                TreasureActiveEffect();
             }
         }
 
@@ -190,10 +206,10 @@
                                 {
                                     _effect.OnComplete = null;
                                     m_FurnacesIcons[_index].gameObject.SetActive(true);
-                                    if (_index == m_FurnacesIcons.Length - 1)
-                                    {
-                                        TreasureActiveEffect();
-                                    }
+                                    //if (_index == m_FurnacesIcons.Length - 1)
+                                    //{
+                                    //    TreasureActiveEffect();
+                                    //}
                                 };
                             }
                             continue;
@@ -281,6 +297,7 @@
                 var unlockTreasureConfig = Config.Instance.Get<TreasureConfig>(unlocktreasureId);
 
                 m_AchievementGetBtn.gameObject.SetActive(false);
+                m_ActiveBtn.gameObject.SetActive(false);
                 m_GotoGet.gameObject.SetActive(false);
                 m_ContainerLocked.gameObject.SetActive(true);
                 m_LockedDescription.text = Language.Get("BlastFurnaceGet", unlockTreasureConfig == null ? string.Empty : unlockTreasureConfig.Name);
@@ -291,10 +308,12 @@
                 m_AchievementGetBtn.gameObject.SetActive(false);
                 m_GotoGet.gameObject.SetActive(false);
                 m_ContainerLocked.gameObject.SetActive(false);
+                m_ActiveBtn.gameObject.SetActive(currentAchievement == null && treasure.stage == 0);
             }
             else
             {
                 m_ContainerLocked.gameObject.SetActive(false);
+                m_ActiveBtn.gameObject.SetActive(false);
                 var _isReach = Achievement.IsReach(currentAchievement.id, currentAchievement.progress);
                 m_AchievementGetBtn.gameObject.SetActive(_isReach);
                 var _list = model.GetFurnacesAchievements();
@@ -413,6 +432,13 @@
             WindowCenter.Instance.Open<BlastFurnaceWin>();
         }
 
+        private void Active()
+        {
+            CA515_tagCMMagicWeaponUp _pak = new CA515_tagCMMagicWeaponUp();
+            _pak.MWID = (uint)treasureId;
+            GameNetSystem.Instance.SendInfo(_pak);
+        }
+
 
         private void GetCurrentAchievement()
         {
diff --git a/UI/Common/UI3DShowHero.cs b/UI/Common/UI3DShowHero.cs
index a420572..35a3367 100644
--- a/UI/Common/UI3DShowHero.cs
+++ b/UI/Common/UI3DShowHero.cs
@@ -50,7 +50,6 @@
             {
                 prefab = InstanceResourcesLoader.LoadModelRes(weaponId);
                 pool = GameObjectPoolManager.Instance.RequestPool(prefab);
-                ResetModelLayer(weaponModel);
                 pool.Release(weaponModel);
                 weaponModel = null;
             }
@@ -59,7 +58,6 @@
             {
                 prefab = InstanceResourcesLoader.LoadModelRes(secondaryId);
                 pool = GameObjectPoolManager.Instance.RequestPool(prefab);
-                ResetModelLayer(secondaryModel);
                 pool.Release(secondaryModel);
                 secondaryModel.SetActive(true);
                 secondaryModel = null;
@@ -69,7 +67,6 @@
             {
                 prefab = InstanceResourcesLoader.LoadModelRes(wingsId);
                 pool = GameObjectPoolManager.Instance.RequestPool(prefab);
-                ResetModelLayer(wingsModel);
                 pool.Release(wingsModel);
                 wingsModel = null;
                 wingsAnimator = null;
@@ -79,7 +76,6 @@
             {
                 prefab = InstanceResourcesLoader.LoadModelRes(clothesId);
                 pool = GameObjectPoolManager.Instance.RequestPool(prefab);
-                ResetModelLayer(clothesModel);
                 pool.Release(clothesModel);
                 clothesModel = null;
                 if (clothesAnimator)
@@ -120,7 +116,6 @@
 
             if (weaponModel)
             {
-                ResetModelLayer(weaponModel);
                 GameObject prefab = InstanceResourcesLoader.LoadModelRes(weaponId);
                 GameObjectPoolManager.Instance.ReleaseGameObject(prefab, weaponModel);
                 weaponModel = null;
@@ -225,7 +220,6 @@
 
             var prefab = InstanceResourcesLoader.LoadModelRes(clothesId);
             var pool = GameObjectPoolManager.Instance.RequestPool(prefab);
-            ResetModelLayer(clothesModel);
             pool.Release(clothesModel);
             clothesModel = null;
             if (clothesAnimator != null)
@@ -268,7 +262,6 @@
             {
                 prefab = InstanceResourcesLoader.LoadModelRes(oldWeapon);
                 pool = GameObjectPoolManager.Instance.RequestPool(prefab);
-                ResetModelLayer(weaponModel);
                 pool.Release(weaponModel);
                 weaponModel = null;
             }
@@ -318,7 +311,6 @@
             {
                 prefab = InstanceResourcesLoader.LoadModelRes(oldSecondary);
                 pool = GameObjectPoolManager.Instance.RequestPool(prefab);
-                ResetModelLayer(secondaryModel);
                 pool.Release(secondaryModel);
                 secondaryModel = null;
             }
@@ -333,13 +325,6 @@
                 }
                 pool = GameObjectPoolManager.Instance.RequestPool(prefab);
                 secondaryModel = pool.Request();
-
-                secondaryModel.layer = LayerUtility.Player;
-                SkinnedMeshRenderer _renderer = secondaryModel.GetComponentInChildren<SkinnedMeshRenderer>();
-                if (_renderer)
-                {
-                    _renderer.gameObject.layer = LayerUtility.Player;
-                }
 
                 var parent = clothesModel.transform.GetChildTransformDeeply(GAStaticDefine.SecondaryBindBoneName[job - 1]);
                 secondaryModel.transform.SetParentEx(parent, Vector3.zero, Quaternion.identity, Vector3.one);
@@ -372,7 +357,6 @@
             {
                 prefab = InstanceResourcesLoader.LoadModelRes(oldWings);
                 pool = GameObjectPoolManager.Instance.RequestPool(prefab);
-                ResetModelLayer(wingsModel);
                 pool.Release(wingsModel);
                 wingsModel = null;
             }
@@ -538,14 +522,6 @@
                 SFXPlayUtility.Instance.Release(closthesSFXList[i]);
             }
             closthesSFXList.Clear();
-        }
-
-        void ResetModelLayer(GameObject _go)
-        {
-            if (_go != null)
-            {
-                LayerUtility.SetLayer(_go, LayerUtility.Player, true);
-            }
         }
     }
 

--
Gitblit v1.8.0