少年修仙传客户端代码仓库
client_Wu Xijin
2019-01-22 8f58c878fd6183945025557fb5f012c78384c8ec
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
9个文件已修改
8个文件已添加
787 ■■■■■ 已修改文件
Core/GameEngine/Model/Config/JadeDynastySuitAttrConfig.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/JadeDynastySuitAttrConfig.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/ConfigManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA330_tagCMEquipZhuXianItem.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA330_tagCMEquipZhuXianItem.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA331_tagCMUnEquipZhuXianItem.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA331_tagCMUnEquipZhuXianItem.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyEquipModel.cs 371 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyEquipModel.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs 107 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/EquipTip.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PackSendQuestMgr.cs 96 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/WindowBase/ModelCenter.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/Model/Config/JadeDynastySuitAttrConfig.cs
New file
@@ -0,0 +1,60 @@
//--------------------------------------------------------
//    [Author]:            第二世界
//    [  Date ]:           Tuesday, January 22, 2019
//--------------------------------------------------------
using UnityEngine;
using System;
namespace TableConfig {
    public partial class JadeDynastySuitAttrConfig : ConfigBase {
        public int id { get ; private set ; }
        public int suiteType { get ; private set ; }
        public int suiteLV { get ; private set ; }
        public int[] attrIDList;
        public int[] attrValueList;
        public override string getKey()
        {
            return id.ToString();
        }
        public override void Parse() {
            try
            {
                id=IsNumeric(rawContents[0]) ? int.Parse(rawContents[0]):0;
                suiteType=IsNumeric(rawContents[1]) ? int.Parse(rawContents[1]):0;
                suiteLV=IsNumeric(rawContents[2]) ? int.Parse(rawContents[2]):0;
                string[] attrIDListStringArray = rawContents[3].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
                attrIDList = new int[attrIDListStringArray.Length];
                for (int i=0;i<attrIDListStringArray.Length;i++)
                {
                     int.TryParse(attrIDListStringArray[i],out attrIDList[i]);
                }
                string[] attrValueListStringArray = rawContents[4].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
                attrValueList = new int[attrValueListStringArray.Length];
                for (int i=0;i<attrValueListStringArray.Length;i++)
                {
                     int.TryParse(attrValueListStringArray[i],out attrValueList[i]);
                }
            }
            catch (Exception ex)
            {
                DebugEx.Log(ex);
            }
        }
    }
}
Core/GameEngine/Model/Config/JadeDynastySuitAttrConfig.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: f24aa247ff2e2e24bb6798ab57e55bfb
timeCreated: 1548124957
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/GameEngine/Model/ConfigManager.cs
@@ -226,6 +226,7 @@
        AddAsyncTask<WeekPartyPointConfig>();
        AddAsyncTask<SceneReplaceConfig>();
        AddAsyncTask<JadeDynastyBossConfig>();
        AddAsyncTask<JadeDynastySuitAttrConfig>();
        while (!AllCompleted())
        {
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA330_tagCMEquipZhuXianItem.cs
New file
@@ -0,0 +1,20 @@
using UnityEngine;
using System.Collections;
// A3 30 装备诛仙装备 #tagCMEquipZhuXianItem
public class CA330_tagCMEquipZhuXianItem : GameNetPackBasic {
    public byte EquipIndex;    //装备在诛仙装备背包中的索引
    public byte ItemIndex;    //装备在诛仙物品背包中的索引
    public CA330_tagCMEquipZhuXianItem () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xA330;
    }
    public override void WriteToBytes () {
        WriteBytes (EquipIndex, NetDataType.BYTE);
        WriteBytes (ItemIndex, NetDataType.BYTE);
    }
}
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA330_tagCMEquipZhuXianItem.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: fe3f6d53f831c9342b06158619949c27
timeCreated: 1548121806
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA331_tagCMUnEquipZhuXianItem.cs
New file
@@ -0,0 +1,18 @@
using UnityEngine;
using System.Collections;
// A3 31 卸下诛仙装备 #tagCMUnEquipZhuXianItem
public class CA331_tagCMUnEquipZhuXianItem : GameNetPackBasic {
    public byte EquipIndex;    //装备在诛仙装备背包中的索引
    public CA331_tagCMUnEquipZhuXianItem () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xA331;
    }
    public override void WriteToBytes () {
        WriteBytes (EquipIndex, NetDataType.BYTE);
    }
}
Core/NetworkPackage/ClientPack/ClientToMapServer/CA3_Item/CA331_tagCMUnEquipZhuXianItem.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: c42dab7b9edaa2743a3c60e26fbeb981
timeCreated: 1548121806
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack/JadeDynastyEquipBeh.cs
@@ -15,6 +15,7 @@
        ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        JadeDynastyEquipModel equipModel { get { return ModelCenter.Instance.GetModel<JadeDynastyEquipModel>(); } }
        private void OnEnable()
        {
@@ -31,18 +32,16 @@
        public void SetDisplay()
        {
            bool islock = false;
            int towerLayer = 1;
            lockObj.SetActive(islock);
            lockText.gameObject.SetActive(islock);
            bool islock = equipModel.IsLockEquipPlace((int)equipType);
            nameText.text = string.Empty;
            lockText.gameObject.SetActive(false);
            nameText.gameObject.SetActive(false);
            lockObj.SetActive(islock);
            equipBtn.RemoveAllListeners();
            itemCell.cellBtn.RemoveAllListeners();
            if(islock)
            {
                itemCell.gameObject.SetActive(false);
                lockText.text = StringUtility.Contact("诛仙塔/n",towerLayer,"层解锁");
            }
            else
            {
@@ -75,7 +74,9 @@
        {
            if (item == null) return;
            tipsModel.SetItemTipsModel(item.packType,item.itemInfo.ItemGUID);
            tipsModel.SetItemTipsModel(item.packType,item.itemInfo.ItemGUID,false);
            tipsModel.SetPutOnTipsBtn(tipsModel.curAttrData);
            tipsModel.ShowUICtrl();
        }
    }
}
System/JadeDynastyKnapSack/JadeDynastyEquipModel.cs
New file
@@ -0,0 +1,371 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TableConfig;
using LitJson;
namespace Snxxz.UI
{
    public class JadeDynastyEquipModel : Model,IBeforePlayerDataInitialize,IAfterPlayerDataInitialize,IPlayerLoginOk
    {
        public int UnlockTowerLayer
        {
            get { return 0; }
        }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        public override void Init()
        {
            ParseFuncConfig();
            ParseSuitAttrConfig();
        }
        public void OnBeforePlayerDataInitialize()
        {
        }
        public void OnAfterPlayerDataInitialize()
        {
        }
        public void OnPlayerLoginOk()
        {
        }
        public override void UnInit()
        {
        }
        #region 解析表数据
        public Dictionary<int, int> lockEquipLayerDict { get; private set; }
        public Dictionary<int, List<int>> suitTypeDict { get; private set;}
        public void ParseFuncConfig()
        {
            lockEquipLayerDict = new Dictionary<int, int>();
            suitTypeDict = new Dictionary<int, List<int>>();
            var equipZhuXian = Config.Instance.Get<FuncConfigConfig>("EquipZhuXian");
            var lockEquipData = JsonMapper.ToObject(equipZhuXian.Numerical1);
            foreach(var key in lockEquipData.Keys)
            {
                int equipPlace = int.Parse(key);
                int towerLayer = int.Parse(lockEquipData[key].ToString());
                lockEquipLayerDict.Add(equipPlace,towerLayer);
            }
            var suitGroupData = JsonMapper.ToObject(equipZhuXian.Numerical2);
            foreach(var key in suitGroupData.Keys)
            {
                int groupType = int.Parse(key);
                var equipPlaces = suitGroupData[key];
                if(equipPlaces.IsArray)
                {
                    List<int> list = new List<int>();
                    suitTypeDict.Add(groupType,list);
                    for(int i = 0; i < equipPlaces.Count; i++)
                    {
                        var equipPlace = equipPlaces[i];
                        list.Add(int.Parse(equipPlace.ToString()));
                    }
                }
            }
        }
        public Dictionary<int, Dictionary<int, JadeDynastySuitAttrData>> suitAttrDict { get; private set; }
        public void ParseSuitAttrConfig()
        {
            suitAttrDict = new Dictionary<int, Dictionary<int, JadeDynastySuitAttrData>>();
            var suitConfigs = Config.Instance.GetAllValues<JadeDynastySuitAttrConfig>();
            foreach(var config in suitConfigs)
            {
                int suitLv = config.suiteLV;
                int type = config.suiteType;
                var suitAttrData = new JadeDynastySuitAttrData(config.id);
                if (!suitAttrDict.ContainsKey(type))
                {
                    var dict = new Dictionary<int, JadeDynastySuitAttrData>();
                    dict.Add(suitLv,suitAttrData);
                    suitAttrDict.Add(type,dict);
                }
                else
                {
                    var dict = suitAttrDict[type];
                    if(!dict.ContainsKey(suitLv))
                    {
                        dict.Add(suitLv, suitAttrData);
                    }
                }
            }
        }
        public class JadeDynastySuitAttrData
        {
            public int suitLv { get; private set; }
            public Dictionary<int, int> attrDict { get; private set; }
            public JadeDynastySuitAttrConfig suitAttrConfig { get; private set; }
            public JadeDynastySuitAttrData(int id)
            {
                suitLv = 0;
                attrDict = new Dictionary<int, int>();
                suitAttrConfig = Config.Instance.Get<JadeDynastySuitAttrConfig>(id);
                if(suitAttrConfig != null)
                {
                    suitLv = suitAttrConfig.suiteLV;
                    int[] attrIds = suitAttrConfig.attrIDList;
                    int[] attrValues = suitAttrConfig.attrValueList;
                    if(attrIds != null && attrValues != null)
                    {
                        for(int i = 0; i < attrIds.Length; i++)
                        {
                            int attrId = attrIds[i];
                            int attrValue = attrValues[i];
                            if(!attrDict.ContainsKey(attrId))
                            {
                                attrDict.Add(attrId, attrValue);
                            }
                            else
                            {
                                attrDict[attrId] += attrValue;
                            }
                        }
                    }
                }
            }
        }
        #endregion
        #region 封包
        #endregion
        public bool TryGetLockTowerLayer(int equipPlace,out int towerLayer)
        {
            towerLayer = 0;
            return lockEquipLayerDict.TryGetValue(equipPlace,out towerLayer);
        }
        public bool TryGetSuitType(int equipPlace,out int suitType)
        {
            suitType = 0;
            foreach(var type in suitTypeDict.Keys)
            {
                var equipPlaces = suitTypeDict[type];
                if(equipPlaces.Contains(equipPlace))
                {
                    suitType = type;
                    return true;
                }
            }
            return false;
        }
        public bool TryGetEquipPlaces(int equipPlace,out List<int> equipPlaces)
        {
            int suitType = 0;
            equipPlaces = null;
            bool isSuit = TryGetSuitType(equipPlace,out suitType);
            if(isSuit)
            {
                equipPlaces = suitTypeDict[suitType];
                return true;
            }
            return false;
        }
        public bool TryGetSuitAttrData(int equipPlace,int suitLv,out JadeDynastySuitAttrData suitAttrData)
        {
            suitAttrData = null;
            int suitType = 0;
            TryGetSuitType(equipPlace,out suitType);
            if(suitAttrDict.ContainsKey(suitType))
            {
                var dict = suitAttrDict[suitType];
                return dict.TryGetValue(suitLv,out suitAttrData);
            }
            return false;
        }
        public bool IsWillUnlockEquipPlace(int equipPlace)
        {
            int willUnlockPlace = 0;
            int unlockTowerLayer = UnlockTowerLayer;
            int minTowerLayer = 0;
            foreach(var key in lockEquipLayerDict.Keys)
            {
                int lockTowerLayer = lockEquipLayerDict[key];
                if (lockTowerLayer > unlockTowerLayer
                    && (minTowerLayer > lockTowerLayer || minTowerLayer == 0))
                {
                    willUnlockPlace = key;
                    minTowerLayer = lockTowerLayer;
                }
            }
            return willUnlockPlace == equipPlace && willUnlockPlace != 0;
        }
        public bool IsLockEquipPlace(int equipPlace)
        {
            int unlockTowerLayer = UnlockTowerLayer;
            int towerLayer = 0;
            bool isLock = TryGetLockTowerLayer(equipPlace,out towerLayer);
            if(isLock && towerLayer > unlockTowerLayer)
            {
                return true;
            }
            return false;
        }
        public bool TryGetMaxSuitLV(int equipPlace,out int maxSuitLv)
        {
            maxSuitLv = 0;
            var suitLvs = GetSuitLvList(equipPlace);
            if(suitLvs != null && suitLvs.Count > 0)
            {
                maxSuitLv = suitLvs[suitLvs.Count - 1];
                return true;
            }
            return false;
        }
        public List<int> GetSuitLvList(int equipPlace)
        {
            int suitType = 0;
            bool isSuit = TryGetSuitType(equipPlace,out suitType);
            if(suitAttrDict.ContainsKey(suitType))
            {
                var dict = suitAttrDict[suitType];
                return dict.Keys.ToList();
            }
            return null;
        }
        public bool TryGetIsActiveSuit(int equipPlace,int suitLV,out List<int> activeEquips)
        {
            activeEquips = new List<int>();
            List<int> equipPlaces = null;
            bool isSuit = TryGetEquipPlaces(equipPlace, out equipPlaces);
            var itemModel = playerPack.GetItemModelByIndex(PackType.rptJadeDynastyEquip,equipPlace);
            if(itemModel != null)
            {
                int equipLv = itemModel.chinItemModel.LV;
                if(equipLv >= suitLV)
                {
                    activeEquips = equipPlaces;
                    return true;
                }
            }
            if(equipPlaces != null)
            {
                foreach(var key in equipPlaces)
                {
                    var model = playerPack.GetItemModelByIndex(PackType.rptJadeDynastyEquip,key);
                    if(model != null)
                    {
                        int equipLv = model.chinItemModel.LV;
                        if (equipLv >= suitLV)
                        {
                            activeEquips.Add(key);
                        }
                    }
                }
            }
            return false;
        }
        public bool TryGetSuitLV(int equipPlace,PackType type,out int curSuitLv,out int nextSuitLV)
        {
            curSuitLv = 0;
            nextSuitLV = 0;
            int maxSuitLv = 0;
            bool isMax = TryGetMaxSuitLV(equipPlace,out maxSuitLv);
            switch(type)
            {
                case PackType.rptJadeDynastyItem:
                    if(isMax)
                    {
                        curSuitLv = maxSuitLv;
                        return true;
                    }
                    break;
                case PackType.rptJadeDynastyEquip:
                    int minEquipLv = 0;
                    var suitLvs = GetSuitLvList(equipPlace);
                    List<int> equipPlaces = null;
                    bool isSuit = TryGetEquipPlaces(equipPlace, out equipPlaces);
                    if (isSuit && equipPlaces != null)
                    {
                        foreach (var key in equipPlaces)
                        {
                            var model = playerPack.GetItemModelByIndex(type,key);
                            if(model != null
                                && (minEquipLv > model.chinItemModel.LV
                                || minEquipLv == 0))
                            {
                                minEquipLv = model.chinItemModel.LV;
                            }
                            else if(model == null)
                            {
                                minEquipLv = 0;
                                break;
                            }
                        }
                    }
                    if(minEquipLv != 0 && suitLvs != null)
                    {
                        for(int i = suitLvs.Count - 1; i > -1; i++)
                        {
                            int suitLv = suitLvs[i];
                            if(minEquipLv >= suitLv)
                            {
                                curSuitLv = suitLv;
                                break;
                            }
                        }
                        foreach(var suitLv in suitLvs)
                        {
                            if(suitLv > minEquipLv)
                            {
                                nextSuitLV = suitLv;
                                break;
                            }
                        }
                    }
                    if(curSuitLv != 0 || nextSuitLV != 0)
                    {
                        return true;
                    }
                    break;
            }
            return false;
        }
        public bool TryGetSumSuitAttr(int suitType,PackType type,out JadeDynastySuitAttrData activeSuit,out JadeDynastySuitAttrData nextSuit)
        {
            activeSuit = null;
            nextSuit = null;
            if (!suitTypeDict.ContainsKey(suitType)) return false;
            int equipPlace = suitTypeDict[suitType][0];
            int curSuitLv = 0;
            int nextSuitLv = 0;
            bool isSuitLv = TryGetSuitLV(equipPlace,type,out curSuitLv,out nextSuitLv);
            TryGetSuitAttrData(equipPlace,curSuitLv,out activeSuit);
            TryGetSuitAttrData(equipPlace,nextSuitLv,out nextSuit);
            return activeSuit != null || nextSuit != null;
        }
    }
}
System/JadeDynastyKnapSack/JadeDynastyEquipModel.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 31f790a2de0a97348bd308662d37e513
timeCreated: 1548123671
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/JadeDynastyKnapSack/JadeDynastyItemBeh.cs
@@ -25,7 +25,9 @@
                itemCell.cellBtn.RemoveAllListeners();
                itemCell.cellBtn.AddListener(()=>
                {
                    tipsModel.SetItemTipsModel(itemModel.packType,itemModel.itemInfo.ItemGUID);
                    tipsModel.SetItemTipsModel(itemModel.packType,itemModel.itemInfo.ItemGUID,false,true);
                    tipsModel.SetBagTipsBtn(tipsModel.curAttrData);
                    tipsModel.ShowUICtrl();
                });
            }
System/JadeDynastyKnapSack/JadeDynastyKnapSackWin.cs
@@ -19,11 +19,12 @@
        }
        protected override void AddListeners()
        {
            closeBtn.AddListener(CloseClick);
            closeBtn.AddListener(ClickClose);
            leftBtn.AddListener(ClickLeft);
            rightBtn.AddListener(ClickRight);
            funcEquip.AddListener(ClickFuncEquip);
        }
        protected override void OnPreOpen()
        {
@@ -64,14 +65,21 @@
            CloseSubWindows();
            if (windowState == WindowState.Opened)
            {
                WindowCenter.Instance.OpenWithoutAnimation<JadeDynastyKnapSackWin>();
                WindowCenter.Instance.OpenWithoutAnimation<JadeDynastyEquipWin>();
            }
            else
            {
                WindowCenter.Instance.Open<JadeDynastyKnapSackWin>();
                WindowCenter.Instance.Open<JadeDynastyEquipWin>();
            }
            functionOrder = funcEquip.order;
        }
        private void ClickClose()
        {
            CloseSubWindows();
            CloseImmediately();
        }
        private void CloseSubWindows()
        {
            var children = WindowConfig.Get().FindChildWindows(this.GetType().Name);
System/JadeDynastyKnapSack/JadeDynastySuitAttrBeh.cs
@@ -3,6 +3,7 @@
using UnityEngine.UI;
using System.Collections.Generic;
using TableConfig;
using System.Linq;
namespace Snxxz.UI
{
@@ -12,60 +13,118 @@
        [SerializeField] List<SuitAttr> suitAttrs = new List<SuitAttr>();
        [SerializeField] GameObject noneActive;
        public void SetDisplay(int suitLv,bool isNext = false)
        JadeDynastyEquipModel equipModel { get { return ModelCenter.Instance.GetModel<JadeDynastyEquipModel>(); } }
        public void SetDisplay(PackType type,bool isNext = false)
        {
            bool isShowNoneActive = false;
            if (!isNext)
            {
                bool isActive = true;
                isShowNoneActive = !isActive;
                titleText.text = StringUtility.Contact("套装总属性");
            }
            else
            {
                bool isMaxSuitLv = false;
                isShowNoneActive = isMaxSuitLv;
                titleText.text = StringUtility.Contact("进阶属性");
            }
            List<int> suitTypes = equipModel.suitTypeDict.Keys.ToList();
            bool isNoneActive = true;
            bool isMaxSuitLv = true;
            for(int i = 0; i < suitAttrs.Count; i++)
            {
                var suitAttr = suitAttrs[i];
                if(i < suitTypes.Count)
                {
                    suitAttr.attrTypeObj.SetActive(true);
                    int suitType = suitTypes[i];
                    JadeDynastyEquipModel.JadeDynastySuitAttrData curAttrData = null;
                    JadeDynastyEquipModel.JadeDynastySuitAttrData nextAttrData = null;
                    equipModel.TryGetSumSuitAttr(suitType,type,out curAttrData, out nextAttrData);
                    if(isNext)
                    {
                        if(nextAttrData != null)
                        {
                            isMaxSuitLv = false;
                        }
                    }
                    else
                    {
                        if(curAttrData != null)
                        {
                            isNoneActive = false;
                        }
                    }
                    suitAttr.SetDisplay(suitType,type,isNext);
                }
                else
                {
                    suitAttr.attrTypeObj.SetActive(false);
                }
            }
            if(noneActive != null)
            {
                noneActive.SetActive(isShowNoneActive);
            }
            for(int i = 0; i < suitAttrs.Count; i++)
                if (isNext && isMaxSuitLv)
            {
                var suitAttr = suitAttrs[i];
                suitAttr.SetDisplay(i,1,null,null);
                    noneActive.SetActive(true);
                }
                else if (!isNext && isNoneActive)
                {
                    noneActive.SetActive(true);
                }
                else
                {
                    noneActive.SetActive(false);
                }
            }
        }
        [Serializable]
        public class SuitAttr
        {
            [SerializeField] public GameObject attrTypeObj;
            [SerializeField] Text suitTypeText;
            [SerializeField] List<GameObject> attrObjlist = new List<GameObject>();
            [SerializeField] List<Text> attrTextlist = new List<Text>();
            [SerializeField] Text activeText;
            [SerializeField] GameObject activeObj;
            ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
            public void SetDisplay(int suitType,int suitLv,List<int> ids,List<int> values)
            {
                if (ids == null || values == null) return;
                bool isActive = true;
            ItemTipsModel tipsModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
            JadeDynastyEquipModel equipModel { get { return ModelCenter.Instance.GetModel<JadeDynastyEquipModel>(); } }
            public void SetDisplay(int suitType,PackType type,bool isNext)
            {
                JadeDynastyEquipModel.JadeDynastySuitAttrData curAttrData = null;
                JadeDynastyEquipModel.JadeDynastySuitAttrData nextAttrData = null;
                JadeDynastyEquipModel.JadeDynastySuitAttrData suitAttrData = null;
                equipModel.TryGetSumSuitAttr(suitType,type,out curAttrData,out nextAttrData);
                suitAttrData = isNext ? nextAttrData : curAttrData;
                if(suitAttrData == null)
                {
                    attrTypeObj.SetActive(false);
                    return;
                }
                else
                {
                    attrTypeObj.SetActive(true);
                switch(suitType)
                {
                    case 0:
                        suitTypeText.text = StringUtility.Contact("诛仙守护LV." + suitLv);
                        break;
                    case 1:
                        suitTypeText.text = StringUtility.Contact("诛仙之力LV." + suitLv);
                            suitTypeText.text = StringUtility.Contact("诛仙守护LV." + suitAttrData.suitLv);
                        break;
                    case 2:
                        suitTypeText.text = StringUtility.Contact("诛仙剑阵LV." + suitLv);
                            suitTypeText.text = StringUtility.Contact("诛仙之力LV." + suitAttrData.suitLv);
                            break;
                        case 3:
                            suitTypeText.text = StringUtility.Contact("诛仙剑阵LV." + suitAttrData.suitLv);
                        break;
                }
                }
                int[] ids = suitAttrData.suitAttrConfig.attrIDList;
                int[] values = suitAttrData.suitAttrConfig.attrValueList;
                int equipPlace = equipModel.suitTypeDict[suitType][0];
                List<int> activeEquips = null;
                bool isActive = equipModel.TryGetIsActiveSuit(equipPlace,suitAttrData.suitLv,out activeEquips);
                activeObj.SetActive(!isActive);
                if(!isActive)
                {
@@ -74,8 +133,8 @@
                for (int i = 0; i < attrObjlist.Count; i++)
                {
                    var attrObj = attrObjlist[i];
                    attrObj.SetActive(i < ids.Count);
                    if(i < ids.Count)
                    attrObj.SetActive(i < ids.Length);
                    if(i < ids.Length)
                    {
                        var attrId = ids[i];
                        var attrValue = values[i];
System/JadeDynastyKnapSack/JadeDynastySuitAttrWin.cs
@@ -40,19 +40,8 @@
        private void SetDisplay()
        {
            int curSuitLv = 0;
            int nextSuitLv = 1;
            bool isMaxSuitLv = false;
            nextSuitAttrBeh.gameObject.SetActive(!isMaxSuitLv);
            if(isMaxSuitLv)
            {
                curSuitAttrBeh.SetDisplay(curSuitLv);
            }
            else
            {
                curSuitAttrBeh.SetDisplay(curSuitLv);
                nextSuitAttrBeh.SetDisplay(nextSuitLv,true);
            }
            curSuitAttrBeh.SetDisplay(PackType.rptJadeDynastyEquip);
            nextSuitAttrBeh.SetDisplay(PackType.rptJadeDynastyEquip, true);
        }
    }
}
System/KnapSack/Logic/EquipTip.cs
@@ -141,6 +141,7 @@
        }
        PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
        JadeDynastyEquipModel equipModel { get { return ModelCenter.Instance.GetModel<JadeDynastyEquipModel>(); } }
        ItemAttrData itemAttrData;
@@ -863,21 +864,8 @@
                jadeDynastySuitObj.SetActive(false);
                return;
            }
            bool isMaxSuitLv = false;
            int maxSuitLv = 1;
            int curSuitLv = itemAttrData.packType == PackType.rptJadeDynastyItem ? maxSuitLv : 0;
            bool isShowNext = !isMaxSuitLv && itemAttrData.packType == PackType.rptJadeDynastyItem;
            nextJadeDynastySuitAttr.gameObject.SetActive(isShowNext);
            if(isShowNext)
            {
                curJadeDynastySuitAttr.SetDisplay(curSuitLv);
                nextJadeDynastySuitAttr.SetDisplay(curSuitLv + 1);
            }
            else
            {
                curJadeDynastySuitAttr.SetDisplay(curSuitLv);
            }
            curJadeDynastySuitAttr.SetDisplay(PackType.rptJadeDynastyItem);
            nextJadeDynastySuitAttr.SetDisplay(PackType.rptJadeDynastyItem,true);
        }
        private void SetMidUIHeight(float midHeight)
System/KnapSack/Logic/PackSendQuestMgr.cs
@@ -543,14 +543,44 @@
        public void SendPutOnQuest(int equipPlace, int itemIndex)
        {
            EquipAttrShift(equipPlace);
            switch((RoleEquipType)equipPlace)
            {
                case RoleEquipType.JadeDynasty_Cloak:
                case RoleEquipType.JadeDynasty_FaceMask:
                case RoleEquipType.JadeDynasty_Glove1:
                case RoleEquipType.JadeDynasty_Glove2:
                case RoleEquipType.JadeDynasty_Pendant:
                case RoleEquipType.JadeDynasty_Ring1:
                case RoleEquipType.JadeDynasty_Ring2:
                case RoleEquipType.JadeDynasty_Ruyi:
                case RoleEquipType.JadeDynasty_Sword1:
                case RoleEquipType.JadeDynasty_Sword2:
                case RoleEquipType.JadeDynasty_Sword3:
                case RoleEquipType.JadeDynasty_Sword4:
                    SendPutOnJadeDynastyEquip(equipPlace,itemIndex);
                    break;
                default:
                    SendPutOnNormalEquip(equipPlace,itemIndex);
                    break;
            }
            SoundPlayer.Instance.PlayUIAudio(24);
        }
        private void SendPutOnNormalEquip(int equipPlace, int itemIndex)
        {
            C0703_tagCEquipItem putOnEquip = new C0703_tagCEquipItem();
            putOnEquip.RoleEquipType = (byte)equipPlace;
            putOnEquip.ItemIndex = (byte)itemIndex;
            GameNetSystem.Instance.SendInfo(putOnEquip);
            SoundPlayer.Instance.PlayUIAudio(24);
        }
        private void SendPutOnJadeDynastyEquip(int equipPlace, int itemIndex)
        {
            CA330_tagCMEquipZhuXianItem equipZhuXianItem = new CA330_tagCMEquipZhuXianItem();
            equipZhuXianItem.EquipIndex = (byte)equipPlace;
            equipZhuXianItem.ItemIndex = (byte)itemIndex;
            GameNetSystem.Instance.SendInfo(equipZhuXianItem);
        }
        /// <summary>
        /// 替换装备时属性转移提示
@@ -622,22 +652,68 @@
            ItemModel putOnModel = playerPack.GetItemModelByGUID(guid);
            if (putOnModel == null || putOnModel.packType != PackType.rptEquip) return;
            SinglePackModel rptItemPack = playerPack.GetSinglePackModel(PackType.rptItem);
            if (rptItemPack == null) return;
            if (rptItemPack.GetRemainGridCount() < 1)
            SinglePackModel singlePack = null;
            int remainGrid = 0;
            int equipPlace = putOnModel.itemInfo.ItemPlace;
            switch ((RoleEquipType)equipPlace)
            {
                case RoleEquipType.JadeDynasty_Cloak:
                case RoleEquipType.JadeDynasty_FaceMask:
                case RoleEquipType.JadeDynasty_Glove1:
                case RoleEquipType.JadeDynasty_Glove2:
                case RoleEquipType.JadeDynasty_Pendant:
                case RoleEquipType.JadeDynasty_Ring1:
                case RoleEquipType.JadeDynasty_Ring2:
                case RoleEquipType.JadeDynasty_Ruyi:
                case RoleEquipType.JadeDynasty_Sword1:
                case RoleEquipType.JadeDynasty_Sword2:
                case RoleEquipType.JadeDynasty_Sword3:
                case RoleEquipType.JadeDynasty_Sword4:
                    remainGrid = playerPack.GetReaminGridCount(PackType.rptJadeDynastyItem);
                    if(remainGrid < 1)
            {
                SysNotifyMgr.Instance.ShowTip("GeRen_chenxin_998371");
            }
            else
            {
                C0704_tagCUnEquipItem putOffEquip = new C0704_tagCUnEquipItem();
                putOffEquip.EquipIndex = (byte)putOnModel.itemInfo.ItemPlace;
                putOffEquip.PackIndex = (byte)rptItemPack.GetNullGridIndex();
                GameNetSystem.Instance.SendInfo(putOffEquip);
                        SendPutOffJadeDynastyEquip(equipPlace);
                        SoundPlayer.Instance.PlayUIAudio(25);
                    }
                    break;
                default:
                    singlePack = playerPack.GetSinglePackModel(PackType.rptItem);
                    remainGrid = playerPack.GetReaminGridCount(PackType.rptItem);
                    if (remainGrid < 1)
                    {
                        SysNotifyMgr.Instance.ShowTip("GeRen_chenxin_998371");
                    }
                    else
                    {
                        if(singlePack != null)
                        {
                            int gridIndex = singlePack.GetNullGridIndex();
                            SendPutOffNormalEquip(equipPlace,gridIndex);
                SoundPlayer.Instance.PlayUIAudio(25);
            }
        }
                    break;
            }
        }
        private void SendPutOffNormalEquip(int equipPlace,int itemIndex)
        {
            C0704_tagCUnEquipItem putOffEquip = new C0704_tagCUnEquipItem();
            putOffEquip.EquipIndex = (byte)equipPlace;
            putOffEquip.PackIndex = (byte)itemIndex;
            GameNetSystem.Instance.SendInfo(putOffEquip);
        }
        private void SendPutOffJadeDynastyEquip(int equipPlace)
        {
            CA331_tagCMUnEquipZhuXianItem unEquipZhuXianItem = new CA331_tagCMUnEquipZhuXianItem();
            unEquipZhuXianItem.EquipIndex = (byte)equipPlace;
            GameNetSystem.Instance.SendInfo(unEquipZhuXianItem);
        }
        #endregion
        #region 发送放入仓库请求
System/WindowBase/ModelCenter.cs
@@ -222,6 +222,8 @@
            RegisterModel<OpenServiceAchievementModel>();
            RegisterModel<FashionDressModel>();
            RegisterModel<JadeDynastyBossModel>();
            RegisterModel<JadeDynastyDecomposeModel>();
            RegisterModel<JadeDynastyEquipModel>();
            inited = true;
        }