少年修仙传客户端代码仓库
client_linchunjie
2018-09-27 f3e2bd79d5bd4fac714478b97606280d08b3a661
Merge branch 'master' into 3687天赋功能
2个文件已添加
12个文件已修改
598 ■■■■■ 已修改文件
System/ClientVersion/VersionUtility.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzEquip.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Dogz/DogzPackWin.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/CommonItemBaisc.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/UpgradeWin.cs 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/MainInterfacePanel/UpgradeWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Skill/QuickSetting.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastAttributes.cs 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastChildNodes.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Strengthening/GodBeastModel.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureComponent.cs 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureModel.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureSelectWin.cs 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/UI3DTreasureSelectStage.cs 155 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ClientVersion/VersionUtility.cs
@@ -26,7 +26,7 @@
    }
    public VersionInfo versionInfo { get; private set; }
    public MaoErVersion maoerVersion;
    public JsonData maoerVersion;
    public bool completed { get { return step == Step.Completed; } }
    Step m_Step = Step.None;
@@ -146,7 +146,14 @@
    {
        if (IsMaoErGame())
        {
            return maoerVersion.url;
            if (maoerVersion.Keys.Contains("url"))
            {
                return maoerVersion["url"].ToString();
            }
            else
            {
                return string.Empty;
            }
        }
        else
        {
@@ -159,13 +166,13 @@
    {
        if (IsMaoErGame())
        {
            if (string.IsNullOrEmpty(maoerVersion.content))
            if (maoerVersion.Keys.Contains("content"))
            {
                return string.Empty;
                return StringUtility.Contact(Language.GetFromLocal(30), "\r\n", maoerVersion["content"].ToString());
            }
            else
            {
                return StringUtility.Contact(Language.GetFromLocal(30), "\r\n", maoerVersion.content);
                return string.Empty;
            }
        }
        else
@@ -236,24 +243,20 @@
            var tables = new Dictionary<string, string>();
            tables["uid"] = ModelCenter.Instance.GetModel<LoginModel>().sdkLoginResult.account;
            var url = "https://api.maoergame.com/update/download/url";
            Debug.LogFormat("猫耳强更url:{0}  uid:{1} ", url, ModelCenter.Instance.GetModel<LoginModel>().sdkLoginResult.account);
            HttpRequest.Instance.RequestHttpPost(url, tables, HttpRequest.defaultHttpContentType, 1, OnMaoErVersionCheckResult);
        }
    }
    private void OnMaoErVersionCheckResult(bool ok, string result)
    {
        UTF8Encoding utf8 = new UTF8Encoding();
        Byte[] encodedBytes = utf8.GetBytes(result);
        String decodedString = utf8.GetString(encodedBytes);
        Debug.LogFormat("猫耳强更请求返回结果 result:{0}:{1}", ok, result);
        Debug.LogFormat("猫耳强更请求返回结果 result:{0}", decodedString);
        if (ok)
        {
            try
            {
                maoerVersion = JsonMapper.ToObject<MaoErVersion>(result);
                if (maoerVersion.code == 0)
                maoerVersion = JsonMapper.ToObject(result);
                if (maoerVersion.Keys.Contains("code") && maoerVersion["code"].ToString() == "0")
                {
                    step = Step.DownLoadPrepared;
                    WindowCenter.Instance.OpenFromLocal<VersionUpdateWin>();
@@ -266,6 +269,7 @@
            }
            catch (System.Exception ex)
            {
                Debug.Log(ex);
                step = Step.None;
                Clock.Create(DateTime.Now + new TimeSpan(TimeSpan.TicksPerSecond), RequestMaoErVersionCheck);
            }
@@ -346,7 +350,7 @@
    public struct MaoErVersion
    {
        public string msg;
        public int code;
        public string code;
        public string content;
        public string url;
    }
System/Dogz/DogzEquip.cs
@@ -15,6 +15,7 @@
        public void Display(ItemModel model)
        {
            itemBaisc.Init(model);
            itemBaisc.bindIcon.gameObject.SetActive(false);
            int strenLv = 0;
            if(model.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus) != null)
            {
System/Dogz/DogzPackWin.cs
@@ -264,7 +264,26 @@
                dogzModel.GetDogzItemListByIndex(dogzModel.presentSelectDogz,i);
                if (dogzModel.selectEquipPlacelist.Count > 0)
                {
                    indexlist.Add(dogzModel.selectEquipPlacelist[0].itemInfo.ItemPlace);
                    ItemModel selectModel = dogzModel.selectEquipPlacelist[0];
                    ItemModel itemModel = null;
                    int equipPlace = dogzModel.GetDogzEquipPlaceByIndex(i);
                    dogzModel.TryGetDogzEquip(dogzModel.presentSelectDogz,equipPlace,out itemModel);
                    if(itemModel == null)
                    {
                        indexlist.Add(selectModel.itemInfo.ItemPlace);
                    }
                    else
                    {
                        if (itemModel.chinItemModel.ItemColor < selectModel.chinItemModel.ItemColor
                           || (itemModel.chinItemModel.StarLevel < selectModel.chinItemModel.StarLevel
                           && itemModel.chinItemModel.ItemColor == selectModel.chinItemModel.ItemColor)
                            || (itemModel.equipScore < selectModel.equipScore
                            && itemModel.chinItemModel.ItemColor == selectModel.chinItemModel.ItemColor
                            && itemModel.chinItemModel.StarLevel == selectModel.chinItemModel.StarLevel))
                        {
                            indexlist.Add(dogzModel.selectEquipPlacelist[0].itemInfo.ItemPlace);
                        }
                    }
                }
            }
            if(indexlist.Count > 0)
System/KnapSack/New/CommonItemBaisc.cs
@@ -218,7 +218,8 @@
        {
            ItemConfig config = Config.Instance.Get<ItemConfig>(itemId);
            int playerJob = PlayerDatas.Instance.baseData.Job;
            if (config == null || (!isCompare && compareSocre <= 0) || config.EquipPlace == 0 || score == compareSocre) return 0;
            if (config == null || (!isCompare && compareSocre <= 0) || config.EquipPlace == 0
                || score == compareSocre || type == PackType.rptEquip || type == PackType.rptDogzEquip) return 0;
            ItemModel model = playerPack.GetItemModelByGUID(guid);
            if (model != null && modelInterface.IsOverdue(guid, itemId, model.useDataDict)) return 1;
System/MainInterfacePanel/UpgradeWin.cs
New file
@@ -0,0 +1,87 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, September 26, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI {
    public class UpgradeWin : Window
    {
        [SerializeField] UIAlphaTween m_UIAlphaTween;
        [SerializeField] ScaleTween m_ScaleTween;
        [SerializeField] UIAlphaTween m_UIAlphaTween1;
        [SerializeField] GameObject m_Guang;
        [SerializeField] Text m_TextLV;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
          //  m_Guang.SetActive(false);
            m_TextLV.text = PlayerDatas.Instance.baseData.LV.ToString();
            m_UIAlphaTween1.SetEndState();
        }
        protected override void OnActived()
        {
            m_UIAlphaTween.Play(ShowOverAlpha);
            m_ScaleTween.Play();
        }
        protected override void OnAfterOpen()
        {
            WindowCenter.Instance.windowBeforeCloseEvent += windowBeforeClose;
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += Updatefighting;//数据的刷新(h0418)
        }
        protected override void OnPreClose()
        {
            WindowCenter.Instance.windowBeforeCloseEvent -= windowBeforeClose;
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= Updatefighting;//数据的刷新(h0418)
        }
        private void windowBeforeClose(Window _window)
        {
            if (_window is MainInterfaceWin)
            {
                Close();
            }
        }
        private void Updatefighting(PlayerDataRefresh obj)
        {
            if (obj == PlayerDataRefresh.LV)
            {
                m_TextLV.text = PlayerDatas.Instance.baseData.LV.ToString();
            }
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        private void ShowOverAlpha()
        {
            m_UIAlphaTween.Play(true);
            m_UIAlphaTween1.Play(true);
        }
    }
}
System/MainInterfacePanel/UpgradeWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 4bcd6e645b0e4dc4fb3359ce209aa612
timeCreated: 1537944869
licenseType: Free
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Skill/QuickSetting.cs
@@ -15,6 +15,7 @@
        quickSettingDic.Add(QuickSettingType.FairyLeagueGuide, new QuickSettingRange(QuickSettingType.FairyLeagueGuide, 1));
        quickSettingDic.Add(QuickSettingType.AutoUseXp, new QuickSettingRange(QuickSettingType.AutoUseXp, 1));
        quickSettingDic.Add(QuickSettingType.SpAnim, new QuickSettingRange(QuickSettingType.SpAnim, 10));
        quickSettingDic.Add(QuickSettingType.TreasureHighestAnim, new QuickSettingRange(QuickSettingType.TreasureHighestAnim, 10));
        setting = new string(UCharacter, 100);
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += BeforePlayerDataInitializeEvent;
    }
@@ -109,6 +110,7 @@
        FairyLeagueGuide,
        AutoUseXp,
        SpAnim,
        TreasureHighestAnim
    }
    public struct QuickSettingRange
    {
System/Strengthening/GodBeastAttributes.cs
@@ -76,7 +76,7 @@
        {
            GodBeast_Number = 0;
            GodBeast_Part = 0;
            GodBeastReinforcementWin.ChooseToModify -= ChooseToModify;
            godBeastModel.AbsorbEvent -= AbsorbEvent;
        }
@@ -96,7 +96,7 @@
            {
                AttributeAssignment();
            }
        }
        private void OnClickStrengthBtn()
        {
@@ -108,15 +108,42 @@
                ListIndex.Add(key);
                ListCount.Add(DicAb[key]);
            }
            if (m_DoubleToggle.isOn)
            if (m_DoubleToggle.isOn)//双倍强化
            {
                if (ListIndex.Count <= 0)
                {
                    return;
                }
                dogz_model.SendDogzEquipStrength(m_DogZItemModel.itemInfo.ItemPlace, ListIndex, ListCount, 1);
                if (NeedFairyJade <= 0)
                {
                    dogz_model.SendDogzEquipStrength(m_DogZItemModel.itemInfo.ItemPlace, ListIndex, ListCount, 0);
                }
                else
                {
                    int Gold = (int)UIHelper.GetMoneyCnt(1);//仙玉
                    string strNull = string.Format(Language.Get("DogzDoubleRemind"), NeedFairyJade);
                    ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), strNull, (bool isOk) =>
                     {
                         if (isOk)
                         {
                             if (Gold >= NeedFairyJade)
                             {
                                 dogz_model.SendDogzEquipStrength(m_DogZItemModel.itemInfo.ItemPlace, ListIndex, ListCount, 1);
                             }
                             else
                             {
                                 if (VersionConfig.Get().isBanShu)
                                 {
                                     SysNotifyMgr.Instance.ShowTip("GoldErr");
                                     return;
                                 }
                                 WindowCenter.Instance.Open<RechargeTipWin>();
                             }
                         }
                     });
                }
            }
            else
            else//单倍强化
            {
                if (ListIndex.Count <= 0)
                {
@@ -149,7 +176,7 @@
                    {
                        if (itemModel[i].EquipPlace == GodBeastPart)
                        {
                            ItemCellModel ItemModel = new ItemCellModel(itemModel[i].itemId, true, 0, itemModel[i].itemInfo.IsBind);
                            ItemCellModel ItemModel = new ItemCellModel(itemModel[i].itemId, true, 0, 0);//默认显示不上锁
                            m_ItemCell.Init(ItemModel);
                            m_ItemCell.cellBtn.RemoveAllListeners();
                            int type = i;
@@ -162,7 +189,7 @@
                }
                m_UIAlphaTween.gameObject.SetActive(true);
                m_FrameNull.SetActive(true);
                m_FullLevel.SetActive(false);
                m_FullLevel.SetActive(false);
                GetDogZLevelAndExp();
                AttributeAssignment();
            }
@@ -226,7 +253,7 @@
                }
                else
                {
                    m_StrengthenDoubleBtn.interactable = true;
                    m_StrengthenBtn.interactable = true;
                    m_Text_two.SetActive(true);
@@ -285,7 +312,7 @@
                        else
                        {
                            DoubleProficiency += itemModel.chinItemModel.EffectValueA1 * 2 * DicAb[key];
                            NeedFairyJade += itemModel.chinItemModel.Effect2 * DicAb[key];
                            NeedFairyJade += itemModel.chinItemModel.EffectValueB1 * DicAb[key];
                        }
                    }
                }
@@ -382,7 +409,7 @@
            var IudetDogzEquipPlus = m_DogZItemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);
            if (IudetDogzEquipPlus != null)
            {
                ToExpTotal+= IudetDogzEquipPlus[1];
                ToExpTotal += IudetDogzEquipPlus[1];
            }
            for (int i = lv; i >= 0; i--)
            {
System/Strengthening/GodBeastChildNodes.cs
@@ -46,6 +46,7 @@
        {
            ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptDogzItem, Index);
            m_ItemCell.Init(itemModel);
            m_ItemCell.bindIcon.gameObject.SetActive(false);
            var IudetDogzEquipPlus = itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);// 神兽装备强化信息列表 [强化等级, 强化熟练度]
            TextNumber.gameObject.SetActive(false);
            if (IudetDogzEquipPlus != null)
System/Strengthening/GodBeastModel.cs
@@ -18,11 +18,13 @@
    public int ItemInde = 0;//物品下标
    public ItemModel Crystal_ItemModel;//当前所选中的水晶物品
    public int ItemPlace = -1;//神兽装备位置信息
    public  Dictionary<int, int> QualityLimit = new Dictionary<int, int>();//对应品质所能选择的最大强化等级
    public Dictionary<int, int> QualityLimit = new Dictionary<int, int>();//对应品质所能选择的最大强化等级
    DogzModel Dogz_model;
    DogzModel dogz_model { get { return Dogz_model ?? (Dogz_model = ModelCenter.Instance.GetModel<DogzModel>()); } }
    PlayerPackModel _playerPack;
    PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }
    private const int Redpoint_key1 = 11202;//神兽强化红点
    public Redpoint redPointStre1 = new Redpoint(112, Redpoint_key1);
    public override void Init()
    {
        if (QualityLimit.Count <= 0)
@@ -39,7 +41,44 @@
    public void OnPlayerLoginOk()
    {
        playerPack.ItemCntAddAct -= ItemCntAddAct;
        playerPack.ItemCntReduceAct -= ItemCntReduceAct;
        dogz_model.UpdateAssistDogzEvent -= UpdateAssistDogzEvent;
        FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
        playerPack.ItemCntAddAct += ItemCntAddAct;//物品数量增加
        playerPack.ItemCntReduceAct += ItemCntReduceAct;//物品数量减少
        dogz_model.UpdateAssistDogzEvent += UpdateAssistDogzEvent;
        FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
        GodBeastRedPoint();
    }
    private void OnFuncStateChangeEvent(int obj)
    {
        if (obj == 138)
        {
            GodBeastRedPoint();
        }
    }
    private void UpdateAssistDogzEvent()
    {
        GodBeastRedPoint();
    }
    private void ItemCntReduceAct(PackType packType, int arg2, int arg3)
    {
        if (packType == PackType.rptDogzItem || packType == PackType.rptDogzEquip)
        {
            GodBeastRedPoint();
        }
    }
    private void ItemCntAddAct(PackType packType, int arg2, int arg3)
    {
        if (packType == PackType.rptDogzItem || packType == PackType.rptDogzEquip)
        {
            GodBeastRedPoint();
        }
    }
    public override void UnInit()
@@ -137,7 +176,7 @@
            return false;
        }
        int lv = QualityLimit[itemModel.chinItemModel.ItemColor];
        var DogzEquipMaxConfig = DogzEquipPlusConfig.GetEquipplaceAndLevel(itemModel.chinItemModel.EquipPlace, lv);
        var DogzEquipMaxConfig = DogzEquipPlusConfig.GetEquipplaceAndLevel(itemModel.chinItemModel.EquipPlace, lv);
        var IudetDogzEquipPlus = itemModel.GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);
        if (IudetDogzEquipPlus != null)
@@ -175,7 +214,7 @@
            else
            {
                return false;
            }
            }
        }
        else
        {
@@ -189,6 +228,69 @@
            }
        }
    }
    private void GodBeastRedPoint()//神兽强化红点
    {
        bool Istrue = false;
        int ItemColor = 10;
        var DogzEquipDict = dogz_model.dogzAssistStateDict;
        redPointStre1.state = RedPointState.None;
        int Type = 0;
        foreach (var key in DogzEquipDict.Keys)
        {
            if (DogzEquipDict[key] == 1)
            {
                Type += 1;
                List<ItemModel> itemModel = dogz_model.GetDogzEquips(key);
                for (int i = 0; i < itemModel.Count; i++)
                {
                    if (itemModel[i].chinItemModel.ItemColor < ItemColor)//获取最低品质的颜色
                    {
                        ItemColor = itemModel[i].chinItemModel.ItemColor;
                    }
                    var IudetDogzEquipPlus = itemModel[i].GetUseDataModel((int)ItemUseDataKey.Def_IudetDogzEquipPlus);// 神兽装备强化信息列表 [强化等级, 强化熟练度]
                    if (IudetDogzEquipPlus == null)//判断是否都满级 满级不可亮红点
                    {
                        Istrue = true;
                    }
                    else
                    {
                        if (QualityLimit.ContainsKey(itemModel[i].chinItemModel.ItemColor) && IudetDogzEquipPlus[0] < (QualityLimit[itemModel[i].chinItemModel.ItemColor]))
                        {
                            Istrue = true;
                        }
                    }
                }
                if (Istrue)
                {
                    if (playerPack.GetSinglePackModel(PackType.rptDogzItem) == null)
                    {
                        return;
                    }
                    Dictionary<int, ItemModel> BackpackDic = playerPack.GetSinglePackModel(PackType.rptDogzItem).GetPackModelIndexDict();
                    int _ItemColor = 10;
                    foreach (var keyBack in BackpackDic.Keys)
                    {
                        var itemModelBack = BackpackDic[keyBack];
                        if (itemModelBack.chinItemModel.Type == 70)//有神兽水晶时的红点
                        {
                            redPointStre1.state = RedPointState.Simple;
                            return;
                        }
                        if (itemModelBack.chinItemModel.ItemColor < _ItemColor)
                        {
                            _ItemColor = itemModelBack.chinItemModel.ItemColor;
                        }
                    }
                    if (Type >= dogz_model.DogzAssistDefaultCnt && ItemColor> _ItemColor)//出战神兽已满,且神兽背包有品质低于已助战神兽品质颜色时
                    {
                        redPointStre1.state = RedPointState.Simple;
                        return;
                    }
                }
            }
        }
    }
}
System/Treasure/TreasureComponent.cs
@@ -45,6 +45,7 @@
        SFXController lockEffect;
        SFXController challengeSfx;
        SFXController specialSfx;
        SFXController highestSfx;
        public Treasure3DConfig paramConfig { get; set; }
@@ -74,6 +75,7 @@
                RequestBottom();
                RequestBackLight();
                RequestRedpoint();
                RequestHighestEffect();
                UpdateTreasureState();
                UpdateParam();
                RedpointCenter.Instance.redpointValueChangeEvent -= RedpointValueChangeEvent;
@@ -89,6 +91,7 @@
                RecycleCollectingSfx();
                RecycleRedpoint();
                RecycleCondition();
                RecycleHighestEffect();
                RedpointCenter.Instance.redpointValueChangeEvent -= RedpointValueChangeEvent;
            }
            interactProcessor.SetActive(_active);
@@ -339,6 +342,11 @@
                CloserState();
            }
            UpdateParam();
        }
        public void UpdateTreasureStage()
        {
            RequestHighestEffect();
        }
        private void RequestBackLight()
@@ -704,6 +712,35 @@
            }
        }
        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);
                }
            }
        }
        public void RecycleHighestEffect()
        {
            if (highestSfx != null)
            {
                highestSfx.gameObject.SetActive(false);
                SFXPlayUtility.Instance.Release(highestSfx);
                highestSfx = null;
            }
        }
        public void CloserState()
        {
            RecycleBottom();
@@ -713,6 +750,7 @@
            RecycleLockEffect();
            RecycleRedpoint();
            RecycleCondition();
            RecycleHighestEffect();
            RequestSpecialEffect();
            Treasure _treasure;
@@ -741,6 +779,7 @@
            RequestBottom();
            RequestName();
            RequestRedpoint();
            RequestHighestEffect();
            UpdateTreasureState();
            RecycleSpecialEffect();
            UpdateParam();
@@ -793,6 +832,31 @@
            UI3DTreasureSelectStage.Instance.CompleteUnlock();
            model.treasureGotoId = 0;
        }
        public void PlayHighestShow()
        {
            RecycleHighestEffect();
            var _effect = SFXPlayUtility.Instance.Play(5197, root);
            if (_effect != null)
            {
                LayerUtility.SetLayer(_effect.gameObject, LayerUtility.UILayer, true);
                _effect.transform.LookAt(UI3DTreasureSelectStage.Instance.center);
                _effect.transform.localPosition = Vector3.zero;
                _effect.duration = 3.0f;
            }
            SnxxzGame.Instance.StartCoroutine(Co_HighestShow());
        }
        IEnumerator Co_HighestShow()
        {
            yield return WaitingForSecondConst.GetWaitForSeconds(2.2f);
            model.SetTreasureFinishAnim(treasureId, false);
            if (display)
            {
                UpdateTreasureStage();
            }
            UI3DTreasureSelectStage.Instance.ReCheckTreasureHighest();
        }
    }
}
System/Treasure/TreasureModel.cs
@@ -378,6 +378,38 @@
            QuickSetting.Instance.SendPackage();
        }
        public bool GetTreasureFinishAnim(int _treasureId)
        {
            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);
        }
        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();
        }
        public bool TryGetUnlockShowTreasure(out int _id)
        {
            _id = 0;
@@ -1152,6 +1184,10 @@
                        _up = true;
                    }
                    treasure.UpdateTreasureLevelExp(package.InfoList[i].LV, (int)package.InfoList[i].Exp, package.InfoList[i].State == 1);
                    if (serverInited && treasure.IsHighestStage)
                    {
                        SetTreasureFinishAnim(treasure.id);
                    }
                    if (treasureLevelProgressUpdateEvent != null)
                    {
                        treasureLevelProgressUpdateEvent(treasure.id);
System/Treasure/TreasureSelectWin.cs
@@ -43,7 +43,8 @@
            m_HumanBtn.onClick.AddListener(() =>
            {
                if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.Human
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser)
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser
                || UI3DTreasureSelectStage.Instance.treasureFinishShowing)
                {
                    return;
                }
@@ -53,7 +54,8 @@
            m_DemonBtn.onClick.AddListener(() =>
            {
                if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.Demon
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser)
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser
                || UI3DTreasureSelectStage.Instance.treasureFinishShowing)
                {
                    return;
                }
@@ -63,7 +65,8 @@
            m_FairyBtn.onClick.AddListener(() =>
            {
                if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.Fairy
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser)
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser
                || UI3DTreasureSelectStage.Instance.treasureFinishShowing)
                {
                    return;
                }
@@ -71,7 +74,7 @@
            });
            m_BackBtn.onClick.AddListener(() =>
            {
                if (UI3DTreasureSelectStage.Instance.UnlockShowing)
                if (UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.treasureFinishShowing)
                {
                    return;
                }
@@ -83,6 +86,7 @@
        protected override void OnPreOpen()
        {
            UI3DTreasureSelectStage.Instance.UnlockShowing = false;
            UI3DTreasureSelectStage.Instance.treasureFinishShowing = false;
            if (!UI3DTreasureSelectStage.Instance.IsOpen)
            {
                UI3DTreasureSelectStage.Instance.Open(false, model.currentCategory);
@@ -90,6 +94,8 @@
            UI3DTreasureSelectStage.Instance.OnCameraStartEvent += OnCameraStartEvent;
            UI3DTreasureSelectStage.Instance.OnCameraBackComplete += OnCameraBackComplete;
            UI3DTreasureSelectStage.Instance.OnUnlockComplete += OnUnlockComplete;
            UI3DTreasureSelectStage.Instance.OnHighestComplete += OnHighestComplete;
            UI3DTreasureSelectStage.Instance.startAnimation += StartAnimation;
            m_TreasureDrag.OnValueChange += OnValueChange;
            m_TreasureDrag.OnDragComplete += OnDragComplete;
            m_TreasureDrag.OnDragBegine += OnDragBegine;
@@ -116,6 +122,8 @@
            UI3DTreasureSelectStage.Instance.OnCameraStartEvent -= OnCameraStartEvent;
            UI3DTreasureSelectStage.Instance.OnCameraBackComplete -= OnCameraBackComplete;
            UI3DTreasureSelectStage.Instance.OnUnlockComplete -= OnUnlockComplete;
            UI3DTreasureSelectStage.Instance.OnHighestComplete -= OnHighestComplete;
            UI3DTreasureSelectStage.Instance.startAnimation -= StartAnimation;
            m_TreasureDrag.OnValueChange -= OnValueChange;
            m_TreasureDrag.OnDragComplete -= OnDragComplete;
            m_TreasureDrag.OnDragBegine -= OnDragBegine;
@@ -184,8 +192,9 @@
        private void UpdateButtonState()
        {
            var _closer = UI3DTreasureSelectStage.Instance.IsCloser 
                || UI3DTreasureSelectStage.Instance.UnlockShowing;
            if (UI3DTreasureSelectStage.Instance.UnlockShowing)
                || UI3DTreasureSelectStage.Instance.UnlockShowing|| UI3DTreasureSelectStage.Instance.treasureFinishShowing;
            if (UI3DTreasureSelectStage.Instance.UnlockShowing
                || UI3DTreasureSelectStage.Instance.treasureFinishShowing)
            {
                m_BackBtn.gameObject.SetActive(false);
            }
@@ -199,6 +208,16 @@
            m_FairyBtn.gameObject.SetActive(!_closer);
        }
        private void StartAnimation()
        {
            UpdateButtonState();
        }
        private void OnHighestComplete()
        {
            UpdateButtonState();
        }
        private void OnUnlockComplete()
        {
            UpdateButtonState();
System/Treasure/UI3DTreasureSelectStage.cs
@@ -156,6 +156,7 @@
        public bool CloserComplete { get; private set; }
        public int jumpTreasure { get; private set; }
        public bool UnlockShowing { get; set; }
        public bool treasureFinishShowing { get; set; }
        public bool Preloading { get; private set; }
        public GameObject currentTreasureTitle
@@ -212,6 +213,8 @@
        public event Action OnCameraCloserComplete;
        public event Action OnCameraBackEvent;
        public event Action OnUnlockComplete;
        public event Action OnHighestComplete;
        public event Action startAnimation;
        private Dictionary<TreasureCategory, List<TreasureComponent>> m_Treasures = new Dictionary<TreasureCategory, List<TreasureComponent>>();
        private Dictionary<TreasureCategory, bool> m_PreloadDict = new Dictionary<TreasureCategory, bool>();
@@ -298,6 +301,7 @@
            }
            model.treasureStateChangeEvent += TreasureStateChangeEvent;
            model.treasureStageUpEvent += TreasureStageUpEvent;
        }
        IEnumerator Co_PreLoad(TreasureCategory _category, Action callback)
@@ -320,6 +324,16 @@
        {
            HideAllTreasure();
            CloseRenderCamera();
            IsCloser = false;
            CloserComplete = false;
            UnlockShowing = false;
            treasureFinishShowing = false;
            IsOpen = false;
            jumping = false;
            Preloading = false;
            jumpTreasure = 0;
            var movecomponent = m_CameraControl.GetComponent<SmoothMove>();
            if (movecomponent != null)
            {
@@ -327,19 +341,12 @@
            }
            m_CameraControl.localPosition = m_StartPosition;
            IsCloser = false;
            CloserComplete = false;
            UnlockShowing = false;
            IsOpen = false;
            jumping = false;
            Preloading = false;
            jumpTreasure = 0;
            CameraController.Instance.CameraObject.gameObject.SetActive(true);
            m_Camera.enabled = false;
            WindowCenter.Instance.uiRoot.baseCanvas.gameObject.SetActive(true);
            model.treasureStateChangeEvent -= TreasureStateChangeEvent;
            model.treasureStageUpEvent -= TreasureStageUpEvent;
            model.SetTreasureUnlockShow(currentCategory, 0);
            if (currentTreasureTitle != null)
@@ -370,10 +377,25 @@
            }
        }
        private void TreasureStageUpEvent(int _id)
        {
            var _list = m_Treasures[currentCategory];
            var _component = _list.Find((x) =>
            {
                return x.treasureId == _id;
            });
            if (_component != null && _component.display)
            {
                _component.UpdateTreasureStage();
                _component.SetLayer(CloserComplete ? LayerUtility.DefaultLayer : LayerUtility.UILayer);
            }
        }
        public void SelectTreasureCategory(TreasureCategory _type, bool _closer = false)
        {
            presentSelectIndex = 0;
            UnlockShowing = false;
            treasureFinishShowing = false;
            currentCategory = _type;
            model.currentCategory = currentCategory;
@@ -442,7 +464,11 @@
        {
            var _treasure = 0;
            int _index = -1;
            if (model.GetTreasureUnlockShow(currentCategory) != 0)
            if (CheckTreasureFinish(out _treasure))
            {
                treasureFinishShowing = true;
            }
            else if (model.GetTreasureUnlockShow(currentCategory) != 0)
            {
                _treasure = model.GetTreasureUnlockShow(currentCategory);
                model.treasureGotoId = _treasure;
@@ -469,6 +495,31 @@
                });
            }
            return _index;
        }
        private bool CheckTreasureFinish(out int treasureId)
        {
            treasureId = 0;
            if (currentCategory != TreasureCategory.Human)
            {
                return false;
            }
            var list = model.GetTreasureCategory(TreasureCategory.Human);
            for (int i = 0; i < list.Count; i++)
            {
                if (list[i] == 101)
                {
                    continue;
                }
                Treasure treasure;
                if (model.TryGetTreasure(list[i], out treasure)
                    && treasure.IsHighestStage && model.GetTreasureFinishAnim(list[i]))
                {
                    treasureId = list[i];
                    return true;
                }
            }
            return false;
        }
        int Compare(int x, int y)
@@ -591,9 +642,20 @@
            }
        }
        public bool AllowPointClick()
        {
            if (IsCloser || UnlockShowing || jumping
                || draging || BossShowModel.Instance.BossShowing
                || treasureFinishShowing)
            {
                return false;
            }
            return true;
        }
        public void OnPointDownTreasure(int _treasureId)
        {
            if (IsCloser || UnlockShowing || jumping || draging || BossShowModel.Instance.BossShowing)
            if (!AllowPointClick())
            {
                return;
            }
@@ -622,6 +684,11 @@
                var _component = m_Treasures[currentCategory][presentSelectIndex];
                _component.PlayUnlockShow();
            }
            else if (treasureFinishShowing)
            {
                var _component = m_Treasures[currentCategory][presentSelectIndex];
                _component.PlayHighestShow();
            }
            jumpTreasure = 0;
        }
        #endregion
@@ -641,7 +708,7 @@
        public void BegineDrag()
        {
            if (IsCloser || UnlockShowing)
            if (IsCloser || UnlockShowing || treasureFinishShowing)
            {
                return;
            }
@@ -906,20 +973,22 @@
        private void CameraBackComplete()
        {
            if (!IsOpen)
            {
                return;
            }
            IsCloser = false;
            if (OnCameraBackComplete != null)
            {
                OnCameraBackComplete();
            }
            IsCloser = false;
            if (!IsOpen)
            {
                return;
            }
            var _list = m_Treasures[currentCategory];
            for (int i = 0; i < _list.Count; i++)
            {
                _list[i].SetLayer(LayerUtility.UILayer);
            }
            ReCheckTreasureHighest();
        }
        #endregion
@@ -984,5 +1053,59 @@
            }
        }
        #endregion
        public void ReCheckTreasureHighest()
        {
            treasureFinishShowing = false;
            if (!IsOpen)
            {
                return;
            }
            var treasureId = 0;
            if (CheckTreasureFinish(out treasureId))
            {
                treasureFinishShowing = true;
            }
            else if (model.GetTreasureUnlockShow(currentCategory) != 0)
            {
                UnlockShowing = true;
                treasureId = model.GetTreasureUnlockShow(currentCategory);
                model.treasureGotoId = treasureId;
            }
            if (treasureId != 0)
            {
                var _index = m_Treasures[currentCategory].FindIndex((x) =>
                 {
                     return x.treasureId == treasureId;
                 });
                if (_index == presentSelectIndex)
                {
                    var _component = m_Treasures[currentCategory][presentSelectIndex];
                    if (UnlockShowing)
                    {
                        _component.PlayUnlockShow();
                    }
                    else if (treasureFinishShowing)
                    {
                        _component.PlayHighestShow();
                    }
                }
                else
                {
                    Goto(_index);
                }
                if (startAnimation != null)
                {
                    startAnimation();
                }
            }
            else
            {
                if (OnHighestComplete != null)
                {
                    OnHighestComplete();
                }
            }
        }
    }
}