少年修仙传客户端代码仓库
client_Zxw
2018-09-28 e6df0b9f8a1f282e4509605f71bf9a5bbd4d015e
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
10个文件已修改
645 ■■■■■ 已修改文件
Core/NetworkPackage/DTCFile/ServerPack/H03_MainCharacter/DTC0319_tagFBHelp.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_Hero.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Activity/ActivitySettleWin.cs 288 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Compose/New/ComposeWin.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Message/BattleHint.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Message/BattleHintWin.cs 89 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Message/SysNotifyMgr.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureComponent.cs 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureModel.cs 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowJump/WindowJumpMgr.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/H03_MainCharacter/DTC0319_tagFBHelp.cs
@@ -30,6 +30,9 @@
                break;
            case 31230:
                break;
            case 31160:
                BattleHint.Instance.UpdateDungeonHelp();
                break;
        }
    }
Fight/GameActor/GA_Hero.cs
@@ -196,10 +196,34 @@
    public float forceAutoFightTime;
    private float m_ChkOpenAutoEscapeTime;
    private DungeonModel m_DungeonModel;
    public DungeonModel dungeonModel { get { return m_DungeonModel ?? (m_DungeonModel = ModelCenter.Instance.GetModel<DungeonModel>()); } }
    protected sealed override void OnUpdate()
    {
        base.OnUpdate();
        if (!forceAutoFight)
        {
            if (Time.realtimeSinceStartup - m_ChkOpenAutoEscapeTime > 2f)
            {
                int _dgDataID = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
                var dungeonOpen = Config.Instance.Get<DungeonOpenTimeConfig>(_dgDataID);
                if (dungeonOpen != null)
                {
                    if (dungeonOpen.DoFight == 1)
                    {
                        forceAutoFight = true;
                    }
                }
                m_ChkOpenAutoEscapeTime = Time.realtimeSinceStartup;
            }
        }
        if (forceAutoFight
#if UNITY_EDITOR
            && RuntimeLogUtility.s_forceAutoFight
System/Activity/ActivitySettleWin.cs
@@ -1,139 +1,149 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, November 22, 2017
//--------------------------------------------------------
using Snxxz.UI;
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class ActivitySettleWin : Window
    {
        [SerializeField] List<ItemCell> activityItemCells=new List<ItemCell>();
        [SerializeField] RectTransform container_ActivityReward;
        [SerializeField] GameObject activityNullReawrd;
        [SerializeField] List<ItemCell> achieveItemCells=new List<ItemCell>();
        [SerializeField] RectTransform container_AchieveReward;
        [SerializeField] GameObject achieveNullReawrd;
        [SerializeField] Button rewardGetBtn;
        DungeonModel m_DungeonModel;
        DungeonModel dungeonModel {
            get {
                return m_DungeonModel ?? (m_DungeonModel = ModelCenter.Instance.GetModel<DungeonModel>());
            }
        }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
        {
            get
            {
                return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
            }
        }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            rewardGetBtn.onClick.AddListener(CloseClick);
        }
        protected override void OnPreOpen()
        {
            ShowActivityReward();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            dungeonModel.dungeonResult = default(DungeonResult);
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        void ShowActivityReward()
        {
            foreach (var item in achieveItemCells) {
                item.gameObject.SetActive(false);
            }
            foreach (var item in activityItemCells) {
                item.gameObject.SetActive(false);
            }
            var actiivityItems = dungeonModel.dungeonResult.itemInfo;
            bool hasReward = actiivityItems != null && actiivityItems.Length > 0;
            container_ActivityReward.gameObject.SetActive(hasReward);
            activityNullReawrd.SetActive(!hasReward);
            if (hasReward) {
                for (int i = 0; i < actiivityItems.Length; i++) {
                    activityItemCells[i].gameObject.SetActive(true);
                    ItemCell itemCell = activityItemCells[i];
                    ServerItem serverItem = actiivityItems[i];
                    ItemCellModel cellModel = new ItemCellModel(serverItem.ItemID,false,(ulong)serverItem.Count,serverItem.IsBind
                        ,"",PackType.rptDeleted,false,ConfigParse.Analysis(serverItem.UserData));
                    itemCell.Init(cellModel);
                    itemCell.cellBtn.RemoveAllListeners();
                    itemCell.cellBtn.AddListener(() => {
                        ShowItemDetails(serverItem);
                    });
                }
            }
            var achieveItems = dungeonModel.dungeonResult.succItemInfo;
            hasReward = achieveItems != null && achieveItems.Length > 0;
            container_AchieveReward.gameObject.SetActive(hasReward);
            achieveNullReawrd.SetActive(!hasReward);
            if (hasReward) {
                for (int i = 0; i < achieveItems.Length; i++) {
                    achieveItemCells[i].gameObject.SetActive(true);
                    ItemCell itemCell = achieveItemCells[i];
                    ServerItem serverItem = achieveItems[i];
                    ItemCellModel cellModel = new ItemCellModel(serverItem.ItemID,false,(ulong)serverItem.Count, serverItem.IsBind
                        ,"" ,PackType.rptDeleted,false,ConfigParse.Analysis(serverItem.UserData));
                    itemCell.Init(cellModel);
                    itemCell.cellBtn.RemoveAllListeners();
                    itemCell.cellBtn.AddListener(() => {
                        ShowItemDetails(serverItem);
                    });
                }
            }
        }
        private void ShowItemDetails(ServerItem serverItem)
        {
            //ItemWinModel itemWinModel = ItemCommonCtrl.Instance.OnSingleClickItemCell(serverItem.ItemID);
            //itemWinModel.itemCount = serverItem.ItemCount;
            //itemWinModel.isSuite = serverItem.IsSuite;
            //itemWinModel.isBind = serverItem.IsBind;
            //itemWinModel.userDataDict = serverItem.UserData == null ? null : ConfigParse.Analysis(serverItem.UserData);
            //ItemPopModel.Instance.SetDefaultShowUIDict(itemWinModel, false);
            //itemWinModel.SetShowWin(itemWinModel);
            ItemAttrData attrData = new ItemAttrData(serverItem.ItemID,false, (ulong)serverItem.Count,-1,serverItem.IsBind
                ,false,PackType.rptDeleted,"", ConfigParse.Analysis(serverItem.UserData));
            itemTipsModel.SetItemTipsModel(attrData);
        }
    }
}
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, November 22, 2017
//--------------------------------------------------------
using Snxxz.UI;
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class ActivitySettleWin : Window
    {
        [SerializeField] List<ItemCell> activityItemCells = new List<ItemCell>();
        [SerializeField] RectTransform container_ActivityReward;
        [SerializeField] GameObject activityNullReawrd;
        [SerializeField] List<ItemCell> achieveItemCells = new List<ItemCell>();
        [SerializeField] RectTransform container_AchieveReward;
        [SerializeField] GameObject achieveNullReawrd;
        [SerializeField] Button rewardGetBtn;
        DungeonModel m_DungeonModel;
        DungeonModel dungeonModel
        {
            get
            {
                return m_DungeonModel ?? (m_DungeonModel = ModelCenter.Instance.GetModel<DungeonModel>());
            }
        }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
        {
            get
            {
                return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
            }
        }
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            rewardGetBtn.onClick.AddListener(CloseClick);
        }
        protected override void OnPreOpen()
        {
            ShowActivityReward();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            dungeonModel.dungeonResult = default(DungeonResult);
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        void ShowActivityReward()
        {
            foreach (var item in achieveItemCells)
            {
                item.gameObject.SetActive(false);
            }
            foreach (var item in activityItemCells)
            {
                item.gameObject.SetActive(false);
            }
            var actiivityItems = dungeonModel.dungeonResult.itemInfo;
            bool hasReward = actiivityItems != null && actiivityItems.Length > 0;
            container_ActivityReward.gameObject.SetActive(hasReward);
            activityNullReawrd.SetActive(!hasReward);
            if (hasReward)
            {
                for (int i = 0; i < actiivityItems.Length; i++)
                {
                    if (i < activityItemCells.Count)
                    {
                        activityItemCells[i].gameObject.SetActive(true);
                        ItemCell itemCell = activityItemCells[i];
                        ServerItem serverItem = actiivityItems[i];
                        ItemCellModel cellModel = new ItemCellModel(serverItem.ItemID, false, (ulong)serverItem.Count, serverItem.IsBind
                            , "", PackType.rptDeleted, false, ConfigParse.Analysis(serverItem.UserData));
                        itemCell.Init(cellModel);
                        itemCell.cellBtn.RemoveAllListeners();
                        itemCell.cellBtn.AddListener(() =>
                        {
                            ShowItemDetails(serverItem);
                        });
                    }
                }
            }
            var achieveItems = dungeonModel.dungeonResult.succItemInfo;
            hasReward = achieveItems != null && achieveItems.Length > 0;
            container_AchieveReward.gameObject.SetActive(hasReward);
            achieveNullReawrd.SetActive(!hasReward);
            if (hasReward)
            {
                for (int i = 0; i < achieveItems.Length; i++)
                {
                    if (i < achieveItemCells.Count)
                    {
                        achieveItemCells[i].gameObject.SetActive(true);
                        ItemCell itemCell = achieveItemCells[i];
                        ServerItem serverItem = achieveItems[i];
                        ItemCellModel cellModel = new ItemCellModel(serverItem.ItemID, false, (ulong)serverItem.Count, serverItem.IsBind
                            , "", PackType.rptDeleted, false, ConfigParse.Analysis(serverItem.UserData));
                        itemCell.Init(cellModel);
                        itemCell.cellBtn.RemoveAllListeners();
                        itemCell.cellBtn.AddListener(() =>
                        {
                            ShowItemDetails(serverItem);
                        });
                    }
                }
            }
        }
        private void ShowItemDetails(ServerItem serverItem)
        {
            ItemAttrData attrData = new ItemAttrData(serverItem.ItemID, false, (ulong)serverItem.Count, -1, serverItem.IsBind
                , false, PackType.rptDeleted, "", ConfigParse.Analysis(serverItem.UserData));
            itemTipsModel.SetItemTipsModel(attrData);
        }
    }
}
System/Compose/New/ComposeWin.cs
@@ -48,7 +48,7 @@
        #region Built-in
        protected override void BindController()
        {
            WindowCenter.Instance.jumpWindowCloseEvent += CloseJumpWindow;
        }
        protected override void AddListeners()
@@ -67,9 +67,10 @@
        protected override void OnPreOpen()
        {
            ComposeModel.ResetModel();
            if(WindowJumpMgr.Instance.IsJumpState)
            if (WindowJumpMgr.Instance.IsJumpState && ComposeModel.secondType == 0)
            {
                if(ComposeModel.CurComposeModel != null)
                if (ComposeModel.CurComposeModel != null)
                {
                    ComposeModel.SetJumpToModel((ComposeFuncType)ComposeModel.CurComposeModel.firstType,
                        ComposeModel.CurComposeModel.secondType, ComposeModel.CurComposeModel.thirdType);
@@ -161,19 +162,8 @@
        {
            if (!WindowJumpMgr.Instance.IsJumpState)
            {
                ComposeModel.SetCurComposeModel(null);
                WindowCenter.Instance.Open<MainInterfaceWin>();
            }
        }
        private void CloseJumpWindow(Window win)
        {
            if(win as ComposeWin)
            {
                if (WindowJumpMgr.Instance.jumpPhase <= 1)
                {
                    ComposeModel.SetCurComposeModel(null);
                }
            }
        }
System/Message/BattleHint.cs
@@ -6,31 +6,78 @@
{
    public class BattleHint : Singleton<BattleHint>
    {
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
        public BattleHint()
        {
            StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
            SysNotifyMgr.Instance.OnSystemNotifyEvent += OnSystemNotifyEvent;
        }
        private void OnStageLoadFinish()
        public void OnStageLoadFinish()
        {
            Clear();
            var mapId = PlayerDatas.Instance.baseData.MapID;
            if (cacheMapId != 0 && cacheMapId != 31160
                && mapId == 31160)
            {
                SnxxzGame.Instance.StartCoroutine(Co_LoadFinish());
            }
            var help = dungeonModel.mission;
            ancientKing = mapId != 31160 ? 0 : help.topPlayerID;
            cacheMapId = PlayerDatas.Instance.baseData.MapID;
        }
        public event Action battleHintUpdate;
        public event Action evenKillUpdate;
        Queue<string> battleHints = new Queue<string>();
        Queue<int> battleHints = new Queue<int>();
        Queue<string> evenKills = new Queue<string>();
        public void Receive(string msg)
        int ancientKing = 0;
        int cacheMapId = 0;
        IEnumerator Co_LoadFinish()
        {
            if (!(StageManager.Instance.CurrentStage is DungeonStage))
            yield return WaitingForSecondConst.WaitMS300;
            var mapId = PlayerDatas.Instance.baseData.MapID;
            if (mapId == 31160)
            {
                Receive(3);
            }
        }
        public void UpdateDungeonHelp()
        {
            var help = dungeonModel.mission;
            if (DTC0403_tagPlayerLoginLoadOK.finishedLogin)
            {
                if (PlayerDatas.Instance.baseData.MapID == 31160
                    && help.topPlayerID == PlayerDatas.Instance.baseData.PlayerID
                    && ancientKing != help.topPlayerID)
                {
                    ancientKing = help.topPlayerID;
                    Receive(1);
                }
            }
            ancientKing = help.topPlayerID;
        }
        private void OnSystemNotifyEvent(string msg)
        {
            if (!(StageManager.Instance.CurrentStage is DungeonStage)
                || StageManager.Instance.isLoading)
            {
                return;
            }
            battleHints.Enqueue(msg);
            if (StageManager.Instance.isLoading)
            if (msg.Equals("AncientBattlefield_8"))
            {
                return;
                Receive(2);
            }
        }
        public void Receive(int ancientType)
        {
            battleHints.Enqueue(ancientType);
            if (!WindowCenter.Instance.IsOpen<BattleHintWin>())
            {
                WindowCenter.Instance.Open<BattleHintWin>();
@@ -44,12 +91,55 @@
            }
        }
        public bool TryGetBattleHint(out string msg)
        public void ReceiveEvenKill(string message, ArrayList list)
        {
            msg = string.Empty;
            if (PlayerDatas.Instance.baseData.MapID != 31160
                || !(StageManager.Instance.CurrentStage is DungeonStage)
                || StageManager.Instance.isLoading)
            {
                return;
            }
            var evenKillCount = 0;
            if (list != null && list.Count > 0)
            {
                int.TryParse(list[0].ToString(), out evenKillCount);
            }
            if (evenKillCount == 0)
            {
                return;
            }
            message = message.Replace("%s0", evenKillCount.ToString());
            evenKills.Enqueue(message);
            if (!WindowCenter.Instance.IsOpen<BattleHintWin>())
            {
                WindowCenter.Instance.Open<BattleHintWin>();
            }
            else
            {
                if (evenKillUpdate != null)
                {
                    evenKillUpdate();
                }
            }
        }
        public bool TryGetBattleHint(out int ancientType)
        {
            ancientType = 0;
            if (battleHints.Count > 0)
            {
                msg = battleHints.Dequeue();
                ancientType = battleHints.Dequeue();
                return true;
            }
            return false;
        }
        public bool TryGetEvenKill(out string message)
        {
            message = string.Empty;
            if (evenKills.Count > 0)
            {
                message = evenKills.Dequeue();
                return true;
            }
            return false;
@@ -58,6 +148,7 @@
        public void Clear()
        {
            battleHints.Clear();
            evenKills.Clear();
        }
    }
}
System/Message/BattleHintWin.cs
@@ -6,6 +6,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
@@ -14,11 +15,21 @@
    public class BattleHintWin : Window
    {
        [SerializeField] Image m_BattleHint;
        [SerializeField] RectTransform m_ContainerBattleHint;
        [SerializeField] RectTransform m_ContainerKing;
        [SerializeField] RectTransform m_ContainerEnemy;
        [SerializeField] RectTransform m_ContainerAncientRemind;
        [SerializeField] ScaleTween m_BattleHintTween;
        [SerializeField, Header("保留时间")] float m_KeepTime = 2f;
        bool inBattleHint = false;
        [SerializeField] RectTransform m_ContainerEvenKill;
        [SerializeField] ScaleTween m_EvenKillTween;
        [SerializeField] Text m_EvenKill;
        [SerializeField, Header("保留时间")] float m_EvenKillTime = 2f;
        bool isBattleHint = false;
        bool isEvenKill = false;
        #region Built-in
        protected override void BindController()
        {
@@ -30,15 +41,19 @@
        protected override void OnPreOpen()
        {
            inBattleHint = false;
            m_BattleHintTween.gameObject.SetActive(false);
            m_ContainerBattleHint.gameObject.SetActive(false);
            m_ContainerEvenKill.gameObject.SetActive(false);
            isBattleHint = false;
            isEvenKill = false;
        }
        protected override void OnActived()
        {
            base.OnActived();
            DisplayBattleHint();
            DisplayEvenKill();
            BattleHint.Instance.battleHintUpdate += BattleHintUpdate;
            BattleHint.Instance.evenKillUpdate += EvenKillUpdate;
        }
        protected override void OnAfterOpen()
@@ -48,6 +63,7 @@
        protected override void OnPreClose()
        {
            BattleHint.Instance.battleHintUpdate -= BattleHintUpdate;
            BattleHint.Instance.evenKillUpdate -= EvenKillUpdate;
        }
        protected override void OnAfterClose()
@@ -57,7 +73,7 @@
        private void BattleHintUpdate()
        {
            if (!inBattleHint)
            if (!isBattleHint)
            {
                DisplayBattleHint();
            }
@@ -65,13 +81,26 @@
        void DisplayBattleHint()
        {
            string iconKey = string.Empty;
            if (BattleHint.Instance.TryGetBattleHint(out iconKey))
            var ancientType = 0;
            if (BattleHint.Instance.TryGetBattleHint(out ancientType))
            {
                inBattleHint = true;
                m_BattleHint.SetSprite(iconKey);
                m_BattleHint.SetNativeSize();
                m_BattleHintTween.gameObject.SetActive(true);
                isBattleHint = true;
                m_ContainerKing.gameObject.SetActive(false);
                m_ContainerEnemy.gameObject.SetActive(false);
                m_ContainerAncientRemind.gameObject.SetActive(false);
                switch (ancientType)
                {
                    case 1:
                        m_ContainerKing.gameObject.SetActive(true);
                        break;
                    case 2:
                        m_ContainerEnemy.gameObject.SetActive(true);
                        break;
                    case 3:
                        m_ContainerAncientRemind.gameObject.SetActive(true);
                        break;
                }
                m_ContainerBattleHint.gameObject.SetActive(true);
                m_BattleHintTween.SetStartState();
                m_BattleHintTween.Play(OnBattleHintTweenComplete);
            }
@@ -82,13 +111,47 @@
            StartCoroutine(Co_Complete());
        }
        private void EvenKillUpdate()
        {
            if (!isEvenKill)
            {
                DisplayEvenKill();
            }
        }
        void DisplayEvenKill()
        {
            string evenKill = string.Empty;
            if (BattleHint.Instance.TryGetEvenKill(out evenKill))
            {
                isEvenKill = true;
                m_EvenKill.text= evenKill;
                m_ContainerEvenKill.gameObject.SetActive(true);
                m_EvenKillTween.SetStartState();
                m_EvenKillTween.Play(OnEvenKillComplete);
            }
        }
        private void OnEvenKillComplete()
        {
            StartCoroutine(Co_EvenKill());
        }
        IEnumerator Co_Complete()
        {
            yield return WaitingForSecondConst.GetWaitForSeconds(m_KeepTime);
            inBattleHint = false;
            m_BattleHintTween.gameObject.SetActive(false);
            isBattleHint = false;
            m_ContainerBattleHint.gameObject.SetActive(false);
            DisplayBattleHint();
        }
        IEnumerator Co_EvenKill()
        {
            yield return WaitingForSecondConst.GetWaitForSeconds(m_EvenKillTime);
            isEvenKill = false;
            m_ContainerEvenKill.gameObject.SetActive(false);
            DisplayEvenKill();
        }
    }
}
System/Message/SysNotifyMgr.cs
@@ -29,6 +29,13 @@
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent;
        StageManager.Instance.onStageLoadFinish += OnStageLoadFinish;
        StartCoroutine(Co_Instance());
    }
    IEnumerator Co_Instance()
    {
        yield return null;
        var instance = BattleHint.Instance;
    }
    protected override void OnDestroy()
@@ -41,6 +48,7 @@
    private void OnStageLoadFinish()
    {
        ServerTipDetails.OnStageLoadFinish();
        BattleHint.Instance.OnStageLoadFinish();
    }
    private void BeforePlayerDataInitializeEvent()
@@ -211,8 +219,8 @@
                        OnSysTipEvent(type[i], msg, tipInfoList);
                    }
                    break;
                case SysNotifyType.SysBattleHint:
                    BattleHint.Instance.Receive(msg);
                case SysNotifyType.SysEvenKill:
                    BattleHint.Instance.ReceiveEvenKill(msg, tipInfoList);
                    break;
            }
        }
@@ -235,7 +243,7 @@
        SysTeamTip = 41,//队伍频道提示
        SysRealmTip = 100,//境界提示
        SysFixedTip1 = 11,//固定提示2
        SysBattleHint = 6,//上古战场提示
        SysEvenKill = 7,//上古战场连杀提示
    }
    public int Compare(SystemHintData x, SystemHintData y)
System/Treasure/TreasureComponent.cs
@@ -715,20 +715,20 @@
        public void RequestHighestEffect()
        {
            RecycleHighestEffect();
            Treasure _treasure;
            if (category == TreasureCategory.Human &&
                model.TryGetTreasure(treasureId, out _treasure) && _treasure.IsHighestStage
                && !model.GetTreasureFinishAnim(treasureId))
            {
                highestSfx = SFXPlayUtility.Instance.Play(5198, root);
                if (highestSfx != null)
                {
                    highestSfx.duration = 0;
                    LayerUtility.SetLayer(highestSfx.gameObject, LayerUtility.UILayer, true);
                    highestSfx.transform.localPosition = Vector3.zero;
                    highestSfx.transform.LookAt(UI3DTreasureSelectStage.Instance.center);
                }
            }
            //Treasure _treasure;
            //if (category == TreasureCategory.Human &&
            //    model.TryGetTreasure(treasureId, out _treasure) && _treasure.IsHighestStage
            //    && !model.GetTreasureFinishAnim(treasureId))
            //{
            //    highestSfx = SFXPlayUtility.Instance.Play(5198, root);
            //    if (highestSfx != null)
            //    {
            //        highestSfx.duration = 0;
            //        LayerUtility.SetLayer(highestSfx.gameObject, LayerUtility.UILayer, true);
            //        highestSfx.transform.localPosition = Vector3.zero;
            //        highestSfx.transform.LookAt(UI3DTreasureSelectStage.Instance.center);
            //    }
            //}
        }
        public void RecycleHighestEffect()
System/Treasure/TreasureModel.cs
@@ -380,34 +380,34 @@
        public bool GetTreasureFinishAnim(int _treasureId)
        {
            if (_treasureId == 101)
            {
            //if (_treasureId == 101)
            //{
                return false;
            }
            var list = GetTreasureCategory(TreasureCategory.Human);
            var index = list.IndexOf(_treasureId);
            if (index == -1)
            {
                return false;
            }
            uint value = 0;
            uint.TryParse(QuickSetting.Instance.GetQuickSetting(QuickSetting.QuickSettingType.TreasureHighestAnim, 0), out value);
            return MathUtility.GetBitValue(value, (ushort)index);
            //}
            //var list = GetTreasureCategory(TreasureCategory.Human);
            //var index = list.IndexOf(_treasureId);
            //if (index == -1)
            //{
            //    return false;
            //}
            //uint value = 0;
            //uint.TryParse(QuickSetting.Instance.GetQuickSetting(QuickSetting.QuickSettingType.TreasureHighestAnim, 0), out value);
            //return MathUtility.GetBitValue(value, (ushort)index);
        }
        public void SetTreasureFinishAnim(int _treasureId, bool anim = true)
        {
            var list = GetTreasureCategory(TreasureCategory.Human);
            var index = list.IndexOf(_treasureId);
            if (index == -1)
            {
                return;
            }
            uint value = 0;
            uint.TryParse(QuickSetting.Instance.GetQuickSetting(QuickSetting.QuickSettingType.TreasureHighestAnim, 0), out value);
            int bitValue = MathUtility.SetBitValue((int)value, (ushort)index, anim);
            QuickSetting.Instance.SetQuickSetting(QuickSetting.QuickSettingType.TreasureHighestAnim, bitValue);
            QuickSetting.Instance.SendPackage();
            //var list = GetTreasureCategory(TreasureCategory.Human);
            //var index = list.IndexOf(_treasureId);
            //if (index == -1)
            //{
            //    return;
            //}
            //uint value = 0;
            //uint.TryParse(QuickSetting.Instance.GetQuickSetting(QuickSetting.QuickSettingType.TreasureHighestAnim, 0), out value);
            //int bitValue = MathUtility.SetBitValue((int)value, (ushort)index, anim);
            //QuickSetting.Instance.SetQuickSetting(QuickSetting.QuickSettingType.TreasureHighestAnim, bitValue);
            //QuickSetting.Instance.SendPackage();
        }
        public bool TryGetUnlockShowTreasure(out int _id)
System/WindowJump/WindowJumpMgr.cs
@@ -17,7 +17,7 @@
    private WindowSearchConfig _tagWinSearchModel;
    private FuncOpenLVConfig _tagOpenLvModel;
    private Dictionary<int, List<string>> openWindows = new Dictionary<int, List<string>>();
    private Dictionary<int, string> jumpWinNameDict = new Dictionary<int, string>();
    public Dictionary<int, string> jumpWinNameDict = new Dictionary<int, string>();
    PlayerPetDatas m_petModel;
    PlayerPetDatas petmodel
    {
@@ -882,7 +882,23 @@
    private void SetJumpLogic<T>(int _functionalOrder = 0, bool _forceSync = true) where T : Window
    {
        string curOpenWin = typeof(T).Name;
        jumpWinNameDict.Add(jumpPhase, curOpenWin);
        if(jumpWinNameDict.ContainsKey(jumpPhase - 1))
        {
            if(jumpWinNameDict[jumpPhase - 1] != curOpenWin)
            {
                jumpWinNameDict.Add(jumpPhase, curOpenWin);
            }
            else
            {
                openWindows[jumpPhase].Clear();
                jumpPhase -= 1;
            }
        }
        else
        {
            jumpWinNameDict.Add(jumpPhase, curOpenWin);
        }
        jumpType = _tagWinSearchModel.Type;
        switch (_tagWinSearchModel.Type)
        {