少年修仙传客户端代码仓库
client_Zxw
2018-12-27 73ecb4c90051a6ae90c4bfd520d455cd6940a358
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
25个文件已修改
18个文件已添加
1489 ■■■■■ 已修改文件
Core/GameEngine/Model/Config/KingTreasureConfig.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/KingTreasureConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Player/Character/PlayerExtersionData.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Player/PlayerDatas.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA51D_tagCMWearMagicWeapon.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA51D_tagCMWearMagicWeapon.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC004_tagGCCrossRealmPKSeason.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC004_tagGCCrossRealmPKSeason.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA3_Function/HA352_tagMCMagicWeaponLVInfo.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HC0_CrossRealm/HC004_tagGCCrossRealmPKSeason.cs 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HC0_CrossRealm/HC004_tagGCCrossRealmPKSeason.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_NpcCollect.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_NpcFightNorm.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GActorNpcFight.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneHonorShopCell.cs 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneHonorStoreWin.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOnePlayerInfo.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/CrossServerOneVsOne/CrossServerOneVsOneWin.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Store/StoreModel.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/FunctionUnlockFlyObject.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/KingThreeDimensionsBehaviour.cs 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/KingThreeDimensionsBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/KingTreasureModel.cs 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/KingTreasureModel.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/KingTreasureWin.cs 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/KingTreasureWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureBaseWin.cs 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureComponent.cs 111 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureInteractProcessor.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureNewGotWin.cs 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureSelectWin.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureThreeDimensionsBehaviour.cs 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureThreeDimensionsBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureUIEvent.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/TreasureUIEvent.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Treasure/UI3DTreasureSelectStage.cs 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/EnumHelper.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Utility/UIHelper.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/KingTreasureConfig.cs
New file
@@ -0,0 +1,47 @@
//--------------------------------------------------------
//    [Author]:            第二世界
//    [  Date ]:           Tuesday, December 25, 2018
//--------------------------------------------------------
using UnityEngine;
using System;
namespace TableConfig {
    public partial class KingTreasureConfig : ConfigBase {
        public int ID { get ; private set ; }
        public int MWID { get ; private set ; }
        public int LV { get ; private set ; }
        public string AddAttr { get ; private set; }
        public override string getKey()
        {
            return ID.ToString();
        }
        public override void Parse() {
            try
            {
                ID=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0;
                MWID=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0;
                LV=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0;
                AddAttr = rawContents[3].Trim();
            }
            catch (Exception ex)
            {
                DebugEx.Log(ex);
            }
        }
    }
}
Core/GameEngine/Model/Config/KingTreasureConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 69a1de784b915e14b98e3e9276d76115
timeCreated: 1545706375
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/GameEngine/Model/ConfigManager.cs
@@ -217,6 +217,7 @@
        AddAsyncTask<GatherSoulConfig>();
        AddAsyncTask<GatherSoulPropertyConfig>();
        AddAsyncTask<GatherSoulComposeConfig>();
        AddAsyncTask<KingTreasureConfig>();
        while (!AllCompleted())
        {
Core/GameEngine/Model/Player/Character/PlayerExtersionData.cs
@@ -62,4 +62,5 @@
    public uint soulDust;//聚魂-魂尘 196
    public uint soulSplinters;//聚魂-碎片 197
    public uint soulCore;//聚魂-核心环 198
    public int honorValue; //荣誉值 199
}
Core/GameEngine/Model/Player/PlayerDatas.cs
@@ -808,6 +808,9 @@
            case PlayerDataRefresh.CDBPlayerRefresh_SoulCore:
                extersion.soulCore = value;
                break;
            case PlayerDataRefresh.CDBPlayerRefresh_Honor:
                extersion.honorValue = (int)value;
                break;
        }
    }
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA51D_tagCMWearMagicWeapon.cs
New file
@@ -0,0 +1,20 @@
using UnityEngine;
using System.Collections;
// A5 1D 法宝佩戴 #tagCMWearMagicWeapon
public class CA51D_tagCMWearMagicWeapon : GameNetPackBasic {
    public uint MWID;    //法宝ID
    public byte State;    //0-卸下 1-佩戴
    public CA51D_tagCMWearMagicWeapon () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xA51D;
    }
    public override void WriteToBytes () {
        WriteBytes (MWID, NetDataType.DWORD);
        WriteBytes (State, NetDataType.BYTE);
    }
}
Core/NetworkPackage/ClientPack/ClientToMapServer/CA5_Function/CA51D_tagCMWearMagicWeapon.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: c0cb54d8f83ee704390655a70712d24b
timeCreated: 1545809562
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/DTCFile/ServerPack/HA3_Function/DTCA352_tagMCMagicWeaponLVInfo.cs
@@ -1,24 +1,25 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Thursday, May 03, 2018
//--------------------------------------------------------
using Snxxz.UI;
using System;
using System.Collections;
using System.Collections.Generic;
public class DTCA352_tagMCMagicWeaponLVInfo : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var package = vNetPack as HA352_tagMCMagicWeaponLVInfo;
        ModelCenter.Instance.GetModel<TreasureModel>().UpdateTreasureLevelInfo(package);
    }
}
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Thursday, May 03, 2018
//--------------------------------------------------------
using Snxxz.UI;
using System;
using System.Collections;
using System.Collections.Generic;
public class DTCA352_tagMCMagicWeaponLVInfo : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack)
    {
        base.Done(vNetPack);
        var package = vNetPack as HA352_tagMCMagicWeaponLVInfo;
        ModelCenter.Instance.GetModel<TreasureModel>().UpdateTreasureLevelInfo(package);
        ModelCenter.Instance.GetModel<KingTreasureModel>().OnReceivePackage(package);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC004_tagGCCrossRealmPKSeason.cs
New file
@@ -0,0 +1,11 @@
using UnityEngine;
using System.Collections;
// C0 04 跨服PK赛季信息 #tagGCCrossRealmPKSeason
public class DTCC004_tagGCCrossRealmPKSeason : DtcBasic {
    public override void Done(GameNetPackBasic vNetPack) {
        base.Done(vNetPack);
        HC004_tagGCCrossRealmPKSeason vNetData = vNetPack as HC004_tagGCCrossRealmPKSeason;
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HC0_CrossRealm/DTCC004_tagGCCrossRealmPKSeason.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: caa8b080f4218d74dbadca1f9f9bac29
timeCreated: 1545270558
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HA3_Function/HA352_tagMCMagicWeaponLVInfo.cs
@@ -21,6 +21,7 @@
            TransBytes (out InfoList[i].Exp, vBytes, NetDataType.DWORD);
            TransBytes (out InfoList[i].State, vBytes, NetDataType.BYTE);
            TransBytes (out InfoList[i].FBPassLV, vBytes, NetDataType.BYTE);
            TransBytes (out InfoList[i].IsWear, vBytes, NetDataType.BYTE);
        }
    }
@@ -30,6 +31,7 @@
        public uint Exp;
        public byte State;        //是否点击法宝认主
        public byte FBPassLV;        //副本关卡
        public byte IsWear;        //是否佩戴(仅适用王者法宝)
    }
}
Core/NetworkPackage/ServerPack/HC0_CrossRealm/HC004_tagGCCrossRealmPKSeason.cs
New file
@@ -0,0 +1,33 @@
using UnityEngine;
using System.Collections;
// C0 04 跨服PK赛季信息 #tagGCCrossRealmPKSeason
public class HC004_tagGCCrossRealmPKSeason : GameNetPackBasic {
    public byte ZoneCount;    // 所有赛区个数
    public  byte[] ZoneIDList;    // 所有赛区列表
    public byte ZoneID;    // 所属赛区ID
    public ushort SeasonID;    // 当前赛季ID
    public string StartDate;    // 开始日期 yyyy-MM-dd
    public string EndDate;    // 结束日期 yyyy-MM-dd
    public string EndTime;    // 赛季结算时间,赛季奖励该时间后才可领取 hh:mm
    public string NextStartDate;    // 下赛季开始日期 yyyy-MM-dd
    public string NextEndDate;    // 下赛季结束日期 yyyy-MM-dd
    public HC004_tagGCCrossRealmPKSeason () {
        _cmd = (ushort)0xC004;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out ZoneCount, vBytes, NetDataType.BYTE);
        TransBytes (out ZoneIDList, vBytes, NetDataType.BYTE, ZoneCount);
        TransBytes (out ZoneID, vBytes, NetDataType.BYTE);
        TransBytes (out SeasonID, vBytes, NetDataType.WORD);
        TransBytes (out StartDate, vBytes, NetDataType.Chars, 10);
        TransBytes (out EndDate, vBytes, NetDataType.Chars, 10);
        TransBytes (out EndTime, vBytes, NetDataType.Chars, 5);
        TransBytes (out NextStartDate, vBytes, NetDataType.Chars, 10);
        TransBytes (out NextEndDate, vBytes, NetDataType.Chars, 10);
    }
}
Core/NetworkPackage/ServerPack/HC0_CrossRealm/HC004_tagGCCrossRealmPKSeason.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 5dde8bcae1e094b4ca6f1b79a42c600c
timeCreated: 1545270557
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Fight/GameActor/GA_NpcCollect.cs
@@ -78,23 +78,6 @@
        base.OnPrefabLoadFinished(result, prefab);
    }
    protected override void OnMainModelLoaded()
    {
        base.OnMainModelLoaded();
        if (m_Model)
        {
            if (NpcConfig.NPCID == 33409001)
            {
                m_Model.transform.localPosition = new Vector3(0, 0.132f, 0);
            }
            else if (NpcConfig.NPCID == 33409002)
            {
                m_Model.transform.localPosition = new Vector3(0, 0.142f, 0);
            }
        }
    }
    protected sealed override void HandleNpcConfig(int npcID)
    {
        if (npcID == 10404100)
@@ -475,7 +458,8 @@
    public sealed override void RequestShadow()
    {
        if (NpcConfig.NPCID == 10204200)
        if (NpcConfig.NPCID == 10204200
         || NpcConfig.NPCID == GeneralDefine.GatherSoulDZ)
        {
            return;
        }
Fight/GameActor/GA_NpcFightNorm.cs
@@ -85,6 +85,41 @@
        {
            ShowOrHideModel(false);
        }
        if (m_Model)
        {
            if (NpcConfig.NPCID == 33409001)
            {
                m_Model.transform.localPosition = new Vector3(0, 0.132f, 0);
                var _dz = m_Model.transform.Find("Prefab_Race_L007");
                if (_dz)
                {
                    _dz.localPosition = new Vector3(0, -0.132f, 0);
                }
            }
            else if (NpcConfig.NPCID == 33409002)
            {
                m_Model.transform.localPosition = new Vector3(0, 0.142f, 0);
                var _dz = m_Model.transform.Find("Prefab_Race_L007");
                if (_dz)
                {
                    _dz.localPosition = new Vector3(0, -0.142f, 0);
                }
            }
        }
        if (PlayerDatas.Instance.baseData.MapID == 31340)
        {
            RequestLifeBar();
        }
    }
    public override void RequestShadow()
    {
        if (NpcConfig.NPCID != 33409001 && NpcConfig.NPCID != 33409002)
        {
            base.RequestShadow();
        }
    }
    public override void OnClick()
@@ -171,7 +206,7 @@
        if (m_LifeBar != null)
        {
            m_LifeBar.target = null;
            m_LifeBar.neverHide = false;
            //m_LifeBar.neverHide = false;
            LifeBar.Recycle(m_LifeBar);
            m_LifeBar = null;
        }
@@ -192,7 +227,7 @@
        ReleaseName();
        // 聚魂副本守卫不显示名字
        if (NpcConfig.NPCID == 33409001 || NpcConfig.NPCID == 33409002)
        if (PlayerDatas.Instance.baseData.MapID == 31340)
        {
            return;
        }
@@ -265,7 +300,10 @@
        if (!ActorInfo.serverDie)
        {
            ReleaseName();
            ReleaseLifeBar();
            if (PlayerDatas.Instance.baseData.MapID != 31340)
            {
                ReleaseLifeBar();
            }
        }
    }
Fight/GameActor/GActorNpcFight.cs
@@ -455,7 +455,7 @@
#endif
    }
    public sealed override void RequestShadow()
    public override void RequestShadow()
    {
        ReleaseShadow();
        m_Shadow = SFXPlayUtility.Instance.PlayBattleEffect(999999, m_Root);
System/CrossServerOneVsOne/CrossServerOneVsOneHonorShopCell.cs
@@ -67,6 +67,7 @@
            }
            vipText.gameObject.SetActive(!isShowBuyPrice);
            refreshTimeText.gameObject.SetActive(false);
            moneyIcon.gameObject.SetActive(isShowBuyPrice);
            if (canBuyCnt > 0)
            {
@@ -88,6 +89,12 @@
                    sellImg.gameObject.SetActive(true);
                    itemCell.countText.text = StringUtility.Contact(UIHelper.AppendStringColor(TextColType.Red, remainNum.ToString()),
                        "/" + canBuyCnt.ToString());
                    string refreshDes = m_storeModel.GetStoreRefreshTimeByType(storeConfig.RefreshType);
                    if(!string.IsNullOrEmpty(refreshDes))
                    {
                        refreshTimeText.gameObject.SetActive(true);
                        refreshTimeText.text = refreshDes;
                    }
                }
            }
            else
@@ -100,7 +107,7 @@
            {
                m_storeModel.OnClickShopCell(storeConfig);
            });
            refreshTimeText.gameObject.SetActive(false);
        }
        private void UpdateRefreshTime()
System/CrossServerOneVsOne/CrossServerOneVsOneHonorStoreWin.cs
@@ -32,7 +32,8 @@
        protected override void OnPreOpen()
        {
            m_storeModel.storeFuncType = StoreFunc.XBEquipStore;
            m_storeModel.RefreshBuyShopLimitEvent += CreateShopCell;
            m_storeModel.storeFuncType = StoreFunc.CrossOneVsOneHonor;
            CreateShopCell();
        }
        protected override void OnAfterOpen()
@@ -42,7 +43,7 @@
        protected override void OnPreClose()
        {
            m_storeModel.RefreshBuyShopLimitEvent -= CreateShopCell;
        }
        protected override void OnAfterClose()
        {
System/CrossServerOneVsOne/CrossServerOneVsOneModel.cs
@@ -126,8 +126,8 @@
                    WindowCenter.Instance.Open<CrossServerOneVsOneRoundWin>();
                }
            }
            if(mission.isStart == 1)
            DebugEx.LogFormat("副本帮助信息回合是否开始::{0}",mission.isStart);
            if (mission.isStart == 1)
            {
                if(WindowCenter.Instance.IsOpen<CrossServerOneVsOneRoundWin>())
                {
@@ -324,6 +324,8 @@
        /// <param name="type"></param>
        public void SendCrossMatch(int type)
        {
            if (type == 1 && TryGetMatchTip()) return;
            CC101_tagCMCrossRealmPKMatch match = new CC101_tagCMCrossRealmPKMatch();
            match.Type = (byte)type;
            GameNetSystem.Instance.SendInfo(match);
@@ -334,6 +336,50 @@
            CC102_tagCMCrossRealmPKBuy pKBuy = new CC102_tagCMCrossRealmPKBuy();
            GameNetSystem.Instance.SendInfo(pKBuy);
        }
        public bool TryGetMatchTip()
        {
            int mapId = PlayerDatas.Instance.baseData.MapID;
            int dataMapId = dungeonModel.GetDataMapIdByMapId(mapId);
            bool isCrossDungeon = dataMapId == CrossServerDataMapId;
            if(isCrossDungeon)
            {
                SysNotifyMgr.Instance.ShowTip("CrossMatching3");
                return true;
            }
            var mapConfig = Config.Instance.Get<MapConfig>(mapId);
            bool isDungeon = mapConfig != null && mapConfig.MapFBType != 0 ? true : false;
            if (isDungeon)
            {
                SysNotifyMgr.Instance.ShowTip("CrossMatching4");
                return true;
            }
            var deadModel = ModelCenter.Instance.GetModel<PlayerDeadModel>();
            if(deadModel.playerIsDie)
            {
                SysNotifyMgr.Instance.ShowTip("CrossMatching5");
                return true;
            }
            var teamModel = ModelCenter.Instance.GetModel<TeamModel>();
            bool isTeamMatch = teamModel.isMatching;
            if(isTeamMatch)
            {
                SysNotifyMgr.Instance.ShowTip("CrossMatching6");
                return true;
            }
            bool isDungeonPrepare = teamModel.teamPrepare.isPreparing;
            if(isDungeonPrepare)
            {
                SysNotifyMgr.Instance.ShowTip("CrossMatching7");
                return true;
            }
            return false;
        }
        #endregion
        #region 历史记录
System/CrossServerOneVsOne/CrossServerOneVsOnePlayerInfo.cs
@@ -87,7 +87,7 @@
        public string DisplayWinningRate()
        {
            float rate = PKCount != 0 ? (float)WinCount / PKCount : 0;
            return StringUtility.Contact((float)Math.Round(rate,1)*100,"%");
            return StringUtility.Contact((float)Math.Round(rate*100,1),"%");
        }
    }
System/CrossServerOneVsOne/CrossServerOneVsOneWin.cs
@@ -43,6 +43,7 @@
        protected override void OnPreOpen()
        {
            SetDisplay();
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent += UpdatePlayerData;
            CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent += UpdatePlayerInfo;
        }
@@ -54,6 +55,7 @@
        protected override void OnPreClose()
        {
            CloseSubWindows();
            PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= UpdatePlayerData;
            CrossServerOneVsOnePlayerInfo.Instance.UpdatePlayerInfoEvent -= UpdatePlayerInfo;
        }
        protected override void OnAfterClose()
@@ -68,6 +70,13 @@
            UpdateRank();
        }
        private void UpdatePlayerData(PlayerDataRefresh type)
        {
            if (type != PlayerDataRefresh.CDBPlayerRefresh_Honor) return;
            UpdateHonor();
        }
        private void SetDisplay()
        {
            crossServerWin = WindowCenter.Instance.Get<CrossServerWin>();
@@ -80,6 +89,7 @@
            scoreSlider.maxValue = 1;
            UpdateScore();
            UpdateRank();
            UpdateHonor();
            ClickArena();
        }
@@ -90,6 +100,11 @@
            rankImg.SetSprite(arenaConfig.IconKey);
        }
        private void UpdateHonor()
        {
            honorText.text = UIHelper.GetMoneyCnt(18).ToString();
        }
        private void UpdateScore()
        {
            curScoreText.text = playerInfo.Score.ToString();
System/Store/StoreModel.cs
@@ -1807,6 +1807,7 @@
    XBToolStore = 13, //寻宝道具商店
    OSGift = 14,//开服礼包
    OSTimeLimitGift = 15,//限时特惠
    CrossOneVsOneHonor = 17,//荣誉商店
    DanDrugStore = 30, //丹药回收商店
}
System/Treasure/FunctionUnlockFlyObject.cs
@@ -127,6 +127,9 @@
                    onReached();
                    onReached = null;
                }
                StopTreasureShow();
                GameObject.Destroy(this.gameObject);
                return;
            }
@@ -189,27 +192,29 @@
                        functionUnLockShowEndEvent(m_UnLockType);
                    }
                    switch (m_UnLockType)
                    {
                        case FunctionUnlockType.Treasure:
                        case FunctionUnlockType.TreasureSkill:
                        case FunctionUnlockType.TreasureFunc:
                            UI3DTreasureExhibition.Instance.StopShow();
                            break;
                        case FunctionUnlockType.Normal:
                            break;
                    }
                    StopTreasureShow();
                    GameObject.Destroy(this.gameObject);
                }
                catch (Exception ex)
                {
                    DebugEx.Log(ex.Message);
                }
            }
        }
        void StopTreasureShow()
        {
            switch (m_UnLockType)
            {
                case FunctionUnlockType.Treasure:
                case FunctionUnlockType.TreasureSkill:
                case FunctionUnlockType.TreasureFunc:
                    UI3DTreasureExhibition.Instance.StopShow();
                    break;
            }
        }
    }
}
System/Treasure/KingThreeDimensionsBehaviour.cs
New file
@@ -0,0 +1,118 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TableConfig;
using System;
namespace Snxxz.UI
{
    [XLua.Hotfix]
    public class KingThreeDimensionsBehaviour : MonoBehaviour
    {
        [SerializeField] RectTransform m_ContainerSeasonNotStart;
        [SerializeField] RectTransform m_ContainerSeasonStartOrEnd;
        [SerializeField] Text m_Season;
        [SerializeField] Image m_EndState;
        [SerializeField] Image m_OnGoingState;
        [SerializeField] Text m_Division;
        [SerializeField] Text m_Score;
        [SerializeField] RectTransform m_ContainerWearToggle;
        [SerializeField] Image m_WearCheck;
        [SerializeField] TreasureUIEvent m_Wear;
        KingTreasureModel model
        {
            get { return ModelCenter.Instance.GetModel<KingTreasureModel>(); }
        }
        TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
        CrossServerOneVsOneModel oneVsOneModel
        {
            get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); }
        }
        int displayTreasureId = 0;
        private void Awake()
        {
            m_Wear.onClick += OnWear;
        }
        public void Display(int treasureId)
        {
            displayTreasureId = treasureId;
            var season = 0;
            if (model.TryGetSeason(treasureId, out season))
            {
                var seasonNotStart = season > CrossServerOneVsOnePKSeason.Instance.SeasonID;
                m_ContainerSeasonNotStart.gameObject.SetActive(seasonNotStart);
                m_ContainerSeasonStartOrEnd.gameObject.SetActive(!seasonNotStart);
                bool seasonEnd = season < CrossServerOneVsOnePKSeason.Instance.SeasonID;
                if (!seasonNotStart)
                {
                    m_EndState.gameObject.SetActive(seasonEnd);
                    m_OnGoingState.gameObject.SetActive(!seasonEnd);
                    m_Season.text = season.ToString();
                    m_Division.gameObject.SetActive(seasonEnd);
                    CrossServerOneVsOneModel.CrossServerOneVsOneHistory history;
                    if (oneVsOneModel.TryGetOneVsOneHistory(season, out history))
                    {
                        var divisionConfig = Config.Instance.Get<CrossServerArenaConfig>(history.division);
                        m_Division.gameObject.SetActive(divisionConfig != null);
                        if (divisionConfig != null)
                        {
                            m_Division.text = divisionConfig.Name;
                        }
                        m_Score.gameObject.SetActive(true);
                        m_Score.text = Language.Get("KingTreasureScore", model.GetSeasonScore(treasureId));
                    }
                    else
                    {
                        m_Division.gameObject.SetActive(false);
                        m_Score.gameObject.SetActive(false);
                    }
                }
            }
            Treasure treasure;
            if(treasureModel.TryGetTreasure(treasureId, out treasure))
            {
                m_ContainerWearToggle.gameObject.SetActive(treasure.state == TreasureState.Collected);
                m_WearCheck.gameObject.SetActive(model.IsWear(treasureId));
            }
            else
            {
                m_ContainerWearToggle.gameObject.SetActive(false);
            }
            model.treasureWearRefresh -= TreasureWearRefresh;
            model.treasureWearRefresh += TreasureWearRefresh;
        }
        public void OnWear()
        {
            if (displayTreasureId != 0)
            {
                model.TryWearTreasure(displayTreasureId);
            }
        }
        private void TreasureWearRefresh(int id)
        {
            if (id == displayTreasureId)
            {
                Display(id);
            }
        }
        public void Dispose()
        {
            model.treasureWearRefresh -= TreasureWearRefresh;
        }
    }
}
System/Treasure/KingThreeDimensionsBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: cc8974057d676b64e971f6c9c47acc19
timeCreated: 1545721558
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Treasure/KingTreasureModel.cs
New file
@@ -0,0 +1,238 @@
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
namespace Snxxz.UI
{
    public class KingTreasureModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
    {
        Dictionary<int, bool> treasureWearDict = new Dictionary<int, bool>();
        Dictionary<int, Dictionary<int, Division>> treasureDivisionDict = new Dictionary<int, Dictionary<int, Division>>();
        Dictionary<int, int> treasureSeasonDict = new Dictionary<int, int>();
        public event Action<int> treasureWearRefresh;
        public int wearCountLimit { get; private set; }
        public string scoreFormula { get; private set; }
        TreasureModel treasureModel
        {
            get { return ModelCenter.Instance.GetModel<TreasureModel>(); }
        }
        CrossServerOneVsOneModel oneVsOneModel
        {
            get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); }
        }
        public override void Init()
        {
            ParseConfig();
        }
        public void OnBeforePlayerDataInitialize()
        {
            treasureWearDict.Clear();
        }
        public void OnPlayerLoginOk()
        {
        }
        public override void UnInit()
        {
        }
        void ParseConfig()
        {
            var config = Config.Instance.Get<FuncConfigConfig>("MagicWeaponOfKing");
            if (config != null)
            {
                treasureSeasonDict = ConfigParse.GetDic<int, int>(config.Numerical1);
                wearCountLimit = int.Parse(config.Numerical2);
            }
            config = Config.Instance.Get<FuncConfigConfig>("KingTreasureScore");
            if (config != null)
            {
                scoreFormula = config.Numerical1;
            }
            var configs = Config.Instance.GetAllValues<KingTreasureConfig>();
            for (int i = 0; i < configs.Count; i++)
            {
                Dictionary<int, Division> dict;
                if (!treasureDivisionDict.TryGetValue(configs[i].MWID, out dict))
                {
                    dict = new Dictionary<int, Division>();
                    treasureDivisionDict.Add(configs[i].MWID, dict);
                }
                dict.Add(configs[i].LV, new Division()
                {
                    division = configs[i].LV,
                    propertys = ConfigParse.GetDic<int, int>(configs[i].AddAttr),
                });
            }
        }
        public bool TryGetDivision(int treasureId, int divisionLevel, out Division division)
        {
            Dictionary<int, Division> dict;
            division = default(Division);
            return treasureDivisionDict.TryGetValue(treasureId, out dict)
                && dict.TryGetValue(divisionLevel, out division);
        }
        public bool IsWear(int treasureId)
        {
            if (treasureWearDict.ContainsKey(treasureId))
            {
                return treasureWearDict[treasureId];
            }
            return false;
        }
        public bool TryGetSeason(int treasureId, out int season)
        {
            return treasureSeasonDict.TryGetValue(treasureId, out season);
        }
        public List<int> GetDisplayList()
        {
            var displays = new List<int>();
            var list = treasureModel.GetTreasureCategory(TreasureCategory.King);
            for (int i = 0; i < list.Count; i++)
            {
                var season = 0;
                if (TryGetSeason(list[i], out season))
                {
                    if (season <= CrossServerOneVsOnePKSeason.Instance.SeasonID
                        || season == CrossServerOneVsOnePKSeason.Instance.SeasonID + 1)
                    {
                        displays.Add(list[i]);
                    }
                }
            }
            return displays;
        }
        public void TryWearTreasure(int treasureId)
        {
            var config = Config.Instance.Get<TreasureConfig>(treasureId);
            if (config == null || (TreasureCategory)config.Category != TreasureCategory.King)
            {
                return;
            }
            Treasure treasure;
            if (treasureModel.TryGetTreasure(treasureId, out treasure))
            {
                if (treasure.state == TreasureState.Collected)
                {
                    if (IsWear(treasureId))
                    {
                        CA51D_tagCMWearMagicWeapon pak = new CA51D_tagCMWearMagicWeapon();
                        pak.MWID = (uint)treasureId;
                        pak.State = 0;
                        GameNetSystem.Instance.SendInfo(pak);
                    }
                    else
                    {
                        if (GetWearTreasureCount() >= wearCountLimit)
                        {
                            var countDisplay = string.Empty;
                            if (wearCountLimit == 2)
                            {
                                countDisplay = Language.Get("Num_CHS_Two");
                            }
                            else
                            {
                                countDisplay = Language.Get(StringUtility.Contact("Num_CHS_", wearCountLimit));
                            }
                            SysNotifyMgr.Instance.ShowTip("KingTreasureWearLimit", countDisplay);
                            return;
                        }
                        CA51D_tagCMWearMagicWeapon pak = new CA51D_tagCMWearMagicWeapon();
                        pak.MWID = (uint)treasureId;
                        pak.State = 1;
                        GameNetSystem.Instance.SendInfo(pak);
                    }
                }
            }
        }
        public int GetWearTreasureCount()
        {
            var count = 0;
            var list = treasureModel.GetTreasureCategory(TreasureCategory.King);
            for (int i = 0; i < list.Count; i++)
            {
                if (IsWear(list[i]))
                {
                    count++;
                }
            }
            return count;
        }
        public int GetSeasonScore(int treasureId)
        {
            var score = 0;
            if (scoreFormula != null)
            {
                var season = 0;
                if (TryGetSeason(treasureId, out season))
                {
                    CrossServerOneVsOneModel.CrossServerOneVsOneHistory history;
                    if (oneVsOneModel.TryGetOneVsOneHistory(season, out history))
                    {
                        Division division;
                        if (TryGetDivision(treasureId, history.rewardLevel, out division)
                            && division.propertys != null)
                        {
                            Equation.Instance.Clear();
                            foreach (var key in division.propertys.Keys)
                            {
                                var config = Config.Instance.Get<PlayerPropertyConfig>(key);
                                if (config != null)
                                {
                                    Equation.Instance.AddKeyValue(config.Parameter, division.propertys[key]);
                                }
                            }
                            score = Equation.Instance.Eval<int>(scoreFormula);
                        }
                    }
                }
            }
            return score;
        }
        public void OnReceivePackage(HA352_tagMCMagicWeaponLVInfo package)
        {
            for (int i = 0; i < package.Count; i++)
            {
                var data = package.InfoList[i];
                var config = Config.Instance.Get<TreasureConfig>((int)data.MWID);
                if (config == null || config.Category != (int)TreasureCategory.King)
                {
                    continue;
                }
                treasureWearDict[(int)data.MWID] = data.IsWear == 1;
                if (treasureWearRefresh != null)
                {
                    treasureWearRefresh((int)data.MWID);
                }
            }
        }
        public struct Division
        {
            public int division;
            public Dictionary<int, int> propertys;
        }
    }
}
System/Treasure/KingTreasureModel.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 82bdcc464a4a975409f3766d8c73fd67
timeCreated: 1545703511
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Treasure/KingTreasureWin.cs
New file
@@ -0,0 +1,260 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Monday, December 24, 2018
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    [XLua.Hotfix]
    public class KingTreasureWin : Window
    {
        [SerializeField] PositionTween m_PositionTween;
        [SerializeField] Image m_TreasureNameIcon;
        [SerializeField] RectTransform m_ContainerOnGoing;
        [SerializeField] Text m_SeasonOnGoingRemind;
        [SerializeField] RectTransform m_ContainerEnd;
        [SerializeField] Text m_SeasonEndRemind;
        [SerializeField] RectTransform m_ContainerGot;
        [SerializeField] Image m_DivisionIcon;
        [SerializeField] Text m_Division;
        [SerializeField] Text m_Score;
        [SerializeField] RectTransform m_ContainerBaseProperty;
        [SerializeField] PropertyBehaviour[] m_BasePropertys;
        [SerializeField] RectTransform m_ContainerSpecialProperty;
        [SerializeField] PropertyBehaviour[] m_SpecialPropertys;
        [SerializeField] Text m_Remind;
        [SerializeField] Button m_Goto;
        TreasureModel model
        {
            get { return ModelCenter.Instance.GetModel<TreasureModel>(); }
        }
        KingTreasureModel kingTreasureModel
        {
            get { return ModelCenter.Instance.GetModel<KingTreasureModel>(); }
        }
        CrossServerOneVsOneModel crossServerOneVsOneModel
        {
            get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); }
        }
        #region Built-in
        protected override void BindController()
        {
            m_Goto.onClick.AddListener(Goto);
        }
        protected override void AddListeners()
        {
        }
        protected override void OnPreOpen()
        {
            UI3DTreasureSelectStage.Instance.SetStartState();
            model.treasureSelectedEvent += TreasureSelectedEvent;
            TreasureBaseWin.allowSelectTreasure += AllowSelectTreasure;
            Display();
            var countDisplay = string.Empty;
            if (kingTreasureModel.wearCountLimit == 2)
            {
                countDisplay = Language.Get("Num_CHS_Two");
            }
            else
            {
                countDisplay = Language.Get(StringUtility.Contact("Num_CHS_", kingTreasureModel.wearCountLimit));
            }
            m_Remind.text = Language.Get("KingTreasureLimitRemind", countDisplay);
        }
        protected override void OnActived()
        {
            base.OnActived();
            DisplayTween();
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            model.treasureSelectedEvent -= TreasureSelectedEvent;
            TreasureBaseWin.allowSelectTreasure -= AllowSelectTreasure;
        }
        protected override void OnAfterClose()
        {
        }
        #endregion
        public void Display()
        {
            DisplayBase();
            DisplayState();
            DisplayGoto();
        }
        void DisplayBase()
        {
            var config = Config.Instance.Get<TreasureConfig>(model.selectedTreasure);
            if (config != null)
            {
                m_TreasureNameIcon.SetSprite(config.NameIcon);
            }
        }
        void DisplayState()
        {
            Treasure treasure;
            m_ContainerEnd.gameObject.SetActive(false);
            m_ContainerGot.gameObject.SetActive(false);
            m_ContainerOnGoing.gameObject.SetActive(false);
            if (model.TryGetTreasure(model.selectedTreasure, out treasure))
            {
                var season = 0;
                kingTreasureModel.TryGetSeason(model.selectedTreasure, out season);
                if (treasure.state == TreasureState.Collected)
                {
                    DisplayGot();
                }
                else if (season < CrossServerOneVsOnePKSeason.Instance.SeasonID)
                {
                    DisplayEnd();
                }
                else
                {
                    DisplayOnGoing();
                }
            }
        }
        void DisplayGot()
        {
            m_ContainerGot.gameObject.SetActive(true);
            CrossServerOneVsOneModel.CrossServerOneVsOneHistory history;
            List<int> basePropertys = new List<int>();
            List<int> specialPropertys = new List<int>();
            var session = 0;
            if (kingTreasureModel.TryGetSeason(model.selectedTreasure, out session)
                && crossServerOneVsOneModel.TryGetOneVsOneHistory(session, out history))
            {
                var divisionConfig = Config.Instance.Get<CrossServerArenaConfig>(history.division);
                if (divisionConfig != null)
                {
                    m_DivisionIcon.SetSprite(divisionConfig.IconKey);
                    m_Division.text = divisionConfig.Name;
                }
                KingTreasureModel.Division division;
                if (kingTreasureModel.TryGetDivision(model.selectedTreasure, history.rewardLevel, out division))
                {
                    if (division.propertys != null)
                    {
                        foreach (var key in division.propertys.Keys)
                        {
                            var config = Config.Instance.Get<PlayerPropertyConfig>(key);
                            if (config.type == 2)
                            {
                                specialPropertys.Add(key);
                            }
                            else
                            {
                                basePropertys.Add(key);
                            }
                        }
                    }
                }
                m_ContainerBaseProperty.gameObject.SetActive(basePropertys.Count > 0);
                m_ContainerSpecialProperty.gameObject.SetActive(specialPropertys.Count > 0);
                if (basePropertys.Count > 0)
                {
                    for (int i = 0; i < m_BasePropertys.Length; i++)
                    {
                        m_BasePropertys[i].gameObject.SetActive(i < basePropertys.Count);
                        if (i < basePropertys.Count)
                        {
                            m_BasePropertys[i].DisplayUpper(basePropertys[i], division.propertys[basePropertys[i]]);
                        }
                    }
                }
                if (specialPropertys.Count > 0)
                {
                    for (int i = 0; i < m_SpecialPropertys.Length; i++)
                    {
                        m_SpecialPropertys[i].gameObject.SetActive(i < specialPropertys.Count);
                        if (i < specialPropertys.Count)
                        {
                            m_BasePropertys[i].DisplayUpper(basePropertys[i], division.propertys[basePropertys[i]]);
                        }
                    }
                }
            }
        }
        void DisplayEnd()
        {
            m_ContainerEnd.gameObject.SetActive(true);
            m_SeasonEndRemind.text = UIHelper.ReplaceNewLine(Language.Get("KingTreasureEndRemind"));
        }
        void DisplayOnGoing()
        {
            m_ContainerOnGoing.gameObject.SetActive(true);
            m_SeasonOnGoingRemind.text = Language.Get("KingTreasureOnGoingRemind");
        }
        void DisplayGoto()
        {
            var season = 0;
            kingTreasureModel.TryGetSeason(model.selectedTreasure, out season);
            m_Goto.gameObject.SetActive(CrossServerOneVsOnePKSeason.Instance.SeasonID == season);
        }
        void DisplayTween()
        {
            m_PositionTween.Play();
        }
        private void TreasureSelectedEvent(int id)
        {
            m_PositionTween.SetEndState();
            Display();
        }
        private bool AllowSelectTreasure(int id)
        {
            var list = kingTreasureModel.GetDisplayList();
            var season = 0;
            if (kingTreasureModel.TryGetSeason(id, out season))
            {
                if (season == CrossServerOneVsOnePKSeason.Instance.SeasonID + 1)
                {
                    SysNotifyMgr.Instance.ShowTip("TreasureOneVsOneSeasonNotStart");
                    return false;
                }
            }
            return list.Contains(id);
        }
        private void Goto()
        {
            //--todo 跳转至赛季目标
        }
    }
}
System/Treasure/KingTreasureWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: cb43d91c7863116469cbad13ba3bf116
timeCreated: 1545656062
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Treasure/TreasureBaseWin.cs
@@ -33,6 +33,11 @@
        {
            get { return ModelCenter.Instance.GetModel<TreasureModel>(); }
        }
        KingTreasureModel kingTreasureModel
        {
            get { return ModelCenter.Instance.GetModel<KingTreasureModel>(); }
        }
        #region Built-in
        protected override void BindController()
        {
@@ -150,16 +155,38 @@
                    m_Right.image.SetSprite("XT_FB_34");
                    WindowCenter.Instance.Open<FairyTreasureWin>();
                    break;
                case TreasureCategory.King:
                    m_TreasureTitle.SetSprite("KingTreasureTitle");
                    m_Left.image.SetSprite("KingTreasureLeftSelect");
                    m_Right.image.SetSprite("KingTreasureRightSelect");
                    WindowCenter.Instance.Open<KingTreasureWin>();
                    break;
            }
            DisplaySelects();
        }
        private void DisplaySelects()
        {
            var leftRifht = Config.Instance.Get<TreasureConfig>(model.selectedTreasure + 1);
            m_Right.gameObject.SetActive(leftRifht != null);
            leftRifht = Config.Instance.Get<TreasureConfig>(model.selectedTreasure - 1);
            m_Left.gameObject.SetActive(leftRifht != null);
            switch (model.currentCategory)
            {
                case TreasureCategory.King:
                    {
                        var list = kingTreasureModel.GetDisplayList();
                        var leftRifht = list.Contains(model.selectedTreasure + 1);
                        m_Right.gameObject.SetActive(leftRifht);
                        leftRifht = list.Contains(model.selectedTreasure - 1);
                        m_Left.gameObject.SetActive(leftRifht);
                    }
                    break;
                default:
                    {
                        var leftRifht = Config.Instance.Get<TreasureConfig>(model.selectedTreasure + 1);
                        m_Right.gameObject.SetActive(leftRifht != null);
                        leftRifht = Config.Instance.Get<TreasureConfig>(model.selectedTreasure - 1);
                        m_Left.gameObject.SetActive(leftRifht != null);
                    }
                    break;
            }
        }
        private void OnCameraBackComplete()
System/Treasure/TreasureComponent.cs
@@ -27,12 +27,13 @@
        public Transform root;
        public Transform treasureRoot;
        public TreasureInteractProcessor interactProcessor;
        private Transform treasure;
        private SkinnedMeshRenderer treasureSkin;
        private Transform bottom;
        private Transform name;
        private TextMesh condition;
        private DemonDungeonLabel treasureLabel;
        Transform treasure;
        SkinnedMeshRenderer treasureSkin;
        Transform bottom;
        Transform name;
        TextMesh condition;
        DemonDungeonLabel treasureLabel;
        TreasureThreeDimensionsBehaviour m_ThreeDimensionsBehaviour;
        #region 红点
        private Transform potentialRed;
@@ -57,6 +58,7 @@
        static Dictionary<TreasureState, GameObjectPoolManager.GameObjectPool> m_StatePoolDict = new Dictionary<TreasureState, GameObjectPoolManager.GameObjectPool>();
        static Dictionary<TreasureCategory, GameObjectPoolManager.GameObjectPool> m_ConditionPoolDict = new Dictionary<TreasureCategory, GameObjectPoolManager.GameObjectPool>();
        static Dictionary<TreasureCategory, GameObjectPoolManager.GameObjectPool> m_LabelPoolDict = new Dictionary<TreasureCategory, GameObjectPoolManager.GameObjectPool>();
        static GameObjectPoolManager.GameObjectPool m_TreasureCanvaPool;
        static Vector3 m_CacheBottomScale = Vector3.zero;
        TreasureModel m_Model;
@@ -81,6 +83,7 @@
                RequestBackLight();
                RequestRedpoint();
                RequestHighestEffect();
                RequestTreasureCanva();
                UpdateTreasureState();
                UpdateParam();
                RedpointCenter.Instance.redpointValueChangeEvent -= RedpointValueChangeEvent;
@@ -100,6 +103,7 @@
                RecycleCondition();
                RecycleTreasureLabel();
                RecycleHighestEffect();
                RecycleTreasureCanva();
                RedpointCenter.Instance.redpointValueChangeEvent -= RedpointValueChangeEvent;
                model.demonTreasureDungeonUpdate -= DemonTreasureDungeonUpdate;
            }
@@ -108,6 +112,11 @@
        public void RequestName()
        {
            RecycleName();
            if (category == TreasureCategory.King)
            {
                return;
            }
            if (name == null)
            {
                if (paramConfig != null && !paramConfig.treasureNamePrefab.Equals(string.Empty))
@@ -175,17 +184,11 @@
            treasure.LookAt(UI3DTreasureSelectStage.Instance.showCamera.transform);
            treasure.gameObject.SetActive(true);
            Treasure _treasure;
            if (!model.TryGetTreasure(treasureId, out _treasure))
            {
                return;
            }
            bool requireGraySkin = RequireGrayTreasureSkin();
            treasureSkin = treasure.GetComponentInChildren<SkinnedMeshRenderer>();
            if (treasureSkin != null)
            {
                bool _unlock = _treasure.state == TreasureState.Collected
                    || _treasure.state == TreasureState.Collecting;
                treasureSkin.material.SetFloat("_Gray", _unlock ? 0 : 1);
                treasureSkin.material.SetFloat("_Gray", requireGraySkin ? 1 : 0);
            }
        }
@@ -297,20 +300,21 @@
        public void UpdateTreasureState()
        {
            Treasure _treasure;
            if (!model.TryGetTreasure(treasureId, out _treasure))
            {
                return;
            }
            if (treasure == null)
            {
                return;
            }
            Treasure _treasure;
            if (!model.TryGetTreasure(treasureId, out _treasure))
            {
                return;
            }
            bool requireGraySkin = RequireGrayTreasureSkin();
            if (treasureSkin != null)
            {
                treasureSkin.material.SetFloat("_Gray", _treasure.state == TreasureState.Collected
                    || _treasure.state == TreasureState.Collecting ? 0 : 1);
                treasureSkin.material.SetFloat("_Gray", requireGraySkin ? 1 : 0);
                if (model.GetTreasureUnlockShow(UI3DTreasureSelectStage.Instance.currentCategory) == _treasure.id
                    && !UI3DTreasureSelectStage.Instance.CloserComplete)
                {
@@ -425,6 +429,10 @@
        private void RequestLockEffect()
        {
            RecycleLockEffect();
            if (category == TreasureCategory.King)
            {
                return;
            }
            var _id = category == TreasureCategory.Human ? 5132 : 5157;
            lockEffect = SFXPlayUtility.Instance.Play(_id, treasureRoot);
            if (lockEffect != null)
@@ -865,6 +873,49 @@
            }
        }
        public void RequestTreasureCanva()
        {
            RecycleTreasureCanva();
            if (category != TreasureCategory.King)
            {
                return;
            }
            if (m_TreasureCanvaPool == null)
            {
                var prefab = UILoader.LoadPrefab("TreasureCanva");
                if (prefab)
                {
                    m_TreasureCanvaPool = GameObjectPoolManager.Instance.RequestPool(prefab);
                }
            }
            if (m_TreasureCanvaPool != null)
            {
                var go = m_TreasureCanvaPool.Request();
                go.SetActive(true);
                go.transform.SetParent(root);
                go.transform.localPosition = Vector3.zero;
                go.transform.localEulerAngles = new Vector3(0, -180, 0);
                go.transform.localScale = Vector3.one * 0.01f;
                LayerUtility.SetLayer(go, LayerUtility.DevisableUI, true);
                m_ThreeDimensionsBehaviour = go.GetComponent<TreasureThreeDimensionsBehaviour>();
                m_ThreeDimensionsBehaviour.SetCamera(UI3DTreasureSelectStage.Instance.treasureUICamera);
                m_ThreeDimensionsBehaviour.Display(treasureId);
            }
        }
        public void RecycleTreasureCanva()
        {
            if (m_TreasureCanvaPool != null)
            {
                if (m_ThreeDimensionsBehaviour != null)
                {
                    m_ThreeDimensionsBehaviour.gameObject.SetActive(false);
                    m_TreasureCanvaPool.Release(m_ThreeDimensionsBehaviour.gameObject);
                    m_ThreeDimensionsBehaviour = null;
                }
            }
        }
        public void CloserState()
        {
            RecycleBottom();
@@ -876,6 +927,7 @@
            RecycleCondition();
            RecycleTreasureLabel();
            RecycleHighestEffect();
            RecycleTreasureCanva();
            RequestSpecialEffect();
            Treasure _treasure;
@@ -897,6 +949,11 @@
        {
            LayerUtility.SetLayer(root.gameObject, _layer, true);
            LayerUtility.SetLayer(treasureRoot.gameObject, _layer, true);
            if (m_ThreeDimensionsBehaviour != null)
            {
                LayerUtility.SetLayer(m_ThreeDimensionsBehaviour.gameObject, LayerUtility.DevisableUI, true);
            }
        }
        public void OutCloserState()
@@ -905,6 +962,7 @@
            RequestName();
            RequestRedpoint();
            RequestHighestEffect();
            RequestTreasureCanva();
            UpdateTreasureState();
            RecycleSpecialEffect();
            UpdateParam();
@@ -988,6 +1046,17 @@
            }
            UI3DTreasureSelectStage.Instance.ReCheckTreasureHighest();
        }
        bool RequireGrayTreasureSkin()
        {
            Treasure _treasure;
            if (!model.TryGetTreasure(treasureId, out _treasure))
            {
                return true;
            }
            return _treasure.state != TreasureState.Collected
                    && _treasure.state != TreasureState.Collecting;
        }
    }
}
System/Treasure/TreasureInteractProcessor.cs
@@ -22,6 +22,20 @@
        public void OnPointerClick(PointerEventData eventData)
        {
            List<RaycastResult> results = new List<RaycastResult>();
            EventSystem.current.RaycastAll(eventData, results);
            if (results != null)
            {
                var index = results.FindIndex((x) =>
                {
                    return x.gameObject.GetComponent<TreasureUIEvent>() != null;
                });
                if (index != -1)
                {
                    DebugEx.Log("法宝UI事件拦截");
                    return;
                }
            }
            UI3DTreasureSelectStage.Instance.OnPointDownTreasure(treasureId);
        }
System/Treasure/TreasureModel.cs
@@ -29,7 +29,7 @@
        Redpoint humanRedpoint = new Redpoint(TREASURE_REDPOINTID, CATEGORY_REDPOINTIDS[(int)TreasureCategory.Human - 1]);
        Redpoint demonRedpoint = new Redpoint(TREASURE_REDPOINTID, CATEGORY_REDPOINTIDS[(int)TreasureCategory.Demon - 1]);
        Redpoint fairypoint = new Redpoint(TREASURE_REDPOINTID, CATEGORY_REDPOINTIDS[(int)TreasureCategory.Fairy - 1]);
        Redpoint elderGodRedpoint = new Redpoint(TREASURE_REDPOINTID, CATEGORY_REDPOINTIDS[(int)TreasureCategory.ElderGod - 1]);
        Redpoint elderGodRedpoint = new Redpoint(TREASURE_REDPOINTID, CATEGORY_REDPOINTIDS[(int)TreasureCategory.King - 1]);
        Redpoint zergRedpoint = new Redpoint(TREASURE_REDPOINTID, CATEGORY_REDPOINTIDS[(int)TreasureCategory.Zerg - 1]);
        public Redpoint stoveRedpoint { get; private set; }
System/Treasure/TreasureNewGotWin.cs
@@ -45,12 +45,20 @@
        [SerializeField] UIAlphaTween m_FadeInStory;
        [SerializeField] Text m_Story;
        [SerializeField] RectTransform m_ContainerProperty;
        [SerializeField] Slider m_PropertySlider;
        [SerializeField] UIAlphaTween m_FadeInProperty;
        [SerializeField] PropertyBehaviour[] m_BasePropertys;
        [SerializeField] PropertyBehaviour[] m_SpecialPropertys;
        [SerializeField] RectTransform m_ContainerFightPower;
        [SerializeField] Text m_FightPower;
        TreasureModel model { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
        PlayerTaskDatas taskmodel { get { return ModelCenter.Instance.GetModel<PlayerTaskDatas>(); } }
        SkillModel skillModel { get { return ModelCenter.Instance.GetModel<SkillModel>(); } }
        KingTreasureModel kingTreasureModel { get { return ModelCenter.Instance.GetModel<KingTreasureModel>(); } }
        CrossServerOneVsOneModel oneVsOneModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }
        FunctionUnlockFlyObject flyObject;
        FunctionUnlockFlyObject unlockFlyObject1;
@@ -93,6 +101,9 @@
                        case ShowStep.ShowStory:
                            OnEnterShowStory();
                            break;
                        case ShowStep.ShowProperty:
                            OnEnterShowProperty();
                            break;
                        case ShowStep.ShowComplete:
                            OnEnterShowComplete();
                            break;
@@ -133,6 +144,7 @@
            m_UnlockTip.gameObject.SetActive(false);
            m_ContainerFinishShow.gameObject.SetActive(false);
            m_ContainerFightPower.gameObject.SetActive(false);
            m_ContainerProperty.gameObject.SetActive(false);
            for (int i = 0; i < m_TreasureNewGots.Length; i++)
            {
@@ -234,6 +246,7 @@
                    break;
                case ShowStep.ShowNameAndSliderUnlock:
                    m_FuncUnLockSlider.value = 0;
                    m_PropertySlider.value = 0;
                    if (timer > 0.7f)
                    {
                        timer = 0f;
@@ -256,6 +269,14 @@
                    }
                    break;
                case ShowStep.ShowStory:
                    if (timer > 0.7f)
                    {
                        timer = 0f;
                        showStep = ShowStep.ShowComplete;
                    }
                    break;
                case ShowStep.ShowProperty:
                    m_PropertySlider.value = timer / 0.7f;
                    if (timer > 0.7f)
                    {
                        timer = 0f;
@@ -395,6 +416,69 @@
                }
                flyObject = unlockFlyObject1;
            }
            if ((TreasureCategory)config.Category == TreasureCategory.King)
            {
                Dictionary<int, int> basePropertys = new Dictionary<int, int>();
                Dictionary<int, int> specialPropertys = new Dictionary<int, int>();
                var season = 0;
                if (kingTreasureModel.TryGetSeason(config.ID, out season))
                {
                    CrossServerOneVsOneModel.CrossServerOneVsOneHistory history;
                    if (oneVsOneModel.TryGetOneVsOneHistory(season, out history))
                    {
                        KingTreasureModel.Division division;
                        if (kingTreasureModel.TryGetDivision(config.ID, history.rewardLevel, out division)
                            && division.propertys != null)
                        {
                            foreach (var key in division.propertys.Keys)
                            {
                                var propertyConfig = Config.Instance.Get<PlayerPropertyConfig>(key);
                                if (propertyConfig == null)
                                {
                                    continue;
                                }
                                if (propertyConfig.type == 2)
                                {
                                    specialPropertys.Add(key, division.propertys[key]);
                                }
                                else
                                {
                                    basePropertys.Add(key, division.propertys[key]);
                                }
                            }
                        }
                    }
                }
                var propertyIndex = 0;
                foreach (var key in basePropertys.Keys)
                {
                    if (propertyIndex < m_BasePropertys.Length)
                    {
                        m_BasePropertys[propertyIndex].gameObject.SetActive(true);
                        m_BasePropertys[propertyIndex].DisplayUpper(key, basePropertys[key]);
                    }
                    propertyIndex++;
                }
                for (int i = propertyIndex; i < m_BasePropertys.Length; i++)
                {
                    m_BasePropertys[i].gameObject.SetActive(false);
                }
                propertyIndex = 0;
                foreach (var key in specialPropertys.Keys)
                {
                    if (propertyIndex < m_SpecialPropertys.Length)
                    {
                        m_SpecialPropertys[propertyIndex].gameObject.SetActive(true);
                        m_SpecialPropertys[propertyIndex].DisplayUpper(key, specialPropertys[key]);
                    }
                    propertyIndex++;
                }
                for (int i = propertyIndex; i < m_SpecialPropertys.Length; i++)
                {
                    m_SpecialPropertys[i].gameObject.SetActive(false);
                }
            }
        }
        private void FinishShow()
@@ -462,6 +546,12 @@
                showStep = ShowStep.ShowStory;
                return;
            }
            else if (config.Category == (int)TreasureCategory.King)
            {
                m_ContainerFuncUnLock.gameObject.SetActive(false);
                showStep = ShowStep.ShowProperty;
                return;
            }
            if (displayStageCount == 0)
            {
                showStep = ShowStep.ShowComplete;
@@ -482,6 +572,13 @@
            m_ContianerStory.gameObject.SetActive(true);
            m_FadeInStory.SetStartState();
            m_FadeInStory.Play();
        }
        private void OnEnterShowProperty()
        {
            m_ContainerProperty.gameObject.SetActive(true);
            m_FadeInProperty.SetStartState();
            m_FadeInProperty.Play();
        }
        private void OnEnterShowComplete()
@@ -519,6 +616,7 @@
            ShowNameAndSliderUnlock,
            ShowUnlock,
            ShowStory,
            ShowProperty,
            ShowComplete,
            FadeOut,
            FlyTo,
System/Treasure/TreasureSelectWin.cs
@@ -19,6 +19,7 @@
        [SerializeField] FunctionButton m_HumanBtn;
        [SerializeField] FunctionButton m_DemonBtn;
        [SerializeField] FunctionButton m_FairyBtn;
        [SerializeField] FunctionButton m_KingBtn;
        [SerializeField] Button m_BackBtn;
        [SerializeField] RectTransform m_ContainerNewGuide;
@@ -75,6 +76,16 @@
                }
                UI3DTreasureSelectStage.Instance.SelectTreasureCategory(TreasureCategory.Fairy);
            });
            m_KingBtn.onClick.AddListener(() =>
            {
                if (UI3DTreasureSelectStage.Instance.currentCategory == TreasureCategory.King
                || UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.IsCloser
                || UI3DTreasureSelectStage.Instance.treasureFinishShowing)
                {
                    return;
                }
                UI3DTreasureSelectStage.Instance.SelectTreasureCategory(TreasureCategory.King);
            });
            m_BackBtn.onClick.AddListener(() =>
            {
                if (UI3DTreasureSelectStage.Instance.UnlockShowing || UI3DTreasureSelectStage.Instance.treasureFinishShowing)
@@ -95,6 +106,10 @@
            m_FairyBtn.repeatClickFunc += () =>
            {
                ReclickSelect(TreasureCategory.Fairy);
            };
            m_KingBtn.repeatClickFunc += () =>
            {
                ReclickSelect(TreasureCategory.King);
            };
        }
@@ -203,6 +218,10 @@
            {
                m_FairyBtn.state = model.currentCategory == TreasureCategory.Fairy ? TitleBtnState.Click : TitleBtnState.Normal;
            }
            if (m_KingBtn.state != TitleBtnState.Locked)
            {
                m_KingBtn.state = model.currentCategory == TreasureCategory.King ? TitleBtnState.Click : TitleBtnState.Normal;
            }
        }
        private void UpdateButtonState()
@@ -222,6 +241,7 @@
            m_HumanBtn.gameObject.SetActive(!_closer);
            m_DemonBtn.gameObject.SetActive(!_closer);
            m_FairyBtn.gameObject.SetActive(!_closer);
            m_KingBtn.gameObject.SetActive(!_closer);
        }
        private void StartAnimation()
System/Treasure/TreasureThreeDimensionsBehaviour.cs
New file
@@ -0,0 +1,50 @@
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
namespace Snxxz.UI
{
    [XLua.Hotfix]
    public class TreasureThreeDimensionsBehaviour : MonoBehaviour
    {
        [SerializeField] Canvas m_TreasureCanva;
        [SerializeField] KingThreeDimensionsBehaviour m_KingTreasureBehaviour;
        public void Display(int treasureId)
        {
            m_KingTreasureBehaviour.Dispose();
            m_KingTreasureBehaviour.gameObject.SetActive(false);
            var config = Config.Instance.Get<TreasureConfig>(treasureId);
            if (config != null)
            {
                switch ((TreasureCategory)config.Category)
                {
                    case TreasureCategory.King:
                        m_KingTreasureBehaviour.gameObject.SetActive(true);
                        m_KingTreasureBehaviour.Display(treasureId);
                        break;
                }
            }
        }
        public void SetCamera(Camera camera)
        {
            m_TreasureCanva.worldCamera = camera;
        }
        private void LateUpdate()
        {
            if (!gameObject.layer.Equals(LayerUtility.DevisableUI))
            {
                LayerUtility.SetLayer(gameObject, LayerUtility.DevisableUI, true);
            }
        }
        public void Dispose()
        {
            m_KingTreasureBehaviour.Dispose();
        }
    }
}
System/Treasure/TreasureThreeDimensionsBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 88a37e777b0455c46abebbdbf042494d
timeCreated: 1545721411
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Treasure/TreasureUIEvent.cs
New file
@@ -0,0 +1,21 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
namespace Snxxz.UI
{
    public class TreasureUIEvent : MonoBehaviour, IPointerClickHandler
    {
        public event UnityAction onClick;
        public void OnPointerClick(PointerEventData eventData)
        {
            if (onClick != null)
            {
                onClick();
            }
        }
    }
}
System/Treasure/TreasureUIEvent.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 1b7181922816fb34bb46a276c365e599
timeCreated: 1545807625
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/Treasure/UI3DTreasureSelectStage.cs
@@ -14,12 +14,14 @@
        [SerializeField] Transform m_TreasureRoot;
        [SerializeField] Camera m_Camera;
        [SerializeField] Camera m_RenderCamera;
        [SerializeField] Camera m_TreasureUICamera;
        [SerializeField] Transform m_CameraControl;
        [SerializeField] GameObject[] m_TreasureSkys;
        [SerializeField] GameObject[] m_TreasureTitles;
        [SerializeField] GameObject[] m_TreasureFogs;
        public Camera showCamera { get { return m_Camera; } }
        public Camera renderCamera { get { return m_RenderCamera; } }
        public Camera treasureUICamera { get { return m_TreasureUICamera; } }
        public Transform center
        {
            get
@@ -195,6 +197,7 @@
                return null;
            }
        }
        public int selectTreasure
        {
            get
@@ -207,6 +210,7 @@
                return 0;
            }
        }
        [NonSerialized]
        public int presentSelectIndex = 0;
        public event Action OnCameraBackComplete;
@@ -217,8 +221,9 @@
        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>();
        Dictionary<TreasureCategory, List<TreasureComponent>> m_Treasures = new Dictionary<TreasureCategory, List<TreasureComponent>>();
        Dictionary<TreasureCategory, bool> m_PreloadDict = new Dictionary<TreasureCategory, bool>();
        List<int> displayTreasures = new List<int>();
        Coroutine preloadCoroutine = null;
@@ -230,6 +235,7 @@
            Load(TreasureCategory.Human);
            Load(TreasureCategory.Demon);
            Load(TreasureCategory.Fairy);
            Load(TreasureCategory.King);
        }
        void Load(TreasureCategory _type)
@@ -399,6 +405,8 @@
        public void SelectTreasureCategory(TreasureCategory _type, bool _closer = false)
        {
            RefreshDisplayTreasures(_type);
            presentSelectIndex = 0;
            UnlockShowing = false;
            treasureFinishShowing = false;
@@ -407,7 +415,7 @@
            model.currentCategory = currentCategory;
            min_angle = startIndex * Mathf.Abs(intervalAngle);
            max_angle = (m_Treasures[currentCategory].Count + startIndex) * Mathf.Abs(intervalAngle);
            max_angle = (displayTreasures.Count + startIndex) * Mathf.Abs(intervalAngle);
            var _index = -1;
            if (!_closer)
@@ -416,7 +424,7 @@
            }
            if (_index == -1)
            {
                var _treasureCount = m_Treasures[_type].Count;
                var _treasureCount = displayTreasures.Count;
                _index = _treasureCount < pageCount / 2 ? 0 : pageCount / 2;
            }
@@ -696,6 +704,23 @@
            {
                return;
            }
            switch (currentCategory)
            {
                case TreasureCategory.King:
                    {
                        var model = ModelCenter.Instance.GetModel<KingTreasureModel>();
                        var season = 0;
                        if (model.TryGetSeason(_treasureId, out season))
                        {
                            if (season == CrossServerOneVsOnePKSeason.Instance.SeasonID + 1)
                            {
                                SysNotifyMgr.Instance.ShowTip("TreasureOneVsOneSeasonNotStart");
                                return;
                            }
                        }
                    }
                    break;
            }
            var _list = m_Treasures[currentCategory];
            var _index = _list.FindIndex((x) =>
            {
@@ -858,7 +883,8 @@
                    continue;
                }
                if (Mathf.Abs(i - presentSelectIndex) > startIndex)
                if (Mathf.Abs(i - presentSelectIndex) > startIndex
                    || !displayTreasures.Contains(_list[i].treasureId))
                {
                    if (_list[i].display)
                    {
@@ -876,7 +902,7 @@
        {
            if (target_angle * forward > max_angle)
            {
                float _angle = (m_Treasures[currentCategory].Count - 1 + startIndex) * Mathf.Abs(intervalAngle);
                float _angle = (displayTreasures.Count - 1 + startIndex) * Mathf.Abs(intervalAngle);
                target_angle = _angle * forward;
            }
            else if (target_angle * forward < min_angle)
@@ -919,7 +945,8 @@
                    }
                    else
                    {
                        bool _display = Mathf.Abs(i - presentSelectIndex) < startIndex;
                        bool _display = Mathf.Abs(i - presentSelectIndex) < startIndex
                            && displayTreasures.Contains(_list[i].treasureId);
                        _list[i].SetActive(_display);
                    }
                }
@@ -957,6 +984,10 @@
            var _list = m_Treasures[currentCategory];
            for (int i = 0; i < _list.Count; i++)
            {
                if (!displayTreasures.Contains(_list[i].treasureId))
                {
                    continue;
                }
                if (Mathf.Abs(i - _index) <= startIndex
                    && !_list[i].display)
                {
@@ -1164,5 +1195,24 @@
                }
            }
        }
        void RefreshDisplayTreasures(TreasureCategory category)
        {
            displayTreasures.Clear();
            var list = model.GetTreasureCategory(category);
            switch (category)
            {
                case TreasureCategory.King:
                    {
                        var model = ModelCenter.Instance.GetModel<KingTreasureModel>();
                        var displays = model.GetDisplayList();
                        displayTreasures.AddRange(displays);
                    }
                    break;
                default:
                    displayTreasures.AddRange(list);
                    break;
            }
        }
    }
}
System/WindowBase/ModelCenter.cs
@@ -217,6 +217,7 @@
            RegisterModel<VirtualPackModel>();
            RegisterModel<GatherSoulComposeModel>();
            RegisterModel<GatherSoulDungeonModel>();
            RegisterModel<KingTreasureModel>();
            inited = true;
        }
Utility/EnumHelper.cs
@@ -582,6 +582,7 @@
    CDBPlayerRefresh_SoulDust = 196,//聚魂-魂尘
    CDBPlayerRefresh_SoulSplinters = 197,//聚魂-碎片
    CDBPlayerRefresh_SoulCore = 198,//聚魂-核心环
    CDBPlayerRefresh_Honor = 199, //# 荣誉值
};
/** 物品加成类型 */
@@ -1054,7 +1055,7 @@
    Human = 1,
    Demon = 2,
    Fairy = 3,
    ElderGod = 4,
    King = 4,
    Zerg = 5,
}
Utility/UIHelper.cs
@@ -754,6 +754,10 @@
                {
                    return PlayerDatas.Instance.baseData.allSliver;
                }
            case 18:
                {
                    return (ulong)PlayerDatas.Instance.extersion.honorValue;
                }
            case 25:
                {
                    return (ulong)ModelCenter.Instance.GetModel<StoreModel>().GetTCBPlayerData(PlayerDataRefresh.CDBPlayerRefresh_TreasureScore);