少年修仙传客户端代码仓库
client_Wu Xijin
2019-02-20 3de702a97c97baafb6a0abafbc1abb74e1c3352b
3335 物品管理相关功能重构。
7个文件已修改
867 ■■■■ 已修改文件
System/KnapSack/ItemUseBehaviour.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ItemLogicUtility.cs 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/ItemTipsModel.cs 752 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/Logic/PlayerPackModels.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/New/BagWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/PreciousItemGetBehaviour.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/SystemSetting/SettingEffectMgr.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/KnapSack/ItemUseBehaviour.cs
@@ -63,7 +63,7 @@
                model.ReportConfirmUseItem(model.currentShowItem);
                if (itemModel != null && itemModel.packType == PackType.Item)
                {
                    ItemLogicUtility.Instance.UseItem(ItemOperateType.makeUse, itemModel.itemPlace);
                    ItemLogicUtility.Instance.UseItem(itemModel.itemPlace);
                }
            }
        }
System/KnapSack/Logic/ItemLogicUtility.cs
@@ -50,7 +50,7 @@
            {
                if (putOnLimits[0] == 1)
                {
                    CheckPutOnPlace();
                    CheckPutOnPlace(itemId);
                }
                else
                {
@@ -69,7 +69,7 @@
            int[] uselimits = config.UseCondiType;
            if (uselimits == null || uselimits.Length < 1)
            {
                CheckPutOnPlace();
                CheckPutOnPlace(itemId);
                return true;
            }
@@ -98,7 +98,7 @@
            if (wearable)
            {
                CheckPutOnPlace();
                CheckPutOnPlace(itemId);
            }
            return wearable;
@@ -334,8 +334,7 @@
                    {
                        ConfirmCancel.ShowPopConfirm(Language.Get("KnapS138"), Language.Get("KnapS139"), () =>
                        {
                            CheckPutOnPlace();
                            CheckPutOnPlace(selectedItem == null ? 0 : selectedItem.itemId);
                        });
                        PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= RefreshFreePoint;
                    }
@@ -346,26 +345,32 @@
        /// <summary>
        /// 检测穿戴的位置对仙器进行特殊处理
        /// </summary>
        private void CheckPutOnPlace()
        private void CheckPutOnPlace(int itemId)
        {
            var config = ItemConfig.Get(itemId);
            if (config == null)
            {
                return;
            }
            ItemModel putOnModel1 = null;
            ItemModel putOnModel2 = null;
            bool isSameEquip = false;
            switch ((RoleEquipType)sendItemConfig.EquipPlace)
            switch ((RoleEquipType)config.EquipPlace)
            {
                case RoleEquipType.FairyCan:
                    isSameEquip = true;
                    putOnModel1 = playerPack.GetItemModelByIndex(PackType.Equip, sendItemConfig.EquipPlace);
                    putOnModel1 = playerPack.GetItemModelByIndex(PackType.Equip, config.EquipPlace);
                    putOnModel2 = playerPack.GetItemModelByIndex(PackType.Equip, (int)RoleEquipType.FairyCan2);
                    break;
                case RoleEquipType.JadeDynasty_Glove1:
                    isSameEquip = true;
                    putOnModel1 = playerPack.GetItemModelByIndex(PackType.JadeDynastyEquip, sendItemConfig.EquipPlace);
                    putOnModel1 = playerPack.GetItemModelByIndex(PackType.JadeDynastyEquip, config.EquipPlace);
                    putOnModel2 = playerPack.GetItemModelByIndex(PackType.JadeDynastyEquip, (int)RoleEquipType.JadeDynasty_Glove2);
                    break;
                case RoleEquipType.JadeDynasty_Ring1:
                    isSameEquip = true;
                    putOnModel1 = playerPack.GetItemModelByIndex(PackType.JadeDynastyEquip, sendItemConfig.EquipPlace);
                    putOnModel1 = playerPack.GetItemModelByIndex(PackType.JadeDynastyEquip, config.EquipPlace);
                    putOnModel2 = playerPack.GetItemModelByIndex(PackType.JadeDynastyEquip, (int)RoleEquipType.JadeDynasty_Ring2);
                    break;
            }
@@ -379,7 +384,7 @@
                }
            }
            CheckSuitReplaceInfo(sendItemConfig.EquipPlace, selectedItem);
            CheckSuitReplaceInfo(config.EquipPlace, selectedItem);
        }
        public void CheckSuitReplaceInfo(int equipPlace, ItemModel item)
@@ -536,10 +541,13 @@
                    break;
            }
            if (putOnModel == null) return;
            if (putOnModel == null)
            {
                return;
            }
            Dictionary<int, EquipmentInitialization> equipStrengthDic = strengthModel._EqInfo;
            bool isPrompt = strengthModel.TheRatingPrompt(item.itemId);
            var equipStrengthDic = strengthModel._EqInfo;
            var isPrompt = strengthModel.TheRatingPrompt(item.itemId);
            if (isPrompt && !PlayerPrefs.HasKey(PlayerPackModel.StrengthAttrShift_RecordKey))
            {
                LocalSave.SetBool(PlayerPackModel.StrengthAttrShift_RecordKey, true);
@@ -567,13 +575,14 @@
                    stones = existGem ? equipData.items : null;
                    break;
            }
            int[] gemOpenLvs = packType == PackType.JadeDynastyItem ? itemTipsModel.jadeDynastyGemOpenLvs : itemTipsModel.gemOpenLvs;
            var gemOpenLvs = packType == PackType.JadeDynastyItem ? itemTipsModel.jadeDynastyGemOpenLvs : itemTipsModel.gemOpenLvs;
            if (stones != null)
            {
                int i = 0;
                for (i = 0; i < stones.Length; i++)
                {
                    if (stones[i] != 0 && sendItemConfig.LV >= gemOpenLvs[0])
                    if (stones[i] != 0 && item.config.LV >= gemOpenLvs[0])
                    {
                        SysNotifyMgr.Instance.ShowTip("SwitchEquip_Gem");
                        break;
@@ -581,13 +590,12 @@
                }
            }
            if (suitModel.IsPerfectGetSuitLv(sendItemConfig.ID, equipPlace))
            if (suitModel.IsPerfectGetSuitLv(item.itemId, equipPlace))
            {
                SysNotifyMgr.Instance.ShowTip("SwitchEquip_SuitPanel");
            }
            WashProCount washPro = equipWashModel.GetWashEquipInfo(equipPlace);
            var washPro = equipWashModel.GetWashEquipInfo(equipPlace);
            if (washPro != null)
            {
                int i = 0;
@@ -605,7 +613,7 @@
        #endregion
        #region 发送脱下装备的请求
        public void PutOffEquip(ItemOperateType btnType, string guid)
        public void PutOffEquip(string guid)
        {
            var item = playerPack.GetItemModelByGUID(guid);
            if (item == null)
@@ -684,7 +692,7 @@
        #endregion
        #region 发送放入仓库请求
        public void PutInWareHouse(ItemOperateType btnType, string guid)
        public void PutInWareHouse(string guid)
        {
            var itemModel = playerPack.GetItemModelByGUID(guid);
            if (itemModel == null)
@@ -719,8 +727,8 @@
        #region 发送使用物品请求
        public ItemModel useItemModel { get; set; }
        public void UseItem(ItemOperateType btnType, int itemIndex)
        public ItemModel useItemModel { get;  set; }
        public void UseItem(int itemIndex)
        {
            var singlePack = playerPack.GetSinglePackModel(PackType.Item);
            if (singlePack == null)
@@ -1093,10 +1101,11 @@
        #endregion
        #region 发送拆分请求
        public void OnClickSplitBtn(ItemOperateType btnType, string guid)
        public void OnClickSplitBtn(string guid)
        {
            WindowCenter.Instance.Open<SplitWin>();
        }
        public void SplitItem(string guid, int splitCount)
        {
            if (string.IsNullOrEmpty(guid))
@@ -1129,7 +1138,7 @@
        #endregion
        #region 发送上架请求 
        public void PutAwayItem(ItemOperateType btnType, string guid)
        public void PutAwayItem(string guid)
        {
            var itemModel = playerPack.GetItemModelByGUID(guid);
            if (itemModel == null || itemModel.packType != PackType.Item)
@@ -1144,7 +1153,7 @@
        #endregion
        #region 点击镶嵌按钮 
        public void GotoInlayItem(ItemOperateType btnType, string guid)
        public void GotoInlayItem(string guid)
        {
            var model = playerPack.GetItemModelByGUID(guid);
            var packType = GeneralDefine.GetPackTypeByItemType(model.config.Type);
@@ -1161,24 +1170,24 @@
        #endregion
        #region 点击合成按钮 
        public void GotoComposeItem(ItemOperateType btnType, int jumpId)
        public void GotoComposeItem(int jumpId)
        {
            WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)jumpId);
        }
        #endregion
        #region 发送出售请求 
        public void SellItem(ItemOperateType btnType, ItemAttrData attrData)
        public void SellItem( ItemAttrData attrData)
        {
            if (attrData.itemConfig.EquipPlace > 0 && attrData.itemConfig.EquipPlace <= (int)RoleEquipType.SpiritAnimal)
            {
                bool isOverdue = modelInterface.IsOverdue(attrData.guid, attrData.itemConfig.ID, attrData.useDataDict);
                bool isLimit = Math.Floor((double)attrData.itemConfig.JobLimit / 100) == PlayerDatas.Instance.baseData.Job
                    || attrData.itemConfig.JobLimit == 0 ? true : false;
                ItemModel putModel = playerPack.GetItemModelByIndex(PackType.Equip, attrData.itemConfig.EquipPlace);
                var putModel = playerPack.GetItemModelByIndex(PackType.Equip, attrData.itemConfig.EquipPlace);
                if (attrData.itemConfig.EquipPlace == (int)RoleEquipType.FairyCan)
                {
                    ItemModel fairy2Model = playerPack.GetItemModelByIndex(PackType.Equip, (int)RoleEquipType.FairyCan2);
                    var fairy2Model = playerPack.GetItemModelByIndex(PackType.Equip, (int)RoleEquipType.FairyCan2);
                    if (fairy2Model == null || putModel == null)
                    {
                        putModel = null;
@@ -1255,9 +1264,9 @@
        #endregion
        #region 发送拆解请求
        public void DismantleItem(ItemOperateType btnType, ItemAttrData attrData)
        public void DismantleItem(ItemAttrData attrData)
        {
            List<int> dismantleReturnlist = attrData.GetUseDataModel((int)ItemUseDataKey.itemDecompound);
            var dismantleReturnlist = attrData.GetUseDataModel((int)ItemUseDataKey.itemDecompound);
            int needGridCnt = 0;
            int fixedMatcnt = 0;
            int unfixedMatId = 0;
@@ -1315,44 +1324,20 @@
        #endregion
        #region 发送续费请求 
        public void RenewalItem(ItemOperateType btnType, string guid)
        public void RenewalItem(string guid)
        {
            GuardOverdueWin.guid = guid;
            WindowCenter.Instance.Open<GuardOverdueWin>();
        }
        #endregion
        #region 解锁背包格子数据
        public int OpenCount
        {
            get; private set;
        }
        public PackType packType
        {
            get; private set;
        }
        public int Index
        {
            get; private set;
        }
        public void SetExtendGirdModel(int openCount = 0, int index = -1, PackType type = PackType.Deleted)
        {
            this.OpenCount = openCount;
            this.packType = type;
            this.Index = index;
        }
        #endregion
        #region 获取仓库数据
        public void SendOpenWarehouse()
        public void RequestWarehouseData()
        {
            var openWarehouse = new CA204_tagCMOpenLongWarehouse();
            GameNetSystem.Instance.SendInfo(openWarehouse);
        }
        #endregion
    }
}
System/KnapSack/Logic/ItemTipsModel.cs
@@ -10,7 +10,7 @@
namespace Snxxz.UI
{
    [XLua.LuaCallCSharp]
    public class ItemTipsModel : Model, IBeforePlayerDataInitialize
    public class ItemTipsModel : Model, IBeforePlayerDataInitialize
    {
        FuncConfigConfig exhaustedFunc;
@@ -58,22 +58,19 @@
        public int[] randomRuneIds { get; private set; }
        public int[] PeerlessEquipIds { get; private set; } //绝世装备列表
        PlayerPackModel _playerPack;
        PlayerPackModel playerPack
        {
        PlayerPackModel playerPack {
            get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); }
        }
        StoreModel _storeModel;
        StoreModel m_storeModel
        {
        StoreModel m_storeModel {
            get { return _storeModel ?? (_storeModel = ModelCenter.Instance.GetModel<StoreModel>()); }
        }
        PackModelInterface _modelInterface;
        PackModelInterface modelInterface
        {
        PackModelInterface modelInterface {
            get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel<PackModelInterface>()); }
        }
        FashionDressModel fashionDress { get { return ModelCenter.Instance.GetModel<FashionDressModel>(); } }
@@ -86,10 +83,10 @@
            exhaustedFunc = FuncConfigConfig.Get("OutOfPrintValue");
            exhaustedAttrFormula = new Dictionary<int, string>();
            JsonData exhaustedJsonData = JsonMapper.ToObject(exhaustedFunc.Numerical2);
            foreach(var key in exhaustedJsonData.Keys)
            foreach (var key in exhaustedJsonData.Keys)
            {
                int attrId = int.Parse(key);
                exhaustedAttrFormula.Add(attrId,exhaustedJsonData[key].ToString());
                exhaustedAttrFormula.Add(attrId, exhaustedJsonData[key].ToString());
            }
            FuncConfigConfig OutOfPrintValueDes = FuncConfigConfig.Get("OutOfPrintValueDes");
@@ -326,14 +323,14 @@
            foreach (var lv in wingsLegendAttrValueData.Keys)
            {
                Dictionary<int, List<int>> attrValueDic = new Dictionary<int, List<int>>();
                wingsLegendAttrValuePreviewDict.Add(int.Parse(lv.ToString()),attrValueDic);
                foreach(var attrId in wingsLegendAttrValueData[lv].Keys)
                wingsLegendAttrValuePreviewDict.Add(int.Parse(lv.ToString()), attrValueDic);
                foreach (var attrId in wingsLegendAttrValueData[lv].Keys)
                {
                    List<int> attrValuelist = new List<int>();
                    attrValueDic.Add(int.Parse(attrId.ToString()),attrValuelist);
                    if(wingsLegendAttrValueData[lv][attrId].IsArray)
                    attrValueDic.Add(int.Parse(attrId.ToString()), attrValuelist);
                    if (wingsLegendAttrValueData[lv][attrId].IsArray)
                    {
                        for(int i = 0;i < wingsLegendAttrValueData[lv][attrId].Count; i++)
                        for (int i = 0; i < wingsLegendAttrValueData[lv][attrId].Count; i++)
                        {
                            attrValuelist.Add(int.Parse(wingsLegendAttrValueData[lv][attrId][i].ToString()));
                        }
@@ -383,17 +380,17 @@
            unlockPetDict = new Dictionary<int, PetInfoConfig>();
            petSkillDict.Clear();
            List<PetInfoConfig> petInfolist = PetInfoConfig.GetValues();
            for(int i = 0;i < petInfolist.Count; i++)
            for (int i = 0; i < petInfolist.Count; i++)
            {
                if(!unlockPetDict.ContainsKey(petInfolist[i].UnLockNeedItemID))
                if (!unlockPetDict.ContainsKey(petInfolist[i].UnLockNeedItemID))
                {
                    unlockPetDict.Add(petInfolist[i].UnLockNeedItemID,petInfolist[i]);
                    unlockPetDict.Add(petInfolist[i].UnLockNeedItemID, petInfolist[i]);
                }
                Dictionary<int, int> skillDict = new Dictionary<int, int>();
                petSkillDict.Add(petInfolist[i].ID,skillDict);
                petSkillDict.Add(petInfolist[i].ID, skillDict);
                int[] skillIds = petInfolist[i].SkillID;
                int[] skillUnlocks = petInfolist[i].SkillUnLock;
                if(skillIds != null)
                if (skillIds != null)
                {
                    for (int j = 0; j < skillIds.Length; j++)
                    {
@@ -404,22 +401,22 @@
            unlockMountDict = new Dictionary<int, HorseConfig>();
            mountSkillDict.Clear();
            List<HorseConfig> horselist = HorseConfig.GetValues();
            for(int i = 0; i < horselist.Count; i++)
            for (int i = 0; i < horselist.Count; i++)
            {
                if (!unlockMountDict.ContainsKey(horselist[i].UnlockItemID))
                {
                    unlockMountDict.Add(horselist[i].UnlockItemID, horselist[i]);
                }
                Dictionary<int,List<int>> skillDict = new Dictionary<int, List<int>>();
                Dictionary<int, List<int>> skillDict = new Dictionary<int, List<int>>();
                mountSkillDict.Add(horselist[i].HorseID, skillDict);
                List<HorseUpConfig> mountlist = HorseUpConfig.GetMountlistById(horselist[i].HorseID);
                if(mountlist != null)
                if (mountlist != null)
                {
                    for(int j = 0; j < mountlist.Count; j++)
                    for (int j = 0; j < mountlist.Count; j++)
                    {
                        int[] skills = mountlist[j].SkillID;
                        List<int> skilllist = new List<int>();
                        if(skills != null)
                        if (skills != null)
                        {
                            for (int k = 0; k < skills.Length; k++)
                            {
@@ -444,9 +441,9 @@
            if (qualitys != null && qualityNames != null
                && qualitys.Length == qualityNames.Length)
            {
                for(int i = 0; i < qualitys.Length; i++)
                for (int i = 0; i < qualitys.Length; i++)
                {
                    petAndMountQualityDict.Add(qualitys[i],qualityNames[i]);
                    petAndMountQualityDict.Add(qualitys[i], qualityNames[i]);
                }
            }
@@ -456,7 +453,7 @@
        public void OnBeforePlayerDataInitialize()
        {
        }
        public override void UnInit()
@@ -464,37 +461,37 @@
        }
        #region 解析本地数据
        public Dictionary<string,List<int>> atkSpeedColorDict { get; private set; }
        public Dictionary<string, List<int>> atkSpeedColorDict { get; private set; }
        private void ParseFuncConfig()
        {
            atkSpeedColorDict = new Dictionary<string, List<int>>();
            var equipYPAtkSpeedColor = FuncConfigConfig.Get("EquipYPAtkSpeedColor");
            JsonData atkSpeedData = JsonMapper.ToObject(equipYPAtkSpeedColor.Numerical1);
            foreach(var color in atkSpeedData.Keys)
            foreach (var color in atkSpeedData.Keys)
            {
                List<int> list = new List<int>();
                atkSpeedColorDict.Add(color,list);
                if(atkSpeedData[color].IsArray)
                atkSpeedColorDict.Add(color, list);
                if (atkSpeedData[color].IsArray)
                {
                    for(int i = 0; i < atkSpeedData[color].Count; i++)
                    for (int i = 0; i < atkSpeedData[color].Count; i++)
                    {
                        int range = 0;
                        int.TryParse(atkSpeedData[color][i].ToString(),out range);
                        int.TryParse(atkSpeedData[color][i].ToString(), out range);
                        list.Add(range);
                    }
                }
            }
        }
        public bool TryGetAtkSpeedColor(int atkSpeed,out string color)
        public bool TryGetAtkSpeedColor(int atkSpeed, out string color)
        {
            color = string.Empty;
            foreach(var key in atkSpeedColorDict.Keys)
            foreach (var key in atkSpeedColorDict.Keys)
            {
                var rangelist = atkSpeedColorDict[key];
                if(rangelist.Count > 1)
                if (rangelist.Count > 1)
                {
                    if(atkSpeed >= rangelist[0] && atkSpeed <= rangelist[1])
                    if (atkSpeed >= rangelist[0] && atkSpeed <= rangelist[1])
                    {
                        color = key;
                        return true;
@@ -522,44 +519,44 @@
            jadeDynastyLegendValueDict = new Dictionary<int, int>();
            var legendAttrColor = FuncConfigConfig.Get("LegendAttrColor");
            JsonData colorData = JsonMapper.ToObject(legendAttrColor.Numerical4);
            foreach(var key in colorData.Keys)
            foreach (var key in colorData.Keys)
            {
                int colorType = int.Parse(key);
                string color = colorData[key].ToString();
                jadeDynastyColorDict.Add(colorType,color);
                jadeDynastyColorDict.Add(colorType, color);
            }
            JsonData legendColorData = JsonMapper.ToObject(legendAttrColor.Numerical3);
            foreach(var key in legendColorData.Keys)
            foreach (var key in legendColorData.Keys)
            {
                int attrId = int.Parse(key);
                var colorDict = new Dictionary<int, int>();
                jadeDynastyLegendColorDict.Add(attrId,colorDict);
                jadeDynastyLegendColorDict.Add(attrId, colorDict);
                var attrValueData = legendColorData[key];
                foreach(var value in attrValueData.Keys)
                foreach (var value in attrValueData.Keys)
                {
                    int attrValue = int.Parse(value);
                    int colorType = int.Parse(attrValueData[value].ToString());
                    colorDict.Add(attrValue,colorType);
                    colorDict.Add(attrValue, colorType);
                }
            }
            var legendAttrRandRule = FuncConfigConfig.Get("LegendAttrRandRule");
            JsonData legendCountData = JsonMapper.ToObject(legendAttrRandRule.Numerical3);
            foreach(var key in legendCountData.Keys)
            foreach (var key in legendCountData.Keys)
            {
                var rangeData = legendCountData[key];
                int equipLv = int.Parse(key);
                foreach(var star in rangeData.Keys)
                foreach (var star in rangeData.Keys)
                {
                    var countData = rangeData[star];
                    int equipStar = int.Parse(star);
                    string guid = StringUtility.Contact(equipLv,equipStar);
                    string guid = StringUtility.Contact(equipLv, equipStar);
                    List<int> list = new List<int>();
                    jadeDynastyLegendCountDict.Add(guid,list);
                    if(countData.IsArray)
                    jadeDynastyLegendCountDict.Add(guid, list);
                    if (countData.IsArray)
                    {
                        for(int i = 0; i < countData.Count; i++)
                        for (int i = 0; i < countData.Count; i++)
                        {
                            int count = int.Parse(countData[i].ToString());
                            list.Add(count);
@@ -569,15 +566,15 @@
            }
            JsonData legendGroupData = JsonMapper.ToObject(legendAttrRandRule.Numerical2);
            foreach(var type in legendGroupData.Keys)
            foreach (var type in legendGroupData.Keys)
            {
                var groupData = legendGroupData[type];
                int itemType = int.Parse(type);
                List<int> list = new List<int>();
                jadeDynastyLegendGroupDict.Add(itemType,list);
                if(groupData.IsArray)
                jadeDynastyLegendGroupDict.Add(itemType, list);
                if (groupData.IsArray)
                {
                    for(int i = 0; i < groupData.Count; i++)
                    for (int i = 0; i < groupData.Count; i++)
                    {
                        int groupType = int.Parse(groupData[i].ToString());
                        list.Add(groupType);
@@ -586,7 +583,7 @@
            }
            JsonData legendIdData = JsonMapper.ToObject(legendAttrRandRule.Numerical1);
            foreach(var key in legendIdData.Keys)
            foreach (var key in legendIdData.Keys)
            {
                var attrIdData = legendIdData[key];
                int groupId = int.Parse(key);
@@ -603,19 +600,19 @@
            }
            JsonData legendValueData = JsonMapper.ToObject(legendAttrRandRule.Numerical4);
            foreach(var key in legendValueData.Keys)
            foreach (var key in legendValueData.Keys)
            {
                int attrId = int.Parse(key);
                var valueData = legendValueData[key];
                if(valueData.IsArray && valueData.Count > 0)
                if (valueData.IsArray && valueData.Count > 0)
                {
                    int attrValue = int.Parse(valueData[0].ToString());
                    jadeDynastyLegendValueDict.Add(attrId,attrValue);
                    jadeDynastyLegendValueDict.Add(attrId, attrValue);
                }
            }
        }
        public bool TryGetJadeDynastyLegendCount(int itemId,out int minCount,out int maxCount)
        public bool TryGetJadeDynastyLegendCount(int itemId, out int minCount, out int maxCount)
        {
            minCount = 0;
            maxCount = 0;
@@ -624,17 +621,17 @@
            int equipLv = config.LV;
            int equipStar = config.StarLevel;
            string guid = StringUtility.Contact(equipLv,equipStar);
            if(jadeDynastyLegendCountDict.ContainsKey(guid))
            string guid = StringUtility.Contact(equipLv, equipStar);
            if (jadeDynastyLegendCountDict.ContainsKey(guid))
            {
                var list = jadeDynastyLegendCountDict[guid];
                if(list.Count > 1)
                if (list.Count > 1)
                {
                    minCount = list[0];
                    maxCount = list[1];
                    return true;
                }
                else if(list.Count > 0)
                else if (list.Count > 0)
                {
                    maxCount = list[0];
                    return true;
@@ -643,44 +640,44 @@
            return false;
        }
        public bool TryGetJadeDynastyLegendAttr(int itemId,out Dictionary<int,int> attrDict)
        public bool TryGetJadeDynastyLegendAttr(int itemId, out Dictionary<int, int> attrDict)
        {
            attrDict = new Dictionary<int, int>();
            var config = ItemConfig.Get(itemId);
            if (config == null) return false;
            if(jadeDynastyLegendGroupDict.ContainsKey(config.Type))
            if (jadeDynastyLegendGroupDict.ContainsKey(config.Type))
            {
                var grouplist = jadeDynastyLegendGroupDict[config.Type];
                foreach(var groupId in grouplist)
                foreach (var groupId in grouplist)
                {
                    if(jadeDynastyLegendIdDict.ContainsKey(groupId))
                    if (jadeDynastyLegendIdDict.ContainsKey(groupId))
                    {
                        var attrIds = jadeDynastyLegendIdDict[groupId];
                        foreach(var attrId in attrIds)
                        foreach (var attrId in attrIds)
                        {
                            int attrValue = 0;
                            if(jadeDynastyLegendValueDict.ContainsKey(attrId))
                            if (jadeDynastyLegendValueDict.ContainsKey(attrId))
                            {
                                attrValue = jadeDynastyLegendValueDict[attrId];
                            }
                            attrDict.Add(attrId,attrValue);
                            attrDict.Add(attrId, attrValue);
                        }
                        return true;
                    }
                }
            }
            return false;
        }
        public bool TryGetJadeDyanastyLegendColorType(int attrId,int attrValue,out int colorType)
        public bool TryGetJadeDyanastyLegendColorType(int attrId, int attrValue, out int colorType)
        {
            colorType = 0;
            if(jadeDynastyLegendColorDict.ContainsKey(attrId))
            if (jadeDynastyLegendColorDict.ContainsKey(attrId))
            {
                var colorRanges = jadeDynastyLegendColorDict[attrId];
                foreach(var key in colorRanges.Keys)
                foreach (var key in colorRanges.Keys)
                {
                    if (attrValue <= key)
                    {
@@ -692,16 +689,16 @@
            return false;
        }
        public bool TryGetJadeDyanastyLegendColor(int colorType,out string color)
        public bool TryGetJadeDyanastyLegendColor(int colorType, out string color)
        {
            color = string.Empty;
            return jadeDynastyColorDict.TryGetValue(colorType,out color);
            return jadeDynastyColorDict.TryGetValue(colorType, out color);
        }
        public int GetJadeDynastyLegendValue(int attrId)
        {
            int attrValue = 0;
            jadeDynastyLegendValueDict.TryGetValue(attrId,out attrValue);
            jadeDynastyLegendValueDict.TryGetValue(attrId, out attrValue);
            return attrValue;
        }
        #endregion
@@ -713,7 +710,7 @@
        /// </summary>
        /// <param name="refresh"></param>
        private void RefreshOfflinePluginTime(PlayerDataRefresh refresh)
        {
        {
            if (refresh != PlayerDataRefresh.HappyPoint) return;
            HangUpSetModel.Instance.SetOfflinePluginTime(m_storeModel.GetTCBPlayerData(refresh));
@@ -725,7 +722,7 @@
        /// <summary>
        ///从背包类型中得到物品展示
        /// </summary>
        public void SetItemTipsModel(PackType type,string guid,bool isShowUINow = true,bool isCompare = false,ItemTipChildType childType = ItemTipChildType.Normal)
        public void SetItemTipsModel(PackType type, string guid, bool isShowUINow = true, bool isCompare = false, ItemTipChildType childType = ItemTipChildType.Normal)
        {
            curAttrData = null;
            compareAttrData = null;
@@ -734,13 +731,13 @@
            ItemModel itemModel = playerPack.GetItemModelByGUID(guid);
            if (itemModel != null)
            {
                curAttrData = new ItemAttrData(itemModel.itemId,false, (ulong)itemModel.count
                    , itemModel.itemPlace, itemModel.isBind,isCompare
                    , type, guid, ConfigParse.Analysis(itemModel.itemInfo.UserData),childType);
                curAttrData = new ItemAttrData(itemModel.itemId, false, (ulong)itemModel.count
                    , itemModel.itemPlace, itemModel.isBind, isCompare
                    , type, guid, ConfigParse.Analysis(itemModel.itemInfo.UserData), childType);
                if (isCompare)
                {
                    switch(type)
                    switch (type)
                    {
                        case PackType.DogzItem:
                            SetCompareAttrData(PackType.DogzEquip, itemModel.config.EquipPlace);
@@ -755,7 +752,7 @@
                }
            }
            if(isShowUINow)
            if (isShowUINow)
            {
                ShowUICtrl();
            }
@@ -765,7 +762,7 @@
        /// 预览物品信息
        /// </summary>
        /// <param name="itemAttrData"></param>
        public void SetItemTipsModel(ItemAttrData itemAttrData,bool isShowUINow = true)
        public void SetItemTipsModel(ItemAttrData itemAttrData, bool isShowUINow = true)
        {
            compareAttrData = null;
            curTips = null;
@@ -795,11 +792,11 @@
            }
        }
        public void SetCurrentAttrData(ItemModel itemModel,bool isCompare )
        public void SetCurrentAttrData(ItemModel itemModel, bool isCompare)
        {
            curAttrData = new ItemAttrData(itemModel.itemId, false, (ulong)itemModel.count
                  , itemModel.itemPlace, itemModel.isBind, isCompare
                  , itemModel.packType, itemModel.guid, ConfigParse.Analysis(itemModel.itemInfo.UserData),ItemTipChildType.Normal);
                  , itemModel.packType, itemModel.guid, ConfigParse.Analysis(itemModel.itemInfo.UserData), ItemTipChildType.Normal);
        }
@@ -810,24 +807,24 @@
                  , itemModel.packType, itemModel.guid, ConfigParse.Analysis(itemModel.itemInfo.UserData));
        }
        private void SetCompareAttrData(PackType type,int equipPlace)
        private void SetCompareAttrData(PackType type, int equipPlace)
        {
            compareAttrData = null;
            ItemModel itemModel = null;
            switch (type)
            {
                case PackType.Equip:
                     itemModel = playerPack.GetItemModelByIndex(type, equipPlace);
                    itemModel = playerPack.GetItemModelByIndex(type, equipPlace);
                    break;
                case PackType.DogzEquip:
                    var dogzModel = ModelCenter.Instance.GetModel<DogzModel>();
                    dogzModel.TryGetDogzEquip(dogzModel.presentSelectDogz,equipPlace,out itemModel);
                    dogzModel.TryGetDogzEquip(dogzModel.presentSelectDogz, equipPlace, out itemModel);
                    break;
                case PackType.JadeDynastyEquip:
                    itemModel = playerPack.GetItemModelByIndex(type, equipPlace);
                    break;
            }
            if (itemModel == null) return;
            ItemModel fairyModel2 = null;
@@ -890,7 +887,7 @@
            {
                compareAttrData = new ItemAttrData(itemModel.itemId, false, (ulong)itemModel.count
                  , itemModel.itemPlace, itemModel.isBind, true
                  , type,itemModel.guid, ConfigParse.Analysis(itemModel.itemInfo.UserData));
                  , type, itemModel.guid, ConfigParse.Analysis(itemModel.itemInfo.UserData));
            }
        }
@@ -899,10 +896,10 @@
        {
            if (curAttrData == null) return;
            #if UNITY_EDITOR
            string itemInfo = StringUtility.Contact("物品ID:",curAttrData.itemId,"物品名称:",curAttrData.itemConfig.ItemName);
#if UNITY_EDITOR
            string itemInfo = StringUtility.Contact("物品ID:", curAttrData.itemId, "物品名称:", curAttrData.itemConfig.ItemName);
            DebugEx.Log(itemInfo);
            #endif
#endif
            switch (curAttrData.winType)
            {
@@ -1041,7 +1038,7 @@
            var horseModel = ModelCenter.Instance.GetModel<PlayerMountDatas>();
            var petmodel = ModelCenter.Instance.GetModel<PlayerPetDatas>();
            bool isOverdue = modelInterface.IsOverdue(attrData.guid,attrData.itemId,attrData.useDataDict);
            bool isOverdue = modelInterface.IsOverdue(attrData.guid, attrData.itemId, attrData.useDataDict);
            HorseConfig horseConfig = null;
            PetInfoConfig petInfo = null;
            switch (attrData.itemConfig.Type)
@@ -1052,7 +1049,7 @@
                    {
                        if (attrData.itemConfig.CanSell == 1)
                        {
                            attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(ItemOperateType.sell, attrData); });
                            attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem( attrData); });
                        }
                    }
                    break;
@@ -1062,7 +1059,7 @@
                    {
                        if (attrData.itemConfig.CanSell == 1)
                        {
                            attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(ItemOperateType.sell, attrData); });
                            attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(attrData); });
                        }
                    }
                    break;
@@ -1072,7 +1069,7 @@
                    {
                        if (attrData.itemConfig.CanSell == 1)
                        {
                            attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(ItemOperateType.sell, attrData); });
                            attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(attrData); });
                        }
                    }
                    break;
@@ -1082,14 +1079,14 @@
                    {
                        if (attrData.itemConfig.CanSell == 1)
                        {
                            attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(ItemOperateType.sell, attrData); });
                            attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(attrData); });
                        }
                    }
                    break;
                default:
                    if (attrData.itemConfig.CanSell == 1)
                    {
                        attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(ItemOperateType.sell, attrData); });
                        attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(attrData); });
                    }
                    break;
            }
@@ -1097,50 +1094,51 @@
            List<int> dismantleReturnlist = attrData.GetUseDataModel((int)ItemUseDataKey.itemDecompound);
            if (dismantleReturnlist != null && dismantleReturnlist.Count > 0)
            {
                attrData.SetTipsFuncBtn(ItemOperateType.dismantle, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.DismantleItem(ItemOperateType.dismantle, attrData); });
                attrData.SetTipsFuncBtn(ItemOperateType.dismantle, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.DismantleItem( attrData); });
            }
            if (!isOverdue)
            {
                if(attrData.itemConfig.JumpComposeCondi != null && attrData.itemConfig.JumpComposeCondi.Length > 0)
                if (attrData.itemConfig.JumpComposeCondi != null && attrData.itemConfig.JumpComposeCondi.Length > 0)
                {
                    attrData.SetTipsFuncBtn(ItemOperateType.compose, (ItemWinBtnType, ItemAttrData) => {
                    attrData.SetTipsFuncBtn(ItemOperateType.compose, (ItemWinBtnType, ItemAttrData) =>
                    {
                        int jumpId = 0;
                        bool isUnlock = ModelCenter.Instance.GetModel<ComposeWinModel>().CheckComposeItemById(attrData.itemId,out jumpId);
                        bool isUnlock = ModelCenter.Instance.GetModel<ComposeWinModel>().CheckComposeItemById(attrData.itemId, out jumpId);
                        if (isUnlock)
                        {
                            ItemLogicUtility.Instance.GotoComposeItem(ItemOperateType.compose,jumpId);
                            ItemLogicUtility.Instance.GotoComposeItem(jumpId);
                        }
                    });
                }
                if (attrData.itemConfig.Type == 25 && attrData.itemConfig.Effect1 == 225)
                {
                    attrData.SetTipsFuncBtn(ItemOperateType.inlay, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.GotoInlayItem(ItemOperateType.inlay, attrData.guid); });
                    attrData.SetTipsFuncBtn(ItemOperateType.inlay, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.GotoInlayItem(attrData.guid); });
                }
                if (attrData.itemConfig.CanTrade == 1 && attrData.isBind == 0)
                {
                    attrData.SetTipsFuncBtn(ItemOperateType.putAway, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.PutAwayItem(ItemOperateType.putAway, attrData.guid); });
                    attrData.SetTipsFuncBtn(ItemOperateType.putAway, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.PutAwayItem(attrData.guid); });
                }
                if((ItemType)attrData.itemConfig.Type == ItemType.WingsMat)
                if ((ItemType)attrData.itemConfig.Type == ItemType.WingsMat)
                {
                    attrData.SetTipsFuncBtn(ItemOperateType.refine, (ItemWinBtnType, ItemAttrData) =>
                    {
                       // BoxGetItemModel.Instance.SetModel(attrData.guid);
                       WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.StrengthFunc3);
                        // BoxGetItemModel.Instance.SetModel(attrData.guid);
                        WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.StrengthFunc3);
                    });
                }
            }
            if (attrData.count > 1)
            {
                attrData.SetTipsFuncBtn(ItemOperateType.split, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.OnClickSplitBtn(ItemOperateType.split, attrData.guid); });
                attrData.SetTipsFuncBtn(ItemOperateType.split, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.OnClickSplitBtn(attrData.guid); });
            }
            if(!isOverdue)
            if (!isOverdue)
            {
                switch (attrData.winType)
                {
@@ -1153,7 +1151,7 @@
                if (attrData.itemConfig.UseTag == 1)
                {
                    attrData.SetTipsFuncBtn(ItemOperateType.makeUse, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.UseItem(ItemOperateType.makeUse, attrData.index); });
                    attrData.SetTipsFuncBtn(ItemOperateType.makeUse, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.UseItem(attrData.index); });
                }
            }
@@ -1161,9 +1159,9 @@
            {
                if (ItemRenewalIds[i] == attrData.itemId)
                {
                    if(isOverdue)
                    if (isOverdue)
                    {
                        attrData.SetTipsFuncBtn(ItemOperateType.renewal, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.RenewalItem(ItemOperateType.renewal, attrData.guid); });
                        attrData.SetTipsFuncBtn(ItemOperateType.renewal, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.RenewalItem(attrData.guid); });
                    }
                }
            }
@@ -1172,7 +1170,7 @@
            {
                if (tryPutOnEquipIds[i] == attrData.itemId)
                {
                    if(PlayerDatas.Instance.baseData.coinPointTotal <= 0)
                    if (PlayerDatas.Instance.baseData.coinPointTotal <= 0)
                    {
                        attrData.SetTipsFuncBtn(ItemOperateType.renewal, (ItemWinBtnType, ItemAttrData) => { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.FirstRecharge); });
                    }
@@ -1188,7 +1186,7 @@
        {
            if (attrData == null) return;
            attrData.SetTipsFuncBtn(ItemOperateType.putOut, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.TakeOutFromWarehouse(ItemOperateType.putOut,attrData.guid); });
            attrData.SetTipsFuncBtn(ItemOperateType.putOut, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.TakeOutFromWarehouse(ItemOperateType.putOut, attrData.guid); });
        }
@@ -1198,20 +1196,21 @@
            if (attrData.itemConfig.CanSell == 1)
            {
                attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(ItemOperateType.sell, attrData); });
                attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(attrData); });
            }
            switch (attrData.winType)
            {
                case ItemWinType.equipWin:
                    attrData.SetTipsFuncBtn(ItemOperateType.putOn, (ItemWinBtnType, ItemAttrData) => {
                        if(dogzModel.CheckIsPutOn(attrData.itemId))
                    attrData.SetTipsFuncBtn(ItemOperateType.putOn, (ItemWinBtnType, ItemAttrData) =>
                    {
                        if (dogzModel.CheckIsPutOn(attrData.itemId))
                        {
                            List<int> indexlist = new List<int>();
                            indexlist.Add(attrData.index);
                            dogzModel.SendPutOnEquip(indexlist);
                        }
                    });
                    break;
            }
@@ -1221,17 +1220,19 @@
        {
            if (attrData == null) return;
            attrData.SetTipsFuncBtn(ItemOperateType.putOff, (ItemWinBtnType, ItemAttrData) => {
               dogzModel.CheckPutOff(dogzModel.GetDogzEquipPlaceByIndex(attrData.index));
            attrData.SetTipsFuncBtn(ItemOperateType.putOff, (ItemWinBtnType, ItemAttrData) =>
            {
                dogzModel.CheckPutOff(dogzModel.GetDogzEquipPlaceByIndex(attrData.index));
            });
            if(dogzModel.TryGetAssistDogzState(dogzModel.presentSelectDogz))
            if (dogzModel.TryGetAssistDogzState(dogzModel.presentSelectDogz))
            {
                attrData.SetTipsFuncBtn(ItemOperateType.strength, (ItemWinBtnType, ItemAttrData) => {
                attrData.SetTipsFuncBtn(ItemOperateType.strength, (ItemWinBtnType, ItemAttrData) =>
                {
                    dogzModel.OpenDogzFuncEvent(1, attrData.index);
                });
            }
        }
        /// <summary>
@@ -1242,8 +1243,9 @@
        {
            if (attrData == null) return;
            attrData.SetTipsFuncBtn(ItemOperateType.putIn, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.PutInWareHouse(ItemOperateType.putIn, attrData.guid); });
            attrData.SetTipsFuncBtn(ItemOperateType.putIn,
                (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.PutInWareHouse(attrData.guid); }
                );
        }
        /// <summary>
@@ -1252,24 +1254,30 @@
        /// <param name="attrData"></param>
        public void SetPutOnTipsBtn(ItemAttrData attrData)
        {
            if (attrData == null) return;
            if (attrData == null)
            {
                return;
            }
            RoleEquipType equipType = (RoleEquipType)attrData.itemConfig.EquipPlace;
            if(equipType == RoleEquipType.Wing)
            if (equipType == RoleEquipType.Wing)
            {
                attrData.SetTipsFuncBtn(ItemOperateType.refine, (ItemWinBtnType, ItemAttrData) => {
                attrData.SetTipsFuncBtn(ItemOperateType.refine, (ItemWinBtnType, ItemAttrData) =>
                {
                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.StrengthFunc3);
                });
            }
            else if(equipType != RoleEquipType.SpiritAnimal)
            else if (equipType != RoleEquipType.SpiritAnimal)
            {
                attrData.SetTipsFuncBtn(ItemOperateType.strength, (ItemWinBtnType, ItemAttrData) => {
                attrData.SetTipsFuncBtn(ItemOperateType.strength, (ItemWinBtnType, ItemAttrData) =>
                {
                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.StrengthFunc1);
                });
            }
            attrData.SetTipsFuncBtn(ItemOperateType.putOff,(ItemWinBtnType,ItemAttrData) => {
                ItemLogicUtility.Instance.PutOffEquip(ItemOperateType.putOff, attrData.guid);
            attrData.SetTipsFuncBtn(ItemOperateType.putOff, (ItemWinBtnType, ItemAttrData) =>
            {
                ItemLogicUtility.Instance.PutOffEquip(attrData.guid);
            });
            for (int i = 0; i < tryPutOnEquipIds.Length; i++)
@@ -1291,13 +1299,8 @@
            bool isOverdue = modelInterface.IsOverdue(attrData.guid, attrData.itemId, attrData.useDataDict);
            if (attrData.itemConfig.CanSell == 1)
            {
                attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(ItemOperateType.sell, attrData); });
                attrData.SetTipsFuncBtn(ItemOperateType.sell, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.SellItem(attrData); });
            }
            //List<int> dismantleReturnlist = attrData.GetUseDataModel((int)ItemUseDataKey.Def_IudetItemDecompound);
            //if (dismantleReturnlist != null && dismantleReturnlist.Count > 0)
            //{
            //    attrData.SetTipsFuncBtn(ItemWinBtnType.dismantle, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendDismantleQuest(ItemWinBtnType.dismantle, attrData); });
            //}
            if (!isOverdue)
            {
@@ -1309,26 +1312,15 @@
                        bool isUnlock = ModelCenter.Instance.GetModel<ComposeWinModel>().CheckComposeItemById(attrData.itemId, out jumpId);
                        if (isUnlock)
                        {
                            ItemLogicUtility.Instance.GotoComposeItem(ItemOperateType.compose, jumpId);
                            ItemLogicUtility.Instance.GotoComposeItem(jumpId);
                        }
                    });
                }
                if (attrData.itemConfig.Effect1 == 225)
                {
                    attrData.SetTipsFuncBtn(ItemOperateType.inlay, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.GotoInlayItem(ItemOperateType.inlay, attrData.guid); });
                    attrData.SetTipsFuncBtn(ItemOperateType.inlay, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.GotoInlayItem(attrData.guid); });
                }
                //    if (attrData.itemConfig.CanTrade == 1 && attrData.isBind == 0)
                //    {
                //        attrData.SetTipsFuncBtn(ItemWinBtnType.putAway, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendPutAwayQuest(ItemWinBtnType.putAway, attrData.guid); });
                //    }
                //}
                //if (attrData.count > 1)
                //{
                //    attrData.SetTipsFuncBtn(ItemWinBtnType.split, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.OnClickSplitBtn(ItemWinBtnType.split, attrData.guid); });
                //}
                if (!isOverdue)
                {
@@ -1338,45 +1330,22 @@
                            attrData.SetTipsFuncBtn(ItemOperateType.putOn, (ItemWinBtnType, ItemAttrData) => { ItemLogicUtility.Instance.PutOnItem(ItemOperateType.putOn, attrData.guid); });
                            break;
                    }
                    //if (attrData.itemConfig.UseTag == 1)
                    //{
                    //    attrData.SetTipsFuncBtn(ItemWinBtnType.makeUse, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendUseItemQuest(ItemWinBtnType.makeUse, attrData.index); });
                    //}
                }
                //for (int i = 0; i < ItemRenewalIds.Length; i++)
                //{
                //    if (ItemRenewalIds[i] == attrData.itemId)
                //    {
                //        if (isOverdue)
                //        {
                //            attrData.SetTipsFuncBtn(ItemWinBtnType.renewal, (ItemWinBtnType, ItemAttrData) => { PackSendQuestMgr.Instance.SendRenewalQuest(ItemWinBtnType.renewal, attrData.guid); });
                //        }
                //    }
                //}
                //for (int i = 0; i < tryPutOnEquipIds.Length; i++)
                //{
                //    if (tryPutOnEquipIds[i] == attrData.itemId)
                //    {
                //        if (PlayerDatas.Instance.baseData.coinPointTotal <= 0)
                //        {
                //            attrData.SetTipsFuncBtn(ItemWinBtnType.renewal, (ItemWinBtnType, ItemAttrData) => { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.FirstRecharge); });
                //        }
                //    }
                //}
            }
        }
        public void SetJadeDynastyPutOnTipsBtn(ItemAttrData attrData)
        {
            if (attrData == null) return;
            if (attrData == null)
            {
                return;
            }
            RoleEquipType equipType = (RoleEquipType)attrData.itemConfig.EquipPlace;
            attrData.SetTipsFuncBtn(ItemOperateType.putOff, (ItemWinBtnType, ItemAttrData) => {
                ItemLogicUtility.Instance.PutOffEquip(ItemOperateType.putOff, attrData.guid);
            var equipType = (RoleEquipType)attrData.itemConfig.EquipPlace;
            attrData.SetTipsFuncBtn(ItemOperateType.putOff, (ItemWinBtnType, ItemAttrData) =>
            {
                ItemLogicUtility.Instance.PutOffEquip(attrData.guid);
            });
        }
        #endregion
@@ -1386,18 +1355,19 @@
        public List<GetItemWaysConfig> GetWaysList(ItemAttrData attrData)
        {
            getWayslist.Clear();
            if (attrData == null) return getWayslist;
            int[] waysArray = attrData.itemConfig.GetWay;
            if (waysArray != null)
            if (attrData != null)
            {
                int i = 0;
                for (i = 0; i < waysArray.Length; i++)
                int[] waysArray = attrData.itemConfig.GetWay;
                if (waysArray != null)
                {
                    GetItemWaysConfig itemWaysModel = GetItemWaysConfig.Get(waysArray[i]);
                    if (itemWaysModel != null)
                    int i = 0;
                    for (i = 0; i < waysArray.Length; i++)
                    {
                        getWayslist.Add(itemWaysModel);
                        var config = GetItemWaysConfig.Get(waysArray[i]);
                        if (config != null)
                        {
                            getWayslist.Add(config);
                        }
                    }
                }
            }
@@ -1472,10 +1442,10 @@
                            }
                        }
                        if(key == (int)AttrEnum.ATKSPEED)
                        if (key == (int)AttrEnum.ATKSPEED)
                        {
                            int attrValue = GetProValueType(playerProModel.ISPercentage, itemEffectDict[key]);
                            otherStr = SetAttrColor(otherStr,attrValue,attrData.itemConfig.EquipPlace);
                            otherStr = SetAttrColor(otherStr, attrValue, attrData.itemConfig.EquipPlace);
                        }
                        if (attrSB.Length <= 0)
@@ -1534,7 +1504,7 @@
                        curHp = itemEffectDict[key];
                    }
                    rangeStr = playerProModel.Name + "+" + GetProValueTypeStr(playerProModel, curHp) + "[" + GetProValueTypeStr(playerProModel, itemEffectDict[key]) + "-" + GetProValueTypeStr(playerProModel, maxHp)  + "]";
                    rangeStr = playerProModel.Name + "+" + GetProValueTypeStr(playerProModel, curHp) + "[" + GetProValueTypeStr(playerProModel, itemEffectDict[key]) + "-" + GetProValueTypeStr(playerProModel, maxHp) + "]";
                }
                else if (key == 19)
                {
@@ -1585,7 +1555,7 @@
            return s;
        }
        private string SetAttrColor(string attrStr,int atkSpeed,int equipPlace)
        private string SetAttrColor(string attrStr, int atkSpeed, int equipPlace)
        {
            if ((RoleEquipType)equipPlace != RoleEquipType.FairyCan
                && (RoleEquipType)equipPlace != RoleEquipType.FairyCan2)
@@ -1594,17 +1564,17 @@
            }
            string color = string.Empty;
            bool isColor = TryGetAtkSpeedColor(atkSpeed,out color);
            if(isColor)
            bool isColor = TryGetAtkSpeedColor(atkSpeed, out color);
            if (isColor)
            {
                return StringUtility.Contact("<color=#",color, ">", attrStr, "</color>");
                return StringUtility.Contact("<color=#", color, ">", attrStr, "</color>");
            }
            return attrStr;
        }
        public int GetProValueType(int precentType, int value)
        {
            switch(precentType)
            switch (precentType)
            {
                case 1:
                case 2:
@@ -1617,12 +1587,12 @@
        #region 设置传奇属性
        private Dictionary<int, int> attrDict = new Dictionary<int, int>();
        public string GetLegendAttr(ItemAttrData attrData)
        {
            if (!attrData.isPreview)
            {
                return SetLegendAttr(attrData.legendDataDict.Keys.ToList(), attrData.legendDataDict.Values.ToList(),attrData.itemConfig);
                return SetLegendAttr(attrData.legendDataDict.Keys.ToList(), attrData.legendDataDict.Values.ToList(), attrData.itemConfig);
            }
            else
            {
@@ -1678,8 +1648,8 @@
        {
            int minCount = 0;
            int maxCount = 0;
            TryGetJadeDynastyLegendCount(attrData.itemId,out minCount,out maxCount);
            string countSB = StringUtility.Contact(minCount,"-",maxCount);
            TryGetJadeDynastyLegendCount(attrData.itemId, out minCount, out maxCount);
            string countSB = StringUtility.Contact(minCount, "-", maxCount);
            string s = Language.Get("LegendAttPreview_MightTitle", countSB);
            return s;
        }
@@ -1754,18 +1724,18 @@
        }
        //即将丢弃
        public string GetLegendAttr(List<int> idlist, List<int> valuelist,ItemConfig itemConfig)
        public string GetLegendAttr(List<int> idlist, List<int> valuelist, ItemConfig itemConfig)
        {
            return SetLegendAttr(idlist, valuelist,itemConfig);
            return SetLegendAttr(idlist, valuelist, itemConfig);
        }
        //即将丢弃
        public string GetPreviewLegendAttr(List<int> idlist, List<int> valuelist,ItemConfig itemConfig,bool isCustom)
        public string GetPreviewLegendAttr(List<int> idlist, List<int> valuelist, ItemConfig itemConfig, bool isCustom)
        {
            return SetLegendAttr(idlist, valuelist, itemConfig,true,isCustom);
            return SetLegendAttr(idlist, valuelist, itemConfig, true, isCustom);
        }
        private string SetLegendAttr(List<int> idlist, List<int> valuelist,ItemConfig itemConfig,bool isPreview = false, bool isCustom = false)
        private string SetLegendAttr(List<int> idlist, List<int> valuelist, ItemConfig itemConfig, bool isPreview = false, bool isCustom = false)
        {
            if (idlist == null)
                return "";
@@ -1777,7 +1747,7 @@
            {
                int attrId = idlist[i];
                int attrValue = valuelist[i];
                attrDict.Add(attrId,attrValue);
                attrDict.Add(attrId, attrValue);
            }
            switch (itemConfig.EquipPlace)
@@ -1824,20 +1794,20 @@
            {
                var attrId = idlist[i];
                var packType = GeneralDefine.GetPackTypeByItemType(itemConfig.Type);
                switch(packType)
                switch (packType)
                {
                    case PackType.JadeDynastyItem:
                        SetJadeDynastyLengend(itemConfig,attrId);
                        SetJadeDynastyLengend(itemConfig, attrId);
                        break;
                    default:
                        SetNormalPackLengend(itemConfig,attrId,isCustom,isPreview);
                        SetNormalPackLengend(itemConfig, attrId, isCustom, isPreview);
                        break;
                }
            }
            return attrSB.ToString();
        }
        private void SetNormalPackLengend(ItemConfig itemConfig, int attrId, bool isCustom,bool isPreview)
        private void SetNormalPackLengend(ItemConfig itemConfig, int attrId, bool isCustom, bool isPreview)
        {
            playerProModel = PlayerPropertyConfig.Get(attrId);
            if (playerProModel != null)
@@ -2018,8 +1988,8 @@
                    s = playerProModel.Name + "+" + GetProValueTypeStr(playerProModel, attrDict[attrId]);
                }
                int colorType = 0;
                TryGetJadeDyanastyLegendColorType(attrId, attrDict[attrId],out colorType);
                s = GetTextColorByColorType(colorType,s);
                TryGetJadeDyanastyLegendColorType(attrId, attrDict[attrId], out colorType);
                s = GetTextColorByColorType(colorType, s);
                if (attrSB.Length <= 0)
                {
@@ -2042,14 +2012,14 @@
            return 0;
        }
        private int CompareJadeDynastyLegendColorType(int start,int end)
        private int CompareJadeDynastyLegendColorType(int start, int end)
        {
            int value1 = attrDict[start];
            int value2 = attrDict[end];
            int colorType1 = 0;
            int colorType2 = 0;
            TryGetJadeDyanastyLegendColorType(start,value1,out colorType1);
            TryGetJadeDyanastyLegendColorType(end,value2,out colorType2);
            TryGetJadeDyanastyLegendColorType(start, value1, out colorType1);
            TryGetJadeDyanastyLegendColorType(end, value2, out colorType2);
            if (colorType1.CompareTo(colorType2) != 0) return -colorType1.CompareTo(colorType2);
            return 0;
@@ -2106,8 +2076,8 @@
        private string GetTextColorByColorType(int colorType, string msg)
        {
            string colorSB = string.Empty;
            TryGetJadeDyanastyLegendColor(colorType,out colorSB);
            string s = StringUtility.Contact("<color=#",colorSB,">",msg, "</color>");
            TryGetJadeDyanastyLegendColor(colorType, out colorSB);
            string s = StringUtility.Contact("<color=#", colorSB, ">", msg, "</color>");
            return s;
        }
        #endregion
@@ -2121,9 +2091,9 @@
            foreach (var id in attrData.wingsRefineMatDict.Keys)
            {
                ItemConfig itemConfig = ItemConfig.Get(id);
                if(itemConfig != null)
                if (itemConfig != null)
                {
                    string des = StringUtility.Contact(itemConfig.ItemName,"X",attrData.wingsRefineMatDict[id]);
                    string des = StringUtility.Contact(itemConfig.ItemName, "X", attrData.wingsRefineMatDict[id]);
                    if (attrSB.Length <= 0)
                    {
                        attrSB.Append(des);
@@ -2136,10 +2106,10 @@
            }
            return attrSB.ToString();
        }
       #endregion
        #endregion
        #region 设置洗练属性
            public string GetWashAttr(ItemAttrData attrData)
        public string GetWashAttr(ItemAttrData attrData)
        {
            if (attrData == null) return "";
@@ -2181,7 +2151,7 @@
        #region 设置绝版属性
        public string GetExhaustedAtrr(ItemAttrData attrData)
        {
            return SetExhaustedAttr(attrData,attrData.exhaustedMaxDataDict.Keys.ToList(),attrData.exhaustedMaxDataDict.Values.ToList());
            return SetExhaustedAttr(attrData, attrData.exhaustedMaxDataDict.Keys.ToList(), attrData.exhaustedMaxDataDict.Values.ToList());
        }
        //即将丢弃
@@ -2191,7 +2161,7 @@
            return "";
        }
        private string SetExhaustedAttr(ItemAttrData attrData,List<int> idlist, List<int> valuelist)
        private string SetExhaustedAttr(ItemAttrData attrData, List<int> idlist, List<int> valuelist)
        {
            if (idlist == null)
                return "";
@@ -2207,13 +2177,13 @@
                    switch ((AttrEnum)idlist[i])
                    {
                        case AttrEnum.OnlyFinalHurt:
                            s = Language.Get("EquipTip_ExtraDamage",GetExhaustedAttrValue(idlist[i],valuelist[i]),GetExhaustedMaxLv(attrData.itemConfig.LV),valuelist[i]);
                            s = Language.Get("EquipTip_ExtraDamage", GetExhaustedAttrValue(idlist[i], valuelist[i]), GetExhaustedMaxLv(attrData.itemConfig.LV), valuelist[i]);
                            break;
                        case AttrEnum.PVPAtkBackHP:
                            s = Language.Get("EquipTip_ExtraHpBack", GetExhaustedAttrValue(idlist[i], valuelist[i]), GetExhaustedMaxLv(attrData.itemConfig.LV), valuelist[i]);
                            break;
                    }
                    if (attrSB.Length <= 0)
                    {
                        attrSB.Append(s);
@@ -2228,13 +2198,13 @@
            return attrSB.ToString();
        }
        private int GetExhaustedAttrValue(int attrId,int value)
        private int GetExhaustedAttrValue(int attrId, int value)
        {
            Equation.Instance.Clear();
            Equation.Instance.AddKeyValue("maxOOPValue",value);
            Equation.Instance.AddKeyValue("maxOOPValue", value);
            Equation.Instance.AddKeyValue("lv", PlayerDatas.Instance.baseData.LV);
            string formula = string.Empty;
            if(exhaustedAttrFormula.ContainsKey(attrId))
            if (exhaustedAttrFormula.ContainsKey(attrId))
            {
                formula = exhaustedAttrFormula[attrId];
            }
@@ -2244,7 +2214,7 @@
        public int GetExhaustedMaxLv(int equipLV)
        {
            int maxLv = 0;
            exhaustedMaxLvDict.TryGetValue(equipLV,out maxLv);
            exhaustedMaxLvDict.TryGetValue(equipLV, out maxLv);
            return maxLv;
        }
        #endregion
@@ -2309,11 +2279,11 @@
        public void SetTipsPos()
        {
            if(compareAttrData == null)
            if (compareAttrData == null)
            {
                if(curTips != null)
                if (curTips != null)
                {
                    curTips.anchoredPosition3D = new Vector3(curTips.rect.width/2, curTips.rect.height / 2, 0);
                    curTips.anchoredPosition3D = new Vector3(curTips.rect.width / 2, curTips.rect.height / 2, 0);
                }
            }
            else
@@ -2344,15 +2314,13 @@
        #endregion
        #region 解锁背包格子数据
        public int OpenCount
        {
        public int OpenCount {
            get; private set;
        }
        public PackType packType { get; private set; }
        public int Index
        {
        public int Index {
            get; private set;
        }
@@ -2365,29 +2333,29 @@
        #endregion
        #region 计算增加经验
        public ulong GetAddExpValue(int timeValue,int maxExpLv)
        public ulong GetAddExpValue(int timeValue, int maxExpLv)
        {
            PlayerLVConfig playerLVConfig = PlayerLVConfig.Get(PlayerDatas.Instance.baseData.LV);
            PlayerLVConfig maxLvConfig = PlayerLVConfig.Get(maxExpLv);
            int playerReExp = 0;
            int maxReExp = 0;
            if(playerLVConfig != null)
            if (playerLVConfig != null)
            {
                playerReExp = playerLVConfig.ReExp;
            }
            if(maxLvConfig != null)
            if (maxLvConfig != null)
            {
                maxReExp = maxLvConfig.ReExp;
            }
            else
            {
                if(maxExpLv <= 0)
                if (maxExpLv <= 0)
                {
                    maxReExp = playerReExp;
                }
            }
            Equation.Instance.Clear();
            Equation.Instance.AddKeyValue("PlayerReExp",playerReExp);
            Equation.Instance.AddKeyValue("PlayerReExp", playerReExp);
            Equation.Instance.AddKeyValue("MaxReExp", maxReExp);
            Equation.Instance.AddKeyValue("TimeValue", timeValue);
            return Equation.Instance.Eval<ulong>(expValueFormula);
@@ -2395,11 +2363,11 @@
        #endregion
        #region 设置宠物和坐骑数据
        public Dictionary<int,int> GetPetSkillDict(int unlockId)
        public Dictionary<int, int> GetPetSkillDict(int unlockId)
        {
            if(unlockPetDict.ContainsKey(unlockId))
            if (unlockPetDict.ContainsKey(unlockId))
            {
                if(petSkillDict.ContainsKey(unlockPetDict[unlockId].ID))
                if (petSkillDict.ContainsKey(unlockPetDict[unlockId].ID))
                {
                    return petSkillDict[unlockPetDict[unlockId].ID];
                }
@@ -2410,15 +2378,15 @@
        public string GetQualityName(int quality)
        {
            string nameStr = string.Empty;
            petAndMountQualityDict.TryGetValue(quality,out nameStr);
            petAndMountQualityDict.TryGetValue(quality, out nameStr);
            return nameStr;
        }
        public Dictionary<int,List<int>> GetMountSkillDict(int unlockId)
        public Dictionary<int, List<int>> GetMountSkillDict(int unlockId)
        {
            if(unlockMountDict.ContainsKey(unlockId))
            if (unlockMountDict.ContainsKey(unlockId))
            {
                if(mountSkillDict.ContainsKey(unlockMountDict[unlockId].HorseID))
                if (mountSkillDict.ContainsKey(unlockMountDict[unlockId].HorseID))
                {
                    return mountSkillDict[unlockMountDict[unlockId].HorseID];
                }
@@ -2427,20 +2395,20 @@
            return null;
        }
        public void SetPetAttrStr(int attrId,int attrValue,out string attrName,out string attrValueStr,string contanctStr = "")
        public void SetPetAttrStr(int attrId, int attrValue, out string attrName, out string attrValueStr, string contanctStr = "")
        {
            attrName = "";
            attrValueStr = "";
            PlayerPropertyConfig playerProModel = null;
           if (attrId == (int)AttrEnum.MaxAtk || attrId == (int)AttrEnum.PetMaxAtk)
            if (attrId == (int)AttrEnum.MaxAtk || attrId == (int)AttrEnum.PetMaxAtk)
            {
               playerProModel = PlayerPropertyConfig.Get((int)AttrEnum.ATK);
                playerProModel = PlayerPropertyConfig.Get((int)AttrEnum.ATK);
            }
           else
            else
            {
               playerProModel = PlayerPropertyConfig.Get(attrId);
                playerProModel = PlayerPropertyConfig.Get(attrId);
            }
            if (playerProModel != null)
            {
                attrName = playerProModel.Name;
@@ -2461,15 +2429,13 @@
        #region 物品增加战斗力
        PlayerMountDatas mountDatas { get { return ModelCenter.Instance.GetModel<PlayerMountDatas>(); } }
        public PlayerStrengthengDatas strengthengmodel
        {
            get
            {
                return  ModelCenter.Instance.GetModel<PlayerStrengthengDatas>();
        public PlayerStrengthengDatas strengthengmodel {
            get {
                return ModelCenter.Instance.GetModel<PlayerStrengthengDatas>();
            }
        }
        public bool TryGetFightPowerByItemId(int itemId,out int fightPower)
        public bool TryGetFightPowerByItemId(int itemId, out int fightPower)
        {
            fightPower = 0;
            ItemConfig itemConfig = ItemConfig.Get(itemId);
@@ -2483,7 +2449,7 @@
            int atk = 0;
            int hp = 0;
            int def = 0;
            foreach(var attrId in itemEffectDict.Keys)
            foreach (var attrId in itemEffectDict.Keys)
            {
                var attrValue = itemEffectDict[attrId];
                switch ((AttrEnum)attrId)
@@ -2509,7 +2475,7 @@
                            switch ((AttrEnum)key)
                            {
                                case AttrEnum.ATK:
                                    atk += Mathf.RoundToInt(stoneValue *((float)attrValue / 10000));
                                    atk += Mathf.RoundToInt(stoneValue * ((float)attrValue / 10000));
                                    break;
                                case AttrEnum.HP:
                                    hp += Mathf.RoundToInt(stoneValue * ((float)attrValue / 10000));
@@ -2543,60 +2509,60 @@
                        break;
                    case AttrEnum.PlusBaseAtkPer:
                        var strengthDict = GetStrengthAttrDict();
                        if(strengthDict.ContainsKey((int)AttrEnum.ATK))
                        if (strengthDict.ContainsKey((int)AttrEnum.ATK))
                        {
                            var strengthValue = strengthDict[(int)AttrEnum.ATK];
                            atk += Mathf.RoundToInt(strengthValue * ((float)attrValue / 10000));
                        }
                        break;
                    default:
                        if(attrIdlist.Contains(attrId.ToString()))
                        if (attrIdlist.Contains(attrId.ToString()))
                        {
                            attrDict.Add(attrId,attrValue);
                            attrDict.Add(attrId, attrValue);
                        }
                        break;
                }
            }
            if(atk > 0)
            if (atk > 0)
            {
                attrDict.Add((int)AttrEnum.ATK,atk);
                attrDict.Add((int)AttrEnum.ATK, atk);
            }
            if(def > 0)
            if (def > 0)
            {
                attrDict.Add((int)AttrEnum.DEF,def);
                attrDict.Add((int)AttrEnum.DEF, def);
            }
            if(hp > 0)
            if (hp > 0)
            {
                attrDict.Add((int)AttrEnum.HP,hp);
                attrDict.Add((int)AttrEnum.HP, hp);
            }
            fightPower = UIHelper.GetFightPower(attrDict);
            if(fruitlist.Contains(itemId.ToString()))
            if (fruitlist.Contains(itemId.ToString()))
            {
                var fruitConfig = AttrFruitConfig.Get(itemId);
                fightPower += fruitConfig.FightPowerEx;
            }
            return fightPower > 0;
        }
        private Dictionary<int,int> GetStoneAttrDict()
        private Dictionary<int, int> GetStoneAttrDict()
        {
            Dictionary<int, int> attrDict = new Dictionary<int, int>();
            var stoneDict = PlayerStoneData.Instance.GetAllStone();
            foreach(var key in stoneDict.Keys)
            foreach (var key in stoneDict.Keys)
            {
                var stoneIds = stoneDict[key];
                var itemModel = playerPack.GetItemModelByIndex(PackType.Equip,key);
                var itemModel = playerPack.GetItemModelByIndex(PackType.Equip, key);
                if (itemModel != null && stoneIds != null)
                {
                   for(int i = 0; i < stoneIds.Length; i++)
                    for (int i = 0; i < stoneIds.Length; i++)
                    {
                        int stoneId = (int)stoneIds[i];
                        ItemConfig itemConfig = ItemConfig.Get(stoneId);
                        if(itemConfig != null)
                        if (itemConfig != null)
                        {
                            var itemEffectDict = SetItemEffectDict(itemConfig);
                            foreach (var attrId in itemEffectDict.Keys)
@@ -2618,23 +2584,23 @@
            return attrDict;
        }
        private Dictionary<int,int> GetRealmAttrDict()
        private Dictionary<int, int> GetRealmAttrDict()
        {
            Dictionary<int, int> attrDict = new Dictionary<int, int>();
            int realmLv = PlayerDatas.Instance.baseData.realmLevel;
            var realmConfig = RealmConfig.Get(realmLv);
            if(realmConfig != null)
            if (realmConfig != null)
            {
                var attrIds = realmConfig.AddAttrType;
                var attrValues = realmConfig.AddAttrNum;
                if(attrIds != null && attrValues != null
                if (attrIds != null && attrValues != null
                    && attrIds.Length == attrValues.Length)
                {
                    for (int i = 0; i < attrIds.Length; i++)
                    {
                        var attrId = attrIds[i];
                        var attrValue = attrValues[i];
                        if(attrValue > 0)
                        if (attrValue > 0)
                        {
                            if (!attrDict.ContainsKey(attrId))
                            {
@@ -2651,14 +2617,14 @@
            return attrDict;
        }
        private Dictionary<int,int> GetStrengthAttrDict()
        private Dictionary<int, int> GetStrengthAttrDict()
        {
            Dictionary<int, int> attrDict = new Dictionary<int, int>();
            var strengthDict = strengthengmodel._EqInfo;
            foreach(var index in strengthDict.Keys)
            foreach (var index in strengthDict.Keys)
            {
                var itemModel = playerPack.GetItemModelByIndex(PackType.Equip, index);
                if(itemModel != null)
                if (itemModel != null)
                {
                    int lv = strengthengmodel.StrengthenTheCeiling(index);
                    int type = strengthengmodel.GameDefineIndex(index);
@@ -2703,9 +2669,9 @@
        {
            var funcConfig = FuncConfigConfig.Get("FightpowerFormula");
            Equation.Instance.Clear();
            if(funcConfig != null)
            if (funcConfig != null)
            {
                Equation.Instance.AddKeyValue("equipScoreTotal",equipScore);
                Equation.Instance.AddKeyValue("equipScoreTotal", equipScore);
                return Equation.Instance.Eval<int>(funcConfig.Numerical2);
            }
            return 0;
@@ -2717,8 +2683,8 @@
        {
            string shareNumDes = string.Empty;
            List<int> idlist = null;
            bool isShare = playerPack.TryGetShareNumItem(itemId,out idlist);
           if(isShare)
            bool isShare = playerPack.TryGetShareNumItem(itemId, out idlist);
            if (isShare)
            {
                foreach (var id in idlist)
                {
@@ -2741,7 +2707,7 @@
        #region 判断是否展示模型
        public Dictionary<int, int> showModelAttrDict = new Dictionary<int, int>();
        public bool IsShowModel(int itemId,ModelShowPerfab showPerfab)
        public bool IsShowModel(int itemId, ModelShowPerfab showPerfab)
        {
            var config = ItemConfig.Get(itemId);
            if (config == null) return false;
@@ -2752,23 +2718,23 @@
                case 125:
                    PetInfoConfig petInfo = unlockPetDict[config.EffectValueA1];
                    fightPower = petInfo.ShowFightPower;
                    showPerfab.SetModelShow(petInfo.ID, ModelShowType.pet, Language.Get("TreasureEffect103"),fightPower);
                    showPerfab.SetModelShow(petInfo.ID, ModelShowType.pet, Language.Get("TreasureEffect103"), fightPower);
                    return true;
                case 124:
                    HorseConfig horseConfig = unlockMountDict[config.EffectValueA1];
                    fightPower = horseConfig.ShowFightPower;
                    showPerfab.SetModelShow(horseConfig.Model, ModelShowType.mount, Language.Get("TreasureEffect103"),fightPower);
                    showPerfab.SetModelShow(horseConfig.Model, ModelShowType.mount, Language.Get("TreasureEffect103"), fightPower);
                    return true;
            }
            bool isFashion = TryGetFashionFightPower(config,out fightPower);
            if(isFashion)
            bool isFashion = TryGetFashionFightPower(config, out fightPower);
            if (isFashion)
            {
                showPerfab.SetModelShow(itemId, ModelShowType.FashionDress, Language.Get("TreasureEffect103"),fightPower);
                showPerfab.SetModelShow(itemId, ModelShowType.FashionDress, Language.Get("TreasureEffect103"), fightPower);
                return true;
            }
            bool isMagic = TryGetMagicFightPower(config,out fightPower);
            if(isMagic)
            bool isMagic = TryGetMagicFightPower(config, out fightPower);
            if (isMagic)
            {
                showPerfab.SetModelShow(itemId, ModelShowType.Magic, Language.Get("TreasureEffect103"), fightPower);
                return true;
@@ -2776,8 +2742,8 @@
            return false;
        }
        private bool TryGetFashionFightPower(ItemConfig itemConfig,out int fightPower)
        private bool TryGetFashionFightPower(ItemConfig itemConfig, out int fightPower)
        {
            showModelAttrDict.Clear();
            fightPower = 0;
@@ -2785,8 +2751,8 @@
            int fashionType = 0;
            int fashionId = 0;
            bool isFashion = TryGetItemFashionData(itemConfig.ID,out fashionType,out fashionId);
            if(isFashion)
            bool isFashion = TryGetItemFashionData(itemConfig.ID, out fashionType, out fashionId);
            if (isFashion)
            {
                List<int> fashionIds = null;
                fashionDress.TryGetFashionIds(fashionType, out fashionIds);
@@ -2842,7 +2808,7 @@
            return false;
        }
        public bool TryGetItemFashionData(int itemId,out int fashionType,out int fashionId)
        public bool TryGetItemFashionData(int itemId, out int fashionType, out int fashionId)
        {
            fashionType = 0;
            fashionId = 0;
@@ -2861,7 +2827,7 @@
            return false;
        }
        public bool TryGetMagicFightPower(ItemConfig itemConfig,out int fightPower)
        public bool TryGetMagicFightPower(ItemConfig itemConfig, out int fightPower)
        {
            fightPower = 0;
            var model = ModelCenter.Instance.GetModel<MagicianModel>();
@@ -2876,30 +2842,30 @@
            var magicConfigs = GodWeaponConfig.GetConfigs(magicType);
            int magicEffectStage = model.GetGodWeaponStage(magicType) + 1;
            magicEffectStage = magicEffectStage > 3 ? 3 : magicEffectStage;
            int magicEffectLevel = model.GetGodWeaponStageRequireLevel(magicType,magicEffectStage);
            int magicEffectLevel = model.GetGodWeaponStageRequireLevel(magicType, magicEffectStage);
            var magicInfo = model.GetGodWeaponInfo(magicType);
            int magicLevel = magicEffectLevel;
            int magicEffectPower = model.GetEffectRealFightPower(magicType,magicEffectStage);
            if(magicConfigs != null && magicInfo != null && magicEffectStage == 3)
            int magicEffectPower = model.GetEffectRealFightPower(magicType, magicEffectStage);
            if (magicConfigs != null && magicInfo != null && magicEffectStage == 3)
            {
                int maxLevel = magicConfigs[magicConfigs.Count - 1].Lv;
                if(magicInfo.level >= magicEffectLevel)
                if (magicInfo.level >= magicEffectLevel)
                {
                    magicLevel = maxLevel;
                }
            }
            int attrFightPower = 0;
            var magicConfig = GodWeaponConfig.GetConfig(magicType,magicLevel);
            var magicConfig = GodWeaponConfig.GetConfig(magicType, magicLevel);
            var attrDict = new Dictionary<int, int>();
            if(magicConfig != null)
            if (magicConfig != null)
            {
                int[] attrIds = magicConfig.AttrType;
                int[] attrValues = magicConfig.AttrNum;
                for(int i = 0; i < attrIds.Length; i++)
                for (int i = 0; i < attrIds.Length; i++)
                {
                    int attrId = attrIds[i];
                    int attrValue = attrValues[i];
                    attrDict.Add(attrId,attrValue);
                    attrDict.Add(attrId, attrValue);
                }
            }
            attrFightPower = UIHelper.GetFightPower(attrDict);
@@ -2907,22 +2873,22 @@
            return true;
        }
        private void GetItemEffectDict(int itemId,out Dictionary<int,List<int>> dict)
        private void GetItemEffectDict(int itemId, out Dictionary<int, List<int>> dict)
        {
            var config = ItemConfig.Get(itemId);
            dict = new Dictionary<int, List<int>>();
            if (config == null) return;
            if(config.Effect1 != 0)
            if (config.Effect1 != 0)
            {
                List<int> valuelist = new List<int>();
                valuelist.Add(config.EffectValueA1);
                valuelist.Add(config.EffectValueB1);
                valuelist.Add(config.EffectValueC1);
                dict.Add(config.Effect1,valuelist);
                dict.Add(config.Effect1, valuelist);
            }
            if(config.Effect2 != 0)
            if (config.Effect2 != 0)
            {
                List<int> valuelist = new List<int>();
                valuelist.Add(config.EffectValueA2);
@@ -2970,75 +2936,67 @@
        public int index { get; private set; }
        public ulong count { get; private set; }
        public int isBind { get; private set; }
        public int unionWarehouseScore { get; private set;}
        public int unionWarehouseScore { get; private set; }
        public uint[] stones { get; private set; } //可镶嵌宝石数组 长度为0 未镶嵌  数值为0 未镶嵌
        public int score { get; private set; }
        public bool isCompare { get; private set;} //是否进行装备比较
        public bool isCompare { get; private set; } //是否进行装备比较
        public bool isPreview { get; private set; }//是否预览
        public ItemConfig itemConfig { get; private set; }
        public bool isCustom { get; private set; } //是否是定制物品
        public int level { get; private set; }//等级
        public int equipHole { get; private set; }//聚魂孔
        public ItemTipChildType ChildType { get; private set; }  //决定当前面板打开哪个
        public Dictionary<int, List<int>> useDataDict { get; private set;}
        public Dictionary<int, List<int>> useDataDict { get; private set; }
        public Dictionary<int, int> strengthDataDict { get; private set; }
        public Dictionary<int, int> washDataDict { get; private set; }
        public Dictionary<int, int> legendDataDict { get; private set; }
        public Dictionary<int, int> exhaustedMaxDataDict { get; private set; }
        public Dictionary<int, int> wingsRefineMatDict { get; private set; }
        public Dictionary<ItemOperateType,Action<ItemOperateType,string>> tipsFuncBtnDic { get; private set; }
        public Dictionary<ItemOperateType, Action<ItemOperateType, string>> tipsFuncBtnDic { get; private set; }
        public Dictionary<SuitType,ItemSuitAttrData> suitAttrDataDict { get; private set; }
        public Dictionary<SuitType, ItemSuitAttrData> suitAttrDataDict { get; private set; }
        public Dictionary<SuitType, int> suitTypeCntDict { get; private set; }
        public bool isHavePutLimit { get; private set; }
        PlayerStrengthengDatas m_StrengthengModel;
        public PlayerStrengthengDatas strengthengmodel
        {
            get
            {
        public PlayerStrengthengDatas strengthengmodel {
            get {
                return m_StrengthengModel ?? (m_StrengthengModel = ModelCenter.Instance.GetModel<PlayerStrengthengDatas>());
            }
        }
        PackModelInterface _modelInterface;
        PackModelInterface modelInterface
        {
        PackModelInterface modelInterface {
            get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel<PackModelInterface>()); }
        }
        EquipWashModel _washModel;
        EquipWashModel washModel
        {
            get
            {
        EquipWashModel washModel {
            get {
                return _washModel ?? (_washModel = ModelCenter.Instance.GetModel<EquipWashModel>());
            }
        }
        ItemTipsModel _itemTipsModel;
        ItemTipsModel itemTipsModel
        {
            get
            {
        ItemTipsModel itemTipsModel {
            get {
                return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>());
            }
        }
        PlayerSuitModel _suitModel;
        PlayerSuitModel SuitModel
        {
        PlayerSuitModel SuitModel {
            get { return _suitModel ?? (_suitModel = ModelCenter.Instance.GetModel<PlayerSuitModel>()); }
        }
        RuneModel runeModel { get { return ModelCenter.Instance.GetModel<RuneModel>(); } }
        GodBeastModel beastModel { get { return ModelCenter.Instance.GetModel<GodBeastModel>(); } }
        public ItemAttrData(int id,bool isPreview = false,ulong count = 0,int index = -1, int isBind = 0,bool isCompare = false,PackType type = PackType.Deleted, string guid = "", Dictionary<int, List<int>> useDataDict = null,ItemTipChildType childType = ItemTipChildType.Normal)
        public ItemAttrData(int id, bool isPreview = false, ulong count = 0, int index = -1, int isBind = 0, bool isCompare = false, PackType type = PackType.Deleted, string guid = "", Dictionary<int, List<int>> useDataDict = null, ItemTipChildType childType = ItemTipChildType.Normal)
        {
            this.packType = type;
            this.itemConfig = ItemConfig.Get(id);
            this.tipsFuncBtnDic = new Dictionary<ItemOperateType, Action<ItemOperateType,string>>();
            this.tipsFuncBtnDic = new Dictionary<ItemOperateType, Action<ItemOperateType, string>>();
            this.guid = guid;
            this.itemId = id;
            this.count = count;
@@ -3055,7 +3013,7 @@
            this.level = 1;
            this.equipHole = -1;
            this.isCustom = CheckIsCustomItem();
            if(isCustom)
            if (isCustom)
            {
                AppointItemConfig appointItemConfig = AppointItemConfig.Get(itemId);
                if (appointItemConfig != null)
@@ -3075,10 +3033,10 @@
                {
                    List<int> legendIdlist = null;
                    List<int> legendValuelist = null;
                    switch(itemConfig.EquipPlace)
                    switch (itemConfig.EquipPlace)
                    {
                        case 11:
                            SetWingsLegendAttrPreview(out legendIdlist,out legendValuelist);
                            SetWingsLegendAttrPreview(out legendIdlist, out legendValuelist);
                            break;
                        case 1:
                        case 2:
@@ -3091,7 +3049,7 @@
                        case 9:
                        case 10:
                        case 12:
                            SetEquipLegendAttrPreview(out legendIdlist,out legendValuelist);
                            SetEquipLegendAttrPreview(out legendIdlist, out legendValuelist);
                            break;
                        case 101:
                        case 102:
@@ -3103,14 +3061,14 @@
                    }
                    var packType = GeneralDefine.GetPackTypeByItemType(itemConfig.Type);
                    switch(packType)
                    switch (packType)
                    {
                        case PackType.JadeDynastyItem:
                            SetJadeDynastyEquipLegendAttrPreview(out legendIdlist,out legendValuelist);
                            SetJadeDynastyEquipLegendAttrPreview(out legendIdlist, out legendValuelist);
                            break;
                    }
                    if(legendIdlist != null && legendValuelist != null)
                    if (legendIdlist != null && legendValuelist != null)
                    {
                        if (legendIdlist.Count == legendValuelist.Count)
                        {
@@ -3144,7 +3102,7 @@
                        SetSuitData(itemId, index);
                    }
                    switch(type)
                    switch (type)
                    {
                        case PackType.Equip:
                            SetGemModel(PlayerStoneData.Instance.GetStoneInfo(index));
@@ -3152,7 +3110,7 @@
                        case PackType.JadeDynastyEquip:
                            JadeDynastyGemModel.GemEquipData equipData;
                            var model = ModelCenter.Instance.GetModel<JadeDynastyGemModel>();
                            var existGem=model.TryGetEquipGems(index + 121, out equipData);
                            var existGem = model.TryGetEquipGems(index + 121, out equipData);
                            SetGemModel(existGem ? equipData.items : null);
                            break;
                    }
@@ -3162,42 +3120,42 @@
                    SetWingsRefineMat(GetUseDataModel((int)ItemUseDataKey.wingMaterialItemID), GetUseDataModel((int)ItemUseDataKey.wingMaterialItemCount));
                }
            }
            this.score = modelInterface.SetEquipScore(type,id,useDataDict,isPreview);
            PetEatEquipConfig petEatConfig = PetEatEquipConfig.GetEquipColorAndEquipClass(itemConfig.ItemColor,itemConfig.LV);//仙盟仓库装备积分兑换表
            this.score = modelInterface.SetEquipScore(type, id, useDataDict, isPreview);
            PetEatEquipConfig petEatConfig = PetEatEquipConfig.GetEquipColorAndEquipClass(itemConfig.ItemColor, itemConfig.LV);//仙盟仓库装备积分兑换表
            this.unionWarehouseScore = 0;
            if(petEatConfig != null)
            if (petEatConfig != null)
            {
                this.unionWarehouseScore = petEatConfig.integrate;
            }
            if(itemTipsModel.randomRuneIds.Contains(this.itemId))
            if (itemTipsModel.randomRuneIds.Contains(this.itemId))
            {
                Dictionary<int, List<int>> unlockRuneDict = runeModel.GetAllUnlockRuneIdlist();
                List<string> extraInfos = new List<string>();
                if(unlockRuneDict != null)
                if (unlockRuneDict != null)
                {
                    foreach(var key in unlockRuneDict.Keys)
                    foreach (var key in unlockRuneDict.Keys)
                    {
                        int runeId = unlockRuneDict[key][0];
                        ItemConfig runeConfig = ItemConfig.Get(runeId);
                        string effectDes = StringUtility.Contact(UIHelper.AppendStringColor(TextColType.Green, runeConfig.ItemName),":",Language.Get(StringUtility.Contact("RuneTypeDesc_",runeConfig.Effect1)));
                        string effectDes = StringUtility.Contact(UIHelper.AppendStringColor(TextColType.Green, runeConfig.ItemName), ":", Language.Get(StringUtility.Contact("RuneTypeDesc_", runeConfig.Effect1)));
                        extraInfos.Add(effectDes);
                    }
                }
                SetExtraInfos(extraInfos.ToArray());
            }
            if(type == PackType.DogzEquip || type == PackType.DogzItem)
            if (type == PackType.DogzEquip || type == PackType.DogzItem)
            {
                strengthDataDict = new Dictionary<int, int>();
                if (GetUseDataModel((int)ItemUseDataKey.dogzEquipPlus) != null)
                {
                    StrengthLV = GetUseDataModel((int)ItemUseDataKey.dogzEquipPlus)[0];
                }
                Dictionary<int,int> getStregthDict = beastModel.SiteEnhancementAttribute(type,index);
                foreach(var key in getStregthDict.Keys)
                Dictionary<int, int> getStregthDict = beastModel.SiteEnhancementAttribute(type, index);
                foreach (var key in getStregthDict.Keys)
                {
                    strengthDataDict.Add(key,getStregthDict[key]);
                    strengthDataDict.Add(key, getStregthDict[key]);
                }
            }
@@ -3240,7 +3198,7 @@
                    {
                        attrCnt = itemTipsModel.legendAttrCntPreviewDict[attrCntKey][attrType];
                    }
                    if(attrCnt > 0)
                    if (attrCnt > 0)
                    {
                        switch (attrType)
                        {
@@ -3252,7 +3210,7 @@
                                break;
                        }
                    }
                }
            }
            int i = 0;
@@ -3310,7 +3268,7 @@
        private void SetJadeDynastyEquipLegendAttrPreview(out List<int> legendIdlist, out List<int> legendValuelist)
        {
            Dictionary<int, int> attrDict = null;
            itemTipsModel.TryGetJadeDynastyLegendAttr(itemId,out attrDict);
            itemTipsModel.TryGetJadeDynastyLegendAttr(itemId, out attrDict);
            legendIdlist = attrDict.Keys.ToList();
            legendValuelist = attrDict.Values.ToList();
        }
@@ -3339,7 +3297,7 @@
            if (itemTipsModel.randomRuneIds.Contains(itemConfig.ID))
            {
                return  itemConfig.Description.Replace("{Rune}", GetExtraInfos());
                return itemConfig.Description.Replace("{Rune}", GetExtraInfos());
            }
            else
            {
@@ -3361,7 +3319,7 @@
            if (lv <= 0) return;
            strengthDataDict = new Dictionary<int, int>();
            itemPlus = ItemPlusConfig.GetItemPlusData(type,lv);
            itemPlus = ItemPlusConfig.GetItemPlusData(type, lv);
            if (itemPlus != null)
            {
                int[] attrIDs = itemPlus.attrIds;
@@ -3399,9 +3357,9 @@
            if (ids == null || ids.Count < 1) return;
            wingsRefineMatDict = new Dictionary<int, int>();
            for(int i = 0; i < ids.Count;i++)
            for (int i = 0; i < ids.Count; i++)
            {
                wingsRefineMatDict.Add(ids[i],nums[i]);
                wingsRefineMatDict.Add(ids[i], nums[i]);
            }
        }
@@ -3421,7 +3379,7 @@
            {
                exhaustedMaxDataDict.Add(ids[i], values[i]);
            }
        }
        /// <summary>
@@ -3438,21 +3396,21 @@
            int i = 0;
            for (i = 0; i < values.Length; i++)
            {
                if(values[i] > 0)
                if (values[i] > 0)
                {
                    isWash = true;
                    break;
                }
            }
            if(!isWash)
            if (!isWash)
            {
                return;
            }
            washDataDict = new Dictionary<int, int>();
            this.tagWashModel = EquipWashConfig.GetEquipWashData(type, lv);
            if(this.tagWashModel != null)
            if (this.tagWashModel != null)
            {
                for (i = 0; i < values.Length; i++)
                {
@@ -3470,7 +3428,7 @@
                    }
                }
            }
        }
        //设置弹框的宝石数据
@@ -3483,13 +3441,13 @@
        /// 设置套装数据
        /// </summary>
        /// <param name="suitType"></param>
        public void SetSuitData(int itemId,int equipPlace)
        public void SetSuitData(int itemId, int equipPlace)
        {
            suitAttrDataDict = null;
            suitTypeCntDict = null;
            Dictionary<int,int> suitTypeDict = SuitModel.GetServerSuitModelByPlace(index);
            Dictionary<int, int> suitTypeDict = SuitModel.GetServerSuitModelByPlace(index);
            if (suitTypeDict == null) return;
            suitAttrDataDict = new Dictionary<SuitType, ItemSuitAttrData>();
@@ -3498,18 +3456,18 @@
            int equipJob = SuitModel.GetEquipJob(itemId);
            foreach (var type in suitTypeDict.Keys)
            {
                bool isMaker = SuitModel.IsMakerSuit((SuitType)type,itemConfig.ItemColor,itemConfig.StarLevel);
                bool isMaker = SuitModel.IsMakerSuit((SuitType)type, itemConfig.ItemColor, itemConfig.StarLevel);
                if (suitTypeDict[type] > 0 && isMaker)
                {
                    List<int> placelist = null;
                    int suitCnt = 0;
                    ItemSuitAttrData suitAttrData = default(ItemSuitAttrData);
                    if (this.itemConfig.LV < suitTypeDict[type])
                    {
                        suitAttrData = new ItemSuitAttrData(groupType, type, this.itemConfig.LV, equipJob);
                        suitCnt = SuitModel.GetSameSuitCnt((SuitType)type, equipPlace,this.itemConfig.LV, out placelist, equipJob);
                        suitCnt = SuitModel.GetSameSuitCnt((SuitType)type, equipPlace, this.itemConfig.LV, out placelist, equipJob);
                    }
                    else
                    {
@@ -3523,7 +3481,7 @@
        }
        //设置其他玩家的套装数据
        public void SetOtherSuitData(int itemId,int equipPlace,Dictionary<int,int> suitTypeDict,Dictionary<SuitType,int> suitCntDict)
        public void SetOtherSuitData(int itemId, int equipPlace, Dictionary<int, int> suitTypeDict, Dictionary<SuitType, int> suitCntDict)
        {
            this.suitAttrDataDict = null;
            this.suitTypeCntDict = null;
@@ -3564,7 +3522,7 @@
        public int GetSuitCntByType(SuitType suitType)
        {
            int cnt = 0;
            if(this.suitTypeCntDict != null)
            if (this.suitTypeCntDict != null)
            {
                this.suitTypeCntDict.TryGetValue(suitType, out cnt);
            }
@@ -3584,7 +3542,7 @@
                remainTime = itemConfig.ExpireTime;
                var getTimes = GetUseDataModel((int)ItemUseDataKey.createTime);
                var serverSurplusTimes = GetUseDataModel((int)ItemUseDataKey.totalTime);
                if(remainTime > 0)
                if (remainTime > 0)
                {
                    if (getTimes != null)
                    {
@@ -3599,7 +3557,7 @@
                    }
                    return true;
                }
            }
            return false;
        }
@@ -3636,7 +3594,7 @@
                legendValuelist = new List<int>();
                for (i = 0; i < appointItemConfig.LegendAttrID.Length; i++)
                {
                    if(appointItemConfig.LegendAttrID[i] != 0)
                    if (appointItemConfig.LegendAttrID[i] != 0)
                    {
                        legendIdlist.Add(appointItemConfig.LegendAttrID[i]);
                        legendValuelist.Add(appointItemConfig.LegendAttrValue[i]);
@@ -3650,7 +3608,7 @@
                exhaustedValuelist = new List<int>();
                for (i = 0; i < appointItemConfig.OutOfPrintAttr.Length; i++)
                {
                    if(appointItemConfig.OutOfPrintAttr[i] != 0)
                    if (appointItemConfig.OutOfPrintAttr[i] != 0)
                    {
                        exhaustedIdlist.Add(appointItemConfig.OutOfPrintAttr[i]);
                        exhaustedValuelist.Add(appointItemConfig.OutOfPrintAttrValue[i]);
@@ -3658,7 +3616,7 @@
                }
            }
            SetLegendData(legendIdlist, legendValuelist);
            SetExhaustedData(exhaustedIdlist,exhaustedValuelist);
            SetExhaustedData(exhaustedIdlist, exhaustedValuelist);
            //SetSuitData(appointItemConfig.SuiteLv);
        }
@@ -3679,9 +3637,9 @@
        /// </summary>
        /// <param name="type"></param>
        /// <param name="func"></param>
        public void SetTipsFuncBtn(ItemOperateType type, Action<ItemOperateType,string> func)
        public void SetTipsFuncBtn(ItemOperateType type, Action<ItemOperateType, string> func)
        {
            tipsFuncBtnDic.Add(type,func);
            tipsFuncBtnDic.Add(type, func);
        }
        public void SetGatherSoul(int level, int equipHole, PackType packType = PackType.Deleted, int index = -1)
@@ -3767,7 +3725,7 @@
        public int[] thirdSuitAttrs { get; private set; }
        public int[] thirdSuitAttrValues { get; private set; }
        public ItemSuitAttrData(int groupType,int suitType,int suitLv,int equipJob)
        public ItemSuitAttrData(int groupType, int suitType, int suitLv, int equipJob)
        {
            var suitAttrData = EquipSuitAttrConfig.GetSuitAttrData(groupType, suitType, suitLv, equipJob);
            if (suitAttrData != null)
System/KnapSack/Logic/PlayerPackModels.cs
@@ -136,7 +136,7 @@
        public void OnPlayerLoginOk()
        {
            ItemLogicUtility.Instance.SendOpenWarehouse();
            ItemLogicUtility.Instance.RequestWarehouseData();
            SetPlayerAttrActiveRedPoint();
            EquipDecomRedCtrl();
            RoleEquipLocalSave = StringUtility.Contact("RoleEquipLocalSave", PlayerDatas.Instance.baseData.PlayerID);
System/KnapSack/New/BagWin.cs
@@ -276,7 +276,7 @@
                        };
                        gridCell.itemCellBtn.m_OnDbClick = () =>
                          {
                              ItemLogicUtility.Instance.PutInWareHouse(ItemOperateType.putIn, itemModel.guid);
                              ItemLogicUtility.Instance.PutInWareHouse(itemModel.guid);
                          };
                    }
System/KnapSack/PreciousItemGetBehaviour.cs
@@ -94,11 +94,11 @@
                            bool isUnlock = ModelCenter.Instance.GetModel<ComposeWinModel>().CheckComposeItemById(itemModel.itemId, out jumpId);
                            if (isUnlock)
                            {
                                ItemLogicUtility.Instance.GotoComposeItem(ItemOperateType.compose, jumpId);
                                ItemLogicUtility.Instance.GotoComposeItem(jumpId);
                            }
                            break;
                        default:
                            ItemLogicUtility.Instance.UseItem(ItemOperateType.makeUse, itemModel.itemPlace);
                            ItemLogicUtility.Instance.UseItem(itemModel.itemPlace);
                            break;
                    }
                }
System/SystemSetting/SettingEffectMgr.cs
@@ -245,7 +245,7 @@
                    List<ItemModel> list = null;
                    if (singlePack.GetItemCountByID(_tagItemModel.ID,out list) > 0)
                    {
                        ItemLogicUtility.Instance.UseItem(ItemOperateType.makeUse, list[0].itemPlace);
                        ItemLogicUtility.Instance.UseItem(list[0].itemPlace);
                        break;
                    }
                    else