From 41f2e6da67fb92e18e9d054276de78718c64c5f4 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 04 八月 2025 19:37:13 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts

---
 Main/System/KnapSack/PackManager.cs                                                  |    1 
 Main/System/KnapSack/Logic/RolePackWin.cs                                            |   26 
 Main/System/KnapSack/Logic/composeLineCell.cs                                        |   18 
 Main/System/KnapSack/Logic/ItemLogicUtility.cs                                       | 2590 +++++++++++-----------
 Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB124_tagSCLineupInfo.cs      |   13 
 Main/System/ItemTip/ItemTipUtility.cs                                                | 3816 ++++++++++++++++----------------
 Main/System/ItemTip/ItemTipWin.cs.meta                                               |   11 
 Main/Core/NetworkPackage/ServerPack/HB1_Role/HB124_tagSCLineupInfo.cs.meta           |   11 
 Main/System/KnapSack/Logic/ComposeGirdCell.cs                                        |   25 
 Main/ResModule/UILoader.cs                                                           |    1 
 Main/Utility/ComponentExtersion.cs                                                   |   13 
 Main/Core/NetworkPackage/ServerPack/HB1_Role/HB124_tagSCLineupInfo.cs                |   33 
 Main/System/ItemTip/ItemTipWin.cs                                                    |   27 
 Main/System/Team/TeamManager.cs                                                      |  122 
 Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs                                 |    1 
 Main/System/KnapSack/Logic/PackGirdCell.cs.meta                                      |    2 
 Main/System/Main/HomeWin.cs                                                          |    2 
 Main/Config/Configs/ItemConfig.cs                                                    |  255 -
 Main/System/KnapSack/Logic/SinglePack.cs                                             |   13 
 Main/System/KnapSack/New/CommonItemBaisc.cs                                          |    5 
 Main/System/KnapSack/Logic/ComposeGirdCell.cs.meta                                   |   11 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB124_tagSCLineupInfo.cs.meta |   11 
 Main/System/KnapSack/Logic/PackGirdCell.cs                                           |    9 
 23 files changed, 3,499 insertions(+), 3,517 deletions(-)

diff --git a/Main/Config/Configs/ItemConfig.cs b/Main/Config/Configs/ItemConfig.cs
index b403f27..e606bd3 100644
--- a/Main/Config/Configs/ItemConfig.cs
+++ b/Main/Config/Configs/ItemConfig.cs
@@ -20,21 +20,11 @@
 	public string ItemName;
 	public int Type;
 	public int EquipPlace;
-	public int CanRepair;
 	public int PackCount;
 	public int UseLV;
-	public int CanSell;
-	public int CanTrade;
-	public int[] JumpComposeCondi;
-	public int CanDrop;
-	public int CanBind;
 	public int CDTypeEx;
 	public int CDType;
 	public int CDTime;
-	public int GoldPrice;
-	public int GoldPaperPrice;
-	public int SilverPrice;
-	public int UseTag;
 	public int Effect1;
 	public int EffectValueA1;
 	public int EffectValueB1;
@@ -58,34 +48,17 @@
 	public int AddSkill1;
 	public int AddSkill2;
 	public int JobLimit;
-	public int RealmLimit;
 	public int ItemColor;
 	public int StarLevel;
-	public int MaxHoleCount;
-	public int CanBreak;
-	public int MaxEndure;
 	public int EndureReduceType;
-	public int BindType;
 	public int MaxSkillCnt;
 	public int ExpireTime;
-	public int MaxFitLV;
 	public int SuiteiD;
-	public string DropinstantEffName;
 	public string IconKey;
-	public int ChangeOrd;
 	public string Description;
-	public string QualityName;
-	public int LimitSTR;
-	public int LimitPHY;
-	public int LimitPNE;
-	public string Template;
-	public int DropItemPattern;
-	public int SellTip;
 	public int BatchUse;
 	public int Jump;
 	public int[] GetWay;
-	public string ItemTypeName;
-	public int[] UseCondiType;
 	public int BaseEffectID;
 
     public override int LoadKey(string _key)
@@ -108,151 +81,89 @@
 
 			int.TryParse(tables[4],out EquipPlace); 
 
-			int.TryParse(tables[5],out CanRepair); 
+			int.TryParse(tables[5],out PackCount); 
 
-			int.TryParse(tables[6],out PackCount); 
+			int.TryParse(tables[6],out UseLV); 
 
-			int.TryParse(tables[7],out UseLV); 
+			int.TryParse(tables[7],out CDTypeEx); 
 
-			int.TryParse(tables[8],out CanSell); 
+			int.TryParse(tables[8],out CDType); 
 
-			int.TryParse(tables[9],out CanTrade); 
+			int.TryParse(tables[9],out CDTime); 
 
-			if (tables[10].Contains("["))
+			int.TryParse(tables[10],out Effect1); 
+
+			int.TryParse(tables[11],out EffectValueA1); 
+
+			int.TryParse(tables[12],out EffectValueB1); 
+
+			int.TryParse(tables[13],out EffectValueC1); 
+
+			int.TryParse(tables[14],out Effect2); 
+
+			int.TryParse(tables[15],out EffectValueA2); 
+
+			int.TryParse(tables[16],out EffectValueB2); 
+
+			int.TryParse(tables[17],out EffectValueC2); 
+
+			int.TryParse(tables[18],out Effect3); 
+
+			int.TryParse(tables[19],out EffectValueA3); 
+
+			int.TryParse(tables[20],out EffectValueB3); 
+
+			int.TryParse(tables[21],out EffectValueC3); 
+
+			int.TryParse(tables[22],out Effect4); 
+
+			int.TryParse(tables[23],out EffectValueA4); 
+
+			int.TryParse(tables[24],out EffectValueB4); 
+
+			int.TryParse(tables[25],out EffectValueC4); 
+
+			int.TryParse(tables[26],out Effect5); 
+
+			int.TryParse(tables[27],out EffectValueA5); 
+
+			int.TryParse(tables[28],out EffectValueB5); 
+
+			int.TryParse(tables[29],out EffectValueC5); 
+
+			int.TryParse(tables[30],out AddSkill1); 
+
+			int.TryParse(tables[31],out AddSkill2); 
+
+			int.TryParse(tables[32],out JobLimit); 
+
+			int.TryParse(tables[33],out ItemColor); 
+
+			int.TryParse(tables[34],out StarLevel); 
+
+			int.TryParse(tables[35],out EndureReduceType); 
+
+			int.TryParse(tables[36],out MaxSkillCnt); 
+
+			int.TryParse(tables[37],out ExpireTime); 
+
+			int.TryParse(tables[38],out SuiteiD); 
+
+			IconKey = tables[39];
+
+			Description = tables[40];
+
+			int.TryParse(tables[41],out BatchUse); 
+
+			int.TryParse(tables[42],out Jump); 
+
+			if (tables[43].Contains("["))
 			{
-				JumpComposeCondi = JsonMapper.ToObject<int[]>(tables[10]);
+				GetWay = JsonMapper.ToObject<int[]>(tables[43]);
 			}
 			else
 			{
-				string[] JumpComposeCondiStringArray = tables[10].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
-				JumpComposeCondi = new int[JumpComposeCondiStringArray.Length];
-				for (int i=0;i<JumpComposeCondiStringArray.Length;i++)
-				{
-					 int.TryParse(JumpComposeCondiStringArray[i],out JumpComposeCondi[i]);
-				}
-			}
-
-			int.TryParse(tables[11],out CanDrop); 
-
-			int.TryParse(tables[12],out CanBind); 
-
-			int.TryParse(tables[13],out CDTypeEx); 
-
-			int.TryParse(tables[14],out CDType); 
-
-			int.TryParse(tables[15],out CDTime); 
-
-			int.TryParse(tables[16],out GoldPrice); 
-
-			int.TryParse(tables[17],out GoldPaperPrice); 
-
-			int.TryParse(tables[18],out SilverPrice); 
-
-			int.TryParse(tables[19],out UseTag); 
-
-			int.TryParse(tables[20],out Effect1); 
-
-			int.TryParse(tables[21],out EffectValueA1); 
-
-			int.TryParse(tables[22],out EffectValueB1); 
-
-			int.TryParse(tables[23],out EffectValueC1); 
-
-			int.TryParse(tables[24],out Effect2); 
-
-			int.TryParse(tables[25],out EffectValueA2); 
-
-			int.TryParse(tables[26],out EffectValueB2); 
-
-			int.TryParse(tables[27],out EffectValueC2); 
-
-			int.TryParse(tables[28],out Effect3); 
-
-			int.TryParse(tables[29],out EffectValueA3); 
-
-			int.TryParse(tables[30],out EffectValueB3); 
-
-			int.TryParse(tables[31],out EffectValueC3); 
-
-			int.TryParse(tables[32],out Effect4); 
-
-			int.TryParse(tables[33],out EffectValueA4); 
-
-			int.TryParse(tables[34],out EffectValueB4); 
-
-			int.TryParse(tables[35],out EffectValueC4); 
-
-			int.TryParse(tables[36],out Effect5); 
-
-			int.TryParse(tables[37],out EffectValueA5); 
-
-			int.TryParse(tables[38],out EffectValueB5); 
-
-			int.TryParse(tables[39],out EffectValueC5); 
-
-			int.TryParse(tables[40],out AddSkill1); 
-
-			int.TryParse(tables[41],out AddSkill2); 
-
-			int.TryParse(tables[42],out JobLimit); 
-
-			int.TryParse(tables[43],out RealmLimit); 
-
-			int.TryParse(tables[44],out ItemColor); 
-
-			int.TryParse(tables[45],out StarLevel); 
-
-			int.TryParse(tables[46],out MaxHoleCount); 
-
-			int.TryParse(tables[47],out CanBreak); 
-
-			int.TryParse(tables[48],out MaxEndure); 
-
-			int.TryParse(tables[49],out EndureReduceType); 
-
-			int.TryParse(tables[50],out BindType); 
-
-			int.TryParse(tables[51],out MaxSkillCnt); 
-
-			int.TryParse(tables[52],out ExpireTime); 
-
-			int.TryParse(tables[53],out MaxFitLV); 
-
-			int.TryParse(tables[54],out SuiteiD); 
-
-			DropinstantEffName = tables[55];
-
-			IconKey = tables[56];
-
-			int.TryParse(tables[57],out ChangeOrd); 
-
-			Description = tables[58];
-
-			QualityName = tables[59];
-
-			int.TryParse(tables[60],out LimitSTR); 
-
-			int.TryParse(tables[61],out LimitPHY); 
-
-			int.TryParse(tables[62],out LimitPNE); 
-
-			Template = tables[63];
-
-			int.TryParse(tables[64],out DropItemPattern); 
-
-			int.TryParse(tables[65],out SellTip); 
-
-			int.TryParse(tables[66],out BatchUse); 
-
-			int.TryParse(tables[67],out Jump); 
-
-			if (tables[68].Contains("["))
-			{
-				GetWay = JsonMapper.ToObject<int[]>(tables[68]);
-			}
-			else
-			{
-				string[] GetWayStringArray = tables[68].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
+				string[] GetWayStringArray = tables[43].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
 				GetWay = new int[GetWayStringArray.Length];
 				for (int i=0;i<GetWayStringArray.Length;i++)
 				{
@@ -260,23 +171,7 @@
 				}
 			}
 
-			ItemTypeName = tables[69];
-
-			if (tables[70].Contains("["))
-			{
-				UseCondiType = JsonMapper.ToObject<int[]>(tables[70]);
-			}
-			else
-			{
-				string[] UseCondiTypeStringArray = tables[70].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
-				UseCondiType = new int[UseCondiTypeStringArray.Length];
-				for (int i=0;i<UseCondiTypeStringArray.Length;i++)
-				{
-					 int.TryParse(UseCondiTypeStringArray[i],out UseCondiType[i]);
-				}
-			}
-
-			int.TryParse(tables[71],out BaseEffectID); 
+			int.TryParse(tables[44],out BaseEffectID); 
         }
         catch (Exception exception)
         {
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB124_tagSCLineupInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB124_tagSCLineupInfo.cs
new file mode 100644
index 0000000..46e0188
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB124_tagSCLineupInfo.cs
@@ -0,0 +1,13 @@
+using UnityEngine;
+using System.Collections;
+
+// B1 24 闃靛淇℃伅 #tagSCLineupInfo
+
+public class DTCB124_tagSCLineupInfo : DtcBasic {
+    public override void Done(GameNetPackBasic vNetPack)
+    {
+        base.Done(vNetPack);
+        HB124_tagSCLineupInfo vNetData = vNetPack as HB124_tagSCLineupInfo;
+        TeamManager.Instance.OnHeroChangeEvent(vNetData);
+    }
+}
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB124_tagSCLineupInfo.cs.meta b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB124_tagSCLineupInfo.cs.meta
new file mode 100644
index 0000000..b1703e0
--- /dev/null
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HB1_Role/DTCB124_tagSCLineupInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c1fd0ec2c9c912c459b80695e2be32fb
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
index fec1e43..50717ca 100644
--- a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
+++ b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -102,6 +102,7 @@
         Register(typeof(H0407_tagNPCDisappear), typeof(DTC0407_tagNPCDisappear));
         Register(typeof(H0423_tagObjPropertyRefreshView), typeof(DTC0423_tagObjPropertyRefreshView));
         Register(typeof(H0604_tagUseSkillAttack), typeof(DTC0604_tagUseSkillAttack));
+        Register(typeof(HB124_tagSCLineupInfo), typeof(DTCB124_tagSCLineupInfo));
     }
 
     //涓诲伐绋嬫敞鍐屽皝鍖�
diff --git a/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB124_tagSCLineupInfo.cs b/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB124_tagSCLineupInfo.cs
new file mode 100644
index 0000000..81b235d
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB124_tagSCLineupInfo.cs
@@ -0,0 +1,33 @@
+using UnityEngine;
+using System.Collections;
+
+// B1 24 闃靛淇℃伅 #tagSCLineupInfo
+
+public class HB124_tagSCLineupInfo : GameNetPackBasic {
+    public byte LineupCnt;
+    public  tagSCLineup[] LineupList;
+
+    public HB124_tagSCLineupInfo () {
+        _cmd = (ushort)0xB124;
+    }
+
+    public override void ReadFromBytes (byte[] vBytes) {
+        TransBytes (out LineupCnt, vBytes, NetDataType.BYTE);
+        LineupList = new tagSCLineup[LineupCnt];
+        for (int i = 0; i < LineupCnt; i ++) {
+            LineupList[i] = new tagSCLineup();
+            TransBytes (out LineupList[i].LineupID, vBytes, NetDataType.BYTE);
+            TransBytes (out LineupList[i].ShapeType, vBytes, NetDataType.BYTE);
+            TransBytes (out LineupList[i].HeroCnt, vBytes, NetDataType.BYTE);
+            TransBytes (out LineupList[i].HeroItemIndexList, vBytes, NetDataType.WORD, LineupList[i].HeroCnt);
+        }
+    }
+
+    public struct tagSCLineup {
+        public byte LineupID;        // 闃靛ID
+        public byte ShapeType;        // 闃靛瀷
+        public byte HeroCnt;
+        public  ushort[] HeroItemIndexList;        // 鎵�鍦ㄦ灏嗚儗鍖呯储寮�+1鍒楄〃 [绔欎綅1鐗╁搧绱㈠紩+1, 绔欎綅2, ...]锛岀珯浣嶆棤姝﹀皢鏃朵负0
+    }
+
+}
diff --git a/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB124_tagSCLineupInfo.cs.meta b/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB124_tagSCLineupInfo.cs.meta
new file mode 100644
index 0000000..0544645
--- /dev/null
+++ b/Main/Core/NetworkPackage/ServerPack/HB1_Role/HB124_tagSCLineupInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3a1dae8baba38b64b823a74ae91865ed
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/ResModule/UILoader.cs b/Main/ResModule/UILoader.cs
index 07a01d4..cb5331c 100644
--- a/Main/ResModule/UILoader.cs
+++ b/Main/ResModule/UILoader.cs
@@ -24,6 +24,7 @@
         ResManager.Instance.UnloadAsset(ResourcesPath.UI_PREFAB_SUFFIX, _assetName);
     }
 
+    //閫氳繃ICON琛ㄥ姞杞�
     public static Sprite LoadSprite(string _iconKey)
     {
         var iconConfig = IconConfig.Get(_iconKey);
diff --git a/Main/System/ItemTip/ItemTipUtility.cs b/Main/System/ItemTip/ItemTipUtility.cs
index 80fab85..f5a71c6 100644
--- a/Main/System/ItemTip/ItemTipUtility.cs
+++ b/Main/System/ItemTip/ItemTipUtility.cs
@@ -8,324 +8,455 @@
 using System.Collections.Generic;
 using System.Linq;
 
-    public class ItemTipUtility
+public class ItemTipUtility
+{
+    public enum TipType
     {
-        public enum TipType
+        Item,
+        Equip,
+        Dogz,
+        GatherSoul, //搴熷純
+        KingTreasure, //鐜嬭�呮硶瀹漷ip
+        PetMount,
+        SpiritWeapon,
+        PeerlessChest,
+        TreasureShow, //鍏朵粬娉曞疂tip
+        BoxItem,    //瀹濈鐗╁搧
+        TreasurePavilion, //鍙ゅ疂鐗╁搧锛堢鐗囷級
+    }
+
+    public class TipData
+    {
+        public string guid;
+        public int itemId;
+        public int goodId;
+        public int exchangeItemId;
+
+        public BaseInfo baseInfo;
+        public BaseProperty baseProperty;
+        public BaseProperty petMountBaseProperty;
+        public SpiritWeaponProperty spiritWeaponProperty;
+        public ShenProperty shenProperty;
+        public LegendProperty legendProperty;
+        public SkillInfo skillInfo;
+        public SuitInfo suitInfo;
+        public StarInfo starInfo;
+        public StrengthenProperty strengthenProperty;
+        public GemInfo gemInfo;
+        public TrainProperty trainProperty;
+        public List<ItemOperateType> operates;
+        public WingRefineMaterials refineMaterials;
+        public GetWay getWay;
+    }
+
+    public struct BaseInfo
+    {
+        public int itemId;
+        public int count;
+        public bool isAuction;
+        public bool isEquiped;
+        public bool isPreview;
+
+        public int star;
+        public int strengthenLevel;
+        public int score;
+        public bool isOverdue;
+        public int auctionSurplusTime;
+        public int overdueSurplusTime;
+        public int levelLimit;
+        public int moneyLimit;
+        public int evolveLevel;
+    }
+
+    public struct BaseProperty
+    {
+        public List<Int2> baseProperties;
+        public int star;
+        public List<Int2> starProperties;
+    }
+
+    public struct SpiritWeaponProperty
+    {
+        public int itemId;
+        public List<Int3> properties;
+    }
+
+    public struct LegendProperty
+    {
+        public bool isPreview;
+        public int itemId;
+        public int trueCount;
+        public List<Int2> properties;
+        public int score;
+    }
+
+    //绁炶灞炴��
+    public struct ShenProperty
+    {
+        public bool isPreview;
+        public int itemId;
+        public List<Int3> properties;
+    }
+
+    public struct SuitInfo
+    {
+        public int job;
+        public string name;
+        public int level;
+        public int maxSuitLevel;
+        public List<int> places;
+        public Dictionary<int, int> placeStars;
+        // public Dictionary<int, EquipSuitPropertyEntry> twoSuitProperties;
+        //  public Dictionary<int, EquipSuitPropertyEntry> fiveSuitProperties;
+        public Dictionary<int, bool> eightSuits;
+    }
+
+    public struct StarInfo
+    {
+        public Int2 equipPosition;
+        public int starLevel;
+        public int maxLevel;
+    }
+
+    public struct StrengthenProperty
+    {
+        public int strengthenLevel;
+        public List<Int2> properties;
+        public int evolveLevel;
+        public int equipPlace;
+    }
+
+    public struct GemInfo
+    {
+        public Dictionary<int, bool> activeStates;
+        public Dictionary<int, int> gems;
+    }
+
+    public struct TrainProperty
+    {
+        public int level;
+        public List<Int2> properties;
+    }
+
+    public struct SkillInfo
+    {
+        public List<int> skills;
+    }
+
+    public struct WingRefineMaterials
+    {
+        public List<Int2> materials;
+    }
+
+    public struct GetWay
+    {
+        public bool defaultUnfold;
+        public int itemId;
+        public List<int> ways;
+    }
+
+
+
+    public struct CustomEquipInfo
+    {
+        public int job;
+        public int itemId;
+        public int score;
+        public bool isEquiped;
+        public List<Int2> legendProperties;
+        public List<int> suitPlaces;
+        public Dictionary<int, int> placeStars;
+        // public Dictionary<EquipSuitType, int> suitLevels;
+        public int strengthenLevel;
+        public int starLevel;
+        public List<Int2> trainProperties;
+        public Dictionary<int, bool> gemHoleActiveStates;
+        public Dictionary<int, int> gems;
+        public List<int> equipSkillList;
+        public int evolveLevel;
+    }
+
+    public struct CustomItemPlus
+    {
+        public int ItemID;
+        public int count;
+        public int Equipped;
+        public int Preview;
+        public int Star;
+        public int PlusLV;
+        public int EvolveLV;
+        public string UserData;
+        public int[] Stone;
+        public CustomEquipWash Wash;
+        public int[][] Equips;
+        public int[] suitPlaces;
+        public int[] suitLevels;
+        public int[] placeStars;
+    }
+
+    public struct CustomEquipWash
+    {
+        public int LV;
+        public int[] Value;
+    }
+
+    public struct ItemViewInfo
+    {
+        public int itemId;
+        public bool compare;
+        public bool unfoldGetWay;
+        public bool isAuctionEquip;
+        public LegendProperty legendProperty;
+        public int score;
+    }
+
+    // static PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
+    // static EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
+    // static EquipStarModel starModel { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } }
+    // static EquipGemModel gemModel { get { return ModelCenter.Instance.GetModel<EquipGemModel>(); } }
+    // static EquipTrainModel trainModel { get { return ModelCenter.Instance.GetModel<EquipTrainModel>(); } }
+    // static EquipStrengthModel strengthenModel { get { return ModelCenter.Instance.GetModel<EquipStrengthModel>(); } }
+    // static MountModel mountModel { get { return ModelCenter.Instance.GetModel<MountModel>(); } }
+    // static PetModel petModel { get { return ModelCenter.Instance.GetModel<PetModel>(); } }
+    // static ComposeWinModel composeModel { get { return ModelCenter.Instance.GetModel<ComposeWinModel>(); } }
+    // static StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
+    // static VirtualPackModel virtualPackModel { get { return ModelCenter.Instance.GetModel<VirtualPackModel>(); } }
+    // static ItemOverdueModel itemOverdueModel { get { return ModelCenter.Instance.GetModel<ItemOverdueModel>(); } }
+    // static BoxGetItemModel boxGetItemModel { get { return ModelCenter.Instance.GetModel<BoxGetItemModel>(); } }
+
+    public static TipData mainTipData { get; private set; }
+    public static TipData secondaryData { get; private set; }
+
+    public static void Show(int itemId)
+    {
+        if (!ItemConfig.HasKey(itemId))
         {
-            Item,
-            Equip,
-            Dogz,
-            GatherSoul, //搴熷純
-            KingTreasure, //鐜嬭�呮硶瀹漷ip
-            PetMount,
-            SpiritWeapon,
-            PeerlessChest,
-            TreasureShow, //鍏朵粬娉曞疂tip
-            BoxItem,    //瀹濈鐗╁搧
-            TreasurePavilion, //鍙ゅ疂鐗╁搧锛堢鐗囷級
+            Debug.LogErrorFormat("鏌ユ棤姝ょ墿鍝侊細{0}", itemId);
+            return;
         }
 
-        public class TipData
+        Show(new ItemViewInfo()
         {
-            public string guid;
-            public int itemId;
-            public int goodId;
-            public int exchangeItemId;
+            itemId = itemId,
+        });
+    }
 
-            public BaseInfo baseInfo;
-            public BaseProperty baseProperty;
-            public BaseProperty petMountBaseProperty;
-            public SpiritWeaponProperty spiritWeaponProperty;
-            public ShenProperty shenProperty;
-            public LegendProperty legendProperty;
-            public SkillInfo skillInfo;
-            public SuitInfo suitInfo;
-            public StarInfo starInfo;
-            public StrengthenProperty strengthenProperty;
-            public GemInfo gemInfo;
-            public TrainProperty trainProperty;
-            public List<ItemOperateType> operates;
-            public WingRefineMaterials refineMaterials;
-            public GetWay getWay;
+    public static void Show(ItemViewInfo item)
+    {
+        var itemId = item.itemId;
+        if (!ItemConfig.HasKey(itemId))
+        {
+            Debug.LogErrorFormat("鏌ユ棤姝ょ墿鍝侊細{0}", itemId);
+            return;
         }
 
-        public struct BaseInfo
-        {
-            public int itemId;
-            public int count;
-            public bool isAuction;
-            public bool isEquiped;
-            public bool isPreview;
+        // secondaryData = null;
 
-            public int star;
-            public int strengthenLevel;
-            public int score;
-            public bool isOverdue;
-            public int auctionSurplusTime;
-            public int overdueSurplusTime;
-            public int levelLimit;
-            public int realmLimit;
-            public int moneyLimit;
-            public int evolveLevel;
+        // var config = ItemConfig.Get(itemId);
+        // PrintItemBrief(itemId);
+
+        // var tipType = GetTipType(itemId);
+        // switch (tipType)
+        // {
+        //     case TipType.Equip:
+        //         mainTipData = CreateNormalEquipData(itemId);
+        //         if (item.isAuctionEquip && !item.legendProperty.Equals(default(LegendProperty)))
+        //         {
+        //             mainTipData.legendProperty = item.legendProperty;
+        //             mainTipData.baseInfo.score = item.score;
+        //             mainTipData.baseInfo.isPreview = false;
+        //         }
+
+        //         if (item.compare)
+        //         {
+        //             if (ItemLogicUtility.Instance.IsJobCompatibleItem(itemId))
+        //             {
+        //                 var equipedGuid = equipModel.GetEquip(new Int2(config.LV, config.EquipPlace));
+        //                 if (equipedGuid != string.Empty)
+        //                 {
+        //                     secondaryData = CreateNormalEquipData(equipedGuid, false);
+        //                 }
+        //             }
+        //         }
+        //         break;
+        //     case TipType.Dogz:
+        //         mainTipData = CreateDogzEquipData(itemId);
+        //         break;
+        //     case TipType.PeerlessChest:
+        //         mainTipData = CreateItemData(itemId);
+        //         mainTipData.getWay = default(GetWay);
+        //         Dictionary<int, int> selectItems;
+        //         if (boxGetItemModel.IsSelectItemByID(itemId, out selectItems))
+        //         {
+        //             secondaryData = CreateNormalEquipData(selectItems.Keys.First());
+        //             secondaryData.getWay = default(GetWay);
+        //         }
+        //         break;
+        //     default:
+        //         mainTipData = CreateItemData(itemId);
+        //         break;
+        // }
+
+        // mainTipData.getWay.defaultUnfold = item.unfoldGetWay;
+        // switch (tipType)
+        // {
+        //     case TipType.Equip:
+        //         WindowCenter.Instance.Open<EquipTipWin>();
+        //         break;
+        //     case TipType.Dogz:
+        //         WindowCenter.Instance.Open<EquipTipWin>();
+        //         break;
+        //     case TipType.KingTreasure:
+        //         var kingTreasureShow = ModelCenter.Instance.GetModel<KingTreasureShowModel>();
+        //         kingTreasureShow.SetInitData(itemId);
+        //         break;
+        //     case TipType.PetMount:
+        //         WindowCenter.Instance.Open<PetMountTipWin>();
+        //         break;
+        //     case TipType.SpiritWeapon:
+        //         WindowCenter.Instance.Open<SpiritWeaponTipWin>();
+        //         break;
+        //     case TipType.PeerlessChest:
+        //         WindowCenter.Instance.Open<PeerlessChestTipWin>();
+        //         break;
+        //     case TipType.TreasureShow:
+        //         TreasureEffectModel effectModel = ModelCenter.Instance.GetModel<TreasureEffectModel>();
+        //         if (config.Effect1 == 232)
+        //         {
+        //             effectModel.SetTreasureID(config.EffectValueA1, 0);
+        //         }
+        //         break;
+        //     case TipType.BoxItem:
+        //         if (WindowCenter.Instance.IsOpen<ItemBoxTipWin>())
+        //         {
+        //             WindowCenter.Instance.Open<ItemTipWin>();
+        //         }
+        //         else
+        //         { 
+        //             WindowCenter.Instance.Open<ItemBoxTipWin>();
+        //         }
+        //         break;
+        //     case TipType.TreasurePavilion:
+        //         TreasurePavilionModel.Instance.selectGubao = config.EffectValueA1;
+        //         TreasurePavilionModel.Instance.showTipFromPiece = config.ID;
+        //         WindowCenter.Instance.OpenIL<TreasurePavilionTipWin>();
+        //         break;
+        //     default:
+        //         WindowCenter.Instance.Open<ItemTipWin>();
+        //         break;
+        // }
+    }
+
+    public static void Show(string guid, bool operatable = true)
+    {
+        var item = PackManager.Instance.GetItemByGuid(guid);
+        if (item == null)
+        {
+            return;
+        }
+        PrintItemBrief(item.itemId, item);
+
+        secondaryData = null;
+        var tipType = GetTipType(item.itemId);
+        switch (tipType)
+        {
+            case TipType.Equip:
+                var packType = item.packType;
+                switch (packType)
+                {
+                    case PackType.Equip:
+                        // mainTipData = CreateNormalEquipData(guid, operatable);
+                        break;
+                    default:
+                        // if (item.isAuction)
+                        // {
+                        //     mainTipData = CreateEquipAuctionData(guid, operatable);
+
+                        //     if (ItemLogicUtility.Instance.IsJobCompatibleItem(item.itemId))
+                        //     {
+                        //         var equipedGuid = equipModel.GetEquip(new Int2(item.config.LV, item.config.EquipPlace));
+                        //         if (equipedGuid != string.Empty)
+                        //         {
+                        //             secondaryData = CreateNormalEquipData(equipedGuid, false);
+                        //         }
+                        //     }
+                        // }
+                        // else
+                        // {
+                        //     mainTipData = CreateNormalEquipData(guid, operatable);
+                        //     var equipedGuid = equipModel.GetEquip(new Int2(item.config.LV, item.config.EquipPlace));
+                        //     if (equipedGuid != guid)
+                        //     {
+                        //         secondaryData = CreateNormalEquipData(equipedGuid, false);
+                        //     }
+                        // }
+                        break;
+                }
+                break;
+
+            default:
+                mainTipData = CreateItemData(guid, operatable);
+                break;
         }
 
-        public struct BaseProperty
+        switch (tipType)
         {
-            public List<Int2> baseProperties;
-            public int star;
-            public List<Int2> starProperties;
+            // case TipType.Equip:
+            //     WindowCenter.Instance.Open<EquipTipWin>();
+            //     break;
+            // case TipType.PetMount:
+            //     WindowCenter.Instance.Open<PetMountTipWin>();
+            //     break;
+            // case TipType.BoxItem:
+            //     if (WindowCenter.Instance.IsOpen<ItemBoxTipWin>())
+            //     {
+            //         WindowCenter.Instance.Open<ItemTipWin>();
+            //     }
+            //     else
+            //     {
+            //         WindowCenter.Instance.Open<ItemBoxTipWin>();
+            //     }
+            //     break;
+            // case TipType.TreasurePavilion:
+            //     TreasurePavilionModel.Instance.selectGubao = item.config.EffectValueA1;
+            //     TreasurePavilionModel.Instance.showTipFromPiece = item.itemId;
+            //     WindowCenter.Instance.OpenIL<TreasurePavilionTipWin>();
+            //     break;
+            default:
+                UIManager.Instance.OpenWindow<ItemTipWin>();
+                break;
         }
 
-        public struct SpiritWeaponProperty
+    }
+
+    public static void ShowGood(int goodId, int itemId)
+    {
+        secondaryData = null;
+
+        var isEquip = ItemLogicUtility.Instance.IsRealmEquip(itemId);
+        if (isEquip)
         {
-            public int itemId;
-            public List<Int3> properties;
+            mainTipData = CreateGoodEquipData(itemId, goodId);
+        }
+        else
+        {
+            mainTipData = CreateGoodItemData(itemId, goodId);
         }
 
-        public struct LegendProperty
+        BuyItemController.Instance.SetGood(goodId);
+        var itemConfig = ItemConfig.Get(itemId);
+        if (isEquip)
         {
-            public bool isPreview;
-            public int itemId;
-            public int trueCount;
-            public List<Int2> properties;
-            public int score;
+            // WindowCenter.Instance.Open<EquipTipWin>();
         }
-
-        //绁炶灞炴��
-        public struct ShenProperty
+        else
         {
-            public bool isPreview;
-            public int itemId;
-            public List<Int3> properties;
-        }
+            var tipType = GetTipType(itemId);
 
-        public struct SuitInfo
-        {
-            public int job;
-            public string name;
-            public int level;
-            public int maxSuitLevel;
-            public List<int> places;
-            public Dictionary<int, int> placeStars;
-           // public Dictionary<int, EquipSuitPropertyEntry> twoSuitProperties;
-          //  public Dictionary<int, EquipSuitPropertyEntry> fiveSuitProperties;
-            public Dictionary<int, bool> eightSuits;
-        }
-
-        public struct StarInfo
-        {
-            public Int2 equipPosition;
-            public int starLevel;
-            public int maxLevel;
-        }
-
-        public struct StrengthenProperty
-        {
-            public int strengthenLevel;
-            public List<Int2> properties;
-            public int evolveLevel;
-            public int equipPlace;
-        }
-
-        public struct GemInfo
-        {
-            public Dictionary<int, bool> activeStates;
-            public Dictionary<int, int> gems;
-        }
-
-        public struct TrainProperty
-        {
-            public int level;
-            public List<Int2> properties;
-        }
-
-        public struct SkillInfo
-        {
-            public List<int> skills;
-        }
-
-        public struct WingRefineMaterials
-        {
-            public List<Int2> materials;
-        }
-
-        public struct GetWay
-        {
-            public bool defaultUnfold;
-            public int itemId;
-            public List<int> ways;
-        }
-
-
-
-        public struct CustomEquipInfo
-        {
-            public int job;
-            public int itemId;
-            public int score;
-            public bool isEquiped;
-            public List<Int2> legendProperties;
-            public List<int> suitPlaces;
-            public Dictionary<int, int> placeStars;
-           // public Dictionary<EquipSuitType, int> suitLevels;
-            public int strengthenLevel;
-            public int starLevel;
-            public List<Int2> trainProperties;
-            public Dictionary<int, bool> gemHoleActiveStates;
-            public Dictionary<int, int> gems;
-            public List<int> equipSkillList;
-            public int evolveLevel;
-        }
-
-        public struct CustomItemPlus
-        {
-            public int ItemID;
-            public int count;
-            public int Equipped;
-            public int Preview;
-            public int Star;
-            public int PlusLV;
-            public int EvolveLV;
-            public string UserData;
-            public int[] Stone;
-            public CustomEquipWash Wash;
-            public int[][] Equips;
-            public int[] suitPlaces;
-            public int[] suitLevels;
-            public int[] placeStars;
-        }
-
-        public struct CustomEquipWash
-        {
-            public int LV;
-            public int[] Value;
-        }
-
-        public struct ItemViewInfo
-        {
-            public int itemId;
-            public bool compare;
-            public bool unfoldGetWay;
-            public bool isAuctionEquip;
-            public LegendProperty legendProperty;
-            public int score;
-        }
-
-        // static PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
-        // static EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
-        // static EquipStarModel starModel { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } }
-        // static EquipGemModel gemModel { get { return ModelCenter.Instance.GetModel<EquipGemModel>(); } }
-        // static EquipTrainModel trainModel { get { return ModelCenter.Instance.GetModel<EquipTrainModel>(); } }
-        // static EquipStrengthModel strengthenModel { get { return ModelCenter.Instance.GetModel<EquipStrengthModel>(); } }
-        // static MountModel mountModel { get { return ModelCenter.Instance.GetModel<MountModel>(); } }
-        // static PetModel petModel { get { return ModelCenter.Instance.GetModel<PetModel>(); } }
-        // static ComposeWinModel composeModel { get { return ModelCenter.Instance.GetModel<ComposeWinModel>(); } }
-        // static StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
-        // static VirtualPackModel virtualPackModel { get { return ModelCenter.Instance.GetModel<VirtualPackModel>(); } }
-        // static ItemOverdueModel itemOverdueModel { get { return ModelCenter.Instance.GetModel<ItemOverdueModel>(); } }
-        // static BoxGetItemModel boxGetItemModel { get { return ModelCenter.Instance.GetModel<BoxGetItemModel>(); } }
-
-        public static TipData mainTipData { get; private set; }
-        public static TipData secondaryData { get; private set; }
-
-        public static void Show(int itemId)
-        {
-            if (!ItemConfig.HasKey(itemId))
-            {
-                Debug.LogErrorFormat("鏌ユ棤姝ょ墿鍝侊細{0}", itemId);
-                return;
-            }
-
-            Show(new ItemViewInfo()
-            {
-                itemId = itemId,
-            });
-        }
-
-        public static void Show(ItemViewInfo item)
-        {
-            var itemId = item.itemId;
-            if (!ItemConfig.HasKey(itemId))
-            {
-                Debug.LogErrorFormat("鏌ユ棤姝ょ墿鍝侊細{0}", itemId);
-                return;
-            }
-
-            // secondaryData = null;
-
-            // var config = ItemConfig.Get(itemId);
-            // PrintItemBrief(itemId);
-
-            // var tipType = GetTipType(itemId);
             // switch (tipType)
             // {
-            //     case TipType.Equip:
-            //         mainTipData = CreateNormalEquipData(itemId);
-            //         if (item.isAuctionEquip && !item.legendProperty.Equals(default(LegendProperty)))
-            //         {
-            //             mainTipData.legendProperty = item.legendProperty;
-            //             mainTipData.baseInfo.score = item.score;
-            //             mainTipData.baseInfo.isPreview = false;
-            //         }
-
-            //         if (item.compare)
-            //         {
-            //             if (ItemLogicUtility.Instance.IsJobCompatibleItem(itemId))
-            //             {
-            //                 var equipedGuid = equipModel.GetEquip(new Int2(config.LV, config.EquipPlace));
-            //                 if (equipedGuid != string.Empty)
-            //                 {
-            //                     secondaryData = CreateNormalEquipData(equipedGuid, false);
-            //                 }
-            //             }
-            //         }
-            //         break;
-            //     case TipType.Dogz:
-            //         mainTipData = CreateDogzEquipData(itemId);
-            //         break;
-            //     case TipType.PeerlessChest:
-            //         mainTipData = CreateItemData(itemId);
-            //         mainTipData.getWay = default(GetWay);
-            //         Dictionary<int, int> selectItems;
-            //         if (boxGetItemModel.IsSelectItemByID(itemId, out selectItems))
-            //         {
-            //             secondaryData = CreateNormalEquipData(selectItems.Keys.First());
-            //             secondaryData.getWay = default(GetWay);
-            //         }
-            //         break;
-            //     default:
-            //         mainTipData = CreateItemData(itemId);
-            //         break;
-            // }
-
-            // mainTipData.getWay.defaultUnfold = item.unfoldGetWay;
-            // switch (tipType)
-            // {
-            //     case TipType.Equip:
-            //         WindowCenter.Instance.Open<EquipTipWin>();
-            //         break;
-            //     case TipType.Dogz:
-            //         WindowCenter.Instance.Open<EquipTipWin>();
-            //         break;
-            //     case TipType.KingTreasure:
-            //         var kingTreasureShow = ModelCenter.Instance.GetModel<KingTreasureShowModel>();
-            //         kingTreasureShow.SetInitData(itemId);
-            //         break;
             //     case TipType.PetMount:
             //         WindowCenter.Instance.Open<PetMountTipWin>();
-            //         break;
-            //     case TipType.SpiritWeapon:
-            //         WindowCenter.Instance.Open<SpiritWeaponTipWin>();
-            //         break;
-            //     case TipType.PeerlessChest:
-            //         WindowCenter.Instance.Open<PeerlessChestTipWin>();
-            //         break;
-            //     case TipType.TreasureShow:
-            //         TreasureEffectModel effectModel = ModelCenter.Instance.GetModel<TreasureEffectModel>();
-            //         if (config.Effect1 == 232)
-            //         {
-            //             effectModel.SetTreasureID(config.EffectValueA1, 0);
-            //         }
             //         break;
             //     case TipType.BoxItem:
             //         if (WindowCenter.Instance.IsOpen<ItemBoxTipWin>())
@@ -333,1679 +464,1534 @@
             //             WindowCenter.Instance.Open<ItemTipWin>();
             //         }
             //         else
-            //         { 
+            //         {
             //             WindowCenter.Instance.Open<ItemBoxTipWin>();
             //         }
-            //         break;
-            //     case TipType.TreasurePavilion:
-            //         TreasurePavilionModel.Instance.selectGubao = config.EffectValueA1;
-            //         TreasurePavilionModel.Instance.showTipFromPiece = config.ID;
-            //         WindowCenter.Instance.OpenIL<TreasurePavilionTipWin>();
             //         break;
             //     default:
             //         WindowCenter.Instance.Open<ItemTipWin>();
             //         break;
             // }
         }
+    }
 
-        // public static void Show(string guid, bool operatable = true)
+    // public static void ShowCustomEquip(CustomEquipInfo info)
+    // {
+    //     secondaryData = null;
+    //     mainTipData = CreateCustomEquipData(info);
+    //     WindowCenter.Instance.Open<EquipTipWin>();
+    // }
+
+    
+
+    // static TipData CreateNormalEquipData(string guid, bool operatable)
+    // {
+    //     var item = packModel.GetItemByGuid(guid);
+    //     if (item == null)
+    //     {
+    //         return default(TipData);
+    //     }
+
+    //     return new TipData()
+    //     {
+    //         itemId = item.itemId,
+    //         guid = guid,
+
+    //         baseInfo = GetBaseInfo(guid),
+    //         baseProperty = GetBaseProperty(guid),
+    //         spiritWeaponProperty = GetSpiritWeaponProperty(item.itemId),
+    //         legendProperty = GetLegendProperty(guid),
+    //         skillInfo = GetSkillInfo(item.itemId, guid),
+    //         suitInfo = GetSuitInfo(guid),
+    //         starInfo = GetStarInfo(guid),
+    //         strengthenProperty = GetStrengthenProperty(guid),
+    //         gemInfo = GetGemInfo(guid),
+    //         trainProperty = GetTrainProperty(guid),
+    //         operates = operatable ? GetOperates(guid) : null,
+    //         shenProperty = GetShenProperty(item.itemId)
+    //     };
+    // }
+
+    // static TipData CreateNormalEquipData(int itemId)
+    // {
+    //     return new TipData()
+    //     {
+    //         itemId = itemId,
+    //         guid = string.Empty,
+
+    //         baseInfo = GetBaseInfo(itemId),
+    //         baseProperty = GetBaseProperty(itemId),
+    //         legendProperty = GetLegendProperty(itemId),
+    //         spiritWeaponProperty = GetSpiritWeaponProperty(itemId),
+    //         skillInfo = GetSkillInfo(itemId),
+    //         suitInfo = GetSuitInfo(itemId),
+    //         gemInfo = GetGemInfo(itemId),
+    //         starInfo = GetStarInfo(itemId),
+    //         getWay = GetGetWay(itemId),
+    //         shenProperty = GetShenProperty(itemId)
+    //     };
+    // }
+
+    // static TipData CreateDogzEquipData(string guid)
+    // {
+    //     var item = packModel.GetItemByGuid(guid);
+    //     if (item == null)
+    //     {
+    //         return default(TipData);
+    //     }
+
+    //     return new TipData()
+    //     {
+    //         itemId = item.itemId,
+    //         guid = guid,
+
+    //         baseInfo = GetBaseInfo(guid),
+    //         baseProperty = GetBaseProperty(guid),
+    //         legendProperty = GetLegendProperty(guid),
+    //         operates = GetOperates(guid),
+    //     };
+    // }
+
+    // static TipData CreateDogzEquipData(int itemId)
+    // {
+    //     return new TipData()
+    //     {
+    //         itemId = itemId,
+    //         guid = string.Empty,
+
+    //         baseInfo = GetBaseInfo(itemId),
+    //         baseProperty = GetBaseProperty(itemId),
+    //         legendProperty = GetLegendProperty(itemId),
+    //         getWay = GetGetWay(itemId)
+    //     };
+    // }
+
+    // static TipData CreateCustomEquipData(CustomEquipInfo info)
+    // {
+    //     var config = ItemConfig.Get(info.itemId);
+    //     if (config == null)
+    //     {
+    //         return default(TipData);
+    //     }
+
+    //     var baseInfo = new BaseInfo()
+    //     {
+    //         itemId = info.itemId,
+    //         star = info.starLevel,
+    //         strengthenLevel = info.strengthenLevel,
+    //         score = info.score,
+    //         isEquiped = info.isEquiped,
+    //         evolveLevel = info.evolveLevel,
+    //     };
+
+    //     var baseProperty = GetBaseProperty(info.itemId);
+    //     if (info.starLevel > 0)
+    //     {
+    //         var starProperties = new List<Int2>();
+    //         baseProperty.star = info.starLevel;
+    //         var starConfig = EquipStarConfig.Get(config.LV, config.EquipPlace, info.starLevel);
+    //         starProperties.AddRange(starConfig.BaseAttrInfo);
+    //         baseProperty.starProperties = starProperties;
+    //     }
+
+    //     var legendProperty = new LegendProperty()
+    //     {
+    //         properties = info.legendProperties,
+    //     };
+
+    //     var skillInfo = GetSkillInfo(info.itemId, info);
+    //     var suitInfo = default(SuitInfo);
+    //     if (ItemLogicUtility.Instance.IsSuitEquip(info.itemId))
+    //     {
+    //         var job = config.JobLimit;
+    //         var twoConfigs = EquipSuitConfig.GetConfigs(job, config.LV, EquipSuitType.TwoSuit);
+    //         var name = twoConfigs[0].name;
+    //         var level = config.LV;
+    //         var maxSuitLevel = EquipStarModel.GetMaxStarLevel(level);
+
+    //         var twoSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
+    //         var fiveSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
+    //         var eightSuits = new Dictionary<int, bool>();
+    //         var eightSuitLevel = info.suitLevels[EquipSuitType.EightSuit];
+
+    //         for (var i = 0; i <= 9; i++, i++, i++)
+    //         {
+    //             var configs = EquipSuitConfig.GetConfigs(job, level, EquipSuitType.TwoSuit);
+    //             var actived = info.suitLevels[EquipSuitType.TwoSuit] >= i;
+    //             var properties = new List<Int2>();
+    //             foreach (var item in configs)
+    //             {
+    //                 if (item.star == i)
+    //                 {
+    //                     properties.AddRange(item.attr);
+    //                     break;
+    //                 }
+    //             }
+
+    //             twoSuitProperties[i] = new EquipSuitPropertyEntry()
+    //             {
+    //                 type = EquipSuitType.TwoSuit,
+    //                 actived = actived,
+    //                 properties = properties,
+    //             };
+
+    //             configs = EquipSuitConfig.GetConfigs(job, level, EquipSuitType.FiveSuit);
+    //             actived = info.suitLevels[EquipSuitType.FiveSuit] >= i;
+    //             properties = new List<Int2>();
+    //             foreach (var item in configs)
+    //             {
+    //                 if (item.star == i)
+    //                 {
+    //                     properties.AddRange(item.attr);
+    //                     break;
+    //                 }
+    //             }
+
+    //             fiveSuitProperties[i] = new EquipSuitPropertyEntry()
+    //             {
+    //                 type = EquipSuitType.TwoSuit,
+    //                 actived = actived,
+    //                 properties = properties,
+    //             };
+
+    //             eightSuits[i] = eightSuitLevel >= i;
+    //         }
+
+    //         suitInfo = new SuitInfo()
+    //         {
+    //             name = name,
+    //             level = level,
+    //             job = job,
+    //             maxSuitLevel = maxSuitLevel,
+    //             places = info.suitPlaces,
+    //             placeStars = info.placeStars,
+    //             twoSuitProperties = twoSuitProperties,
+    //             fiveSuitProperties = fiveSuitProperties,
+    //             eightSuits = eightSuits
+    //         };
+    //     }
+
+    //     var starInfo = new StarInfo()
+    //     {
+    //         equipPosition = new Int2(config.LV, config.EquipPlace),
+    //         starLevel = info.starLevel,
+    //         maxLevel = config.LV == 0 ? 0 : EquipStarModel.GetMaxStarLevel(config.ItemColor, config.LV),
+    //     };
+
+    //     var type = EquipStrengthModel.GetEquipStrengthType(config.EquipPlace);
+    //     var strengthenConfig = ItemPlusConfig.GetTypeAndLevel(type, info.strengthenLevel);
+    //     var strengthenProperties = new List<Int2>();
+    //     for (int i = 0; i < strengthenConfig.attType.Length; i++)
+    //     {
+    //         strengthenProperties.Add(new Int2(strengthenConfig.attType[i], strengthenConfig.attValue[i]));
+    //     }
+    //     var strengthenProperty = new StrengthenProperty()
+    //     {
+    //         strengthenLevel = info.strengthenLevel,
+    //         properties = strengthenProperties,
+    //         equipPlace = config.EquipPlace,
+    //         evolveLevel = info.evolveLevel,
+    //     };
+
+    //     var gemInfo = new GemInfo()
+    //     {
+    //         activeStates = info.gemHoleActiveStates,
+    //         gems = info.gems,
+    //     };
+
+    //     var trainProperty = new TrainProperty()
+    //     {
+    //         properties = info.trainProperties,
+    //     };
+
+    //     return new TipData()
+    //     {
+    //         itemId = info.itemId,
+    //         baseInfo = baseInfo,
+    //         baseProperty = baseProperty,
+    //         legendProperty = legendProperty,
+    //         skillInfo = skillInfo,
+    //         suitInfo = suitInfo,
+    //         starInfo = starInfo,
+    //         strengthenProperty = strengthenProperty,
+    //         gemInfo = gemInfo,
+    //         trainProperty = trainProperty,
+    //         shenProperty = GetShenProperty(info.itemId)
+    //     };
+    // }
+
+    static TipData CreateGoodEquipData(int itemId, int goodId)
+    {
+        return new TipData()
+        {
+            itemId = itemId,
+            guid = string.Empty,
+            goodId = goodId,
+
+            baseInfo = GetBaseInfo(itemId),
+            baseProperty = GetBaseProperty(itemId),
+            //spiritWeaponProperty = GetSpiritWeaponProperty(itemId),
+            //legendProperty = GetLegendProperty(itemId),
+            skillInfo = GetSkillInfo(itemId),
+            //suitInfo = GetSuitInfo(itemId),
+            //gemInfo = GetGemInfo(itemId),
+            //starInfo = GetStarInfo(itemId),
+            operates = GetGoodOperates(goodId),
+            //shenProperty = GetShenProperty(itemId)
+        };
+    }
+
+    // static TipData CreateEquipAuctionData(string guid, bool operatable)
+    // {
+    //     var item = packModel.GetItemByGuid(guid);
+    //     if (item == null)
+    //     {
+    //         return default(TipData);
+    //     }
+
+    //     var legendProperty = GetLegendProperty(guid);
+    //     if (legendProperty.properties.IsNullOrEmpty())
+    //     {
+    //         legendProperty = GetLegendProperty(item.itemId);
+    //     }
+
+    //     return new TipData()
+    //     {
+    //         itemId = item.itemId,
+    //         guid = guid,
+
+    //         baseInfo = GetBaseInfo(guid),
+    //         baseProperty = GetBaseProperty(item.itemId),
+    //         spiritWeaponProperty = GetSpiritWeaponProperty(item.itemId),
+    //         legendProperty = legendProperty,
+    //         skillInfo = GetSkillInfo(item.itemId, guid),
+    //         suitInfo = GetSuitInfo(item.itemId),
+    //         operates = operatable ? GetOperates(guid) : null,
+
+    //         starInfo = GetStarInfo(guid),
+    //         gemInfo = GetGemInfo(guid),
+    //         shenProperty = GetShenProperty(item.itemId)
+    //     };
+    // }
+
+    static TipData CreateItemData(string guid, bool operatable)
+    {
+        var item = PackManager.Instance.GetItemByGuid(guid);
+        if (item == null)
+        {
+            return default(TipData);
+        }
+
+        return new TipData()
+        {
+            itemId = item.itemId,
+            guid = guid,
+
+            baseInfo = GetBaseInfo(guid),
+            baseProperty = GetBaseProperty(item.itemId),
+            // spiritWeaponProperty = GetSpiritWeaponProperty(item.itemId),
+            // legendProperty = GetLegendProperty(guid),
+            // petMountBaseProperty = GetPetMountBaseProperty(item.itemId),
+            // operates = operatable ? GetOperates(guid) : null,
+            // refineMaterials = GetWingRefineMaterials(guid),
+            // shenProperty = GetShenProperty(item.itemId)
+        };
+    }
+
+    // static TipData CreateItemData(int itemId)
+    // {
+    //     return new TipData()
+    //     {
+    //         itemId = itemId,
+    //         baseInfo = GetBaseInfo(itemId),
+    //         baseProperty = GetBaseProperty(itemId),
+    //         exchangeItemId = itemId,
+    //         spiritWeaponProperty = GetSpiritWeaponProperty(itemId),
+    //         legendProperty = GetLegendProperty(itemId),
+    //         petMountBaseProperty = GetPetMountBaseProperty(itemId),
+    //         getWay = GetGetWay(itemId),
+    //         shenProperty = GetShenProperty(itemId)
+    //     };
+    // }
+
+    static TipData CreateGoodItemData(int itemId, int goodId)
+    {
+        return new TipData()
+        {
+            itemId = itemId,
+            goodId = goodId,
+            baseInfo = GetBaseInfo(itemId),
+            baseProperty = GetBaseProperty(itemId),
+            // legendProperty = GetLegendProperty(itemId),
+            // spiritWeaponProperty = GetSpiritWeaponProperty(itemId),
+            // petMountBaseProperty = GetPetMountBaseProperty(itemId),
+            operates = GetGoodOperates(goodId),
+            // shenProperty = GetShenProperty(itemId)
+        };
+    }
+
+    
+    
+    // public static void Operate(ItemOperateType type, string guid)
+    // {
+    //     switch (type)
+    //     {
+    //         case ItemOperateType.putOn:
+    //             ItemOperateUtility.Instance.PutOnItem(guid);
+    //             break;
+    //         case ItemOperateType.gotoPuton:
+    //             ItemOperateUtility.Instance.PutOnItem(guid);
+    //             break;
+    //         case ItemOperateType.putOff:
+    //             ItemOperateUtility.Instance.PutOffEquip(guid);
+    //             break;
+    //         case ItemOperateType.putAway:
+    //             ItemOperateUtility.Instance.PutAway(guid);
+    //             break;
+    //         case ItemOperateType.putIn:
+    //             ItemOperateUtility.Instance.PutInWareHouse(guid);
+    //             break;
+    //         case ItemOperateType.putOut:
+    //             ItemOperateUtility.Instance.TakeOutFromWarehouse(guid);
+    //             break;
+    //         case ItemOperateType.sell:
+    //             ItemOperateUtility.Instance.SellItem(guid);
+    //             break;
+    //         case ItemOperateType.strength:
+    //             ItemOperateUtility.Instance.GotoStrengthen(guid);
+    //             break;
+    //         case ItemOperateType.star:
+    //             ItemOperateUtility.Instance.GotoStarUpgrade(guid);
+    //             break;
+    //         case ItemOperateType.inlay:
+    //             ItemOperateUtility.Instance.GotoInlayItem(guid);
+    //             break;
+    //         case ItemOperateType.train:
+    //             ItemOperateUtility.Instance.GotoTrain(guid);
+    //             break;
+    //         case ItemOperateType.makeUse:
+    //             ItemOperateUtility.Instance.GotoUseItem(guid);
+    //             break;
+    //         case ItemOperateType.split:
+    //             ItemOperateUtility.Instance.OnClickSplitBtn(guid);
+    //             break;
+    //         case ItemOperateType.compose:
+    //             var wannaComposeItem = packModel.GetItemByGuid(guid);
+    //             var jumpId = 0;
+    //             var isUnlock = composeModel.CheckComposeItemById(wannaComposeItem.itemId, out jumpId);
+    //             if (isUnlock)
+    //             {
+    //                 ItemOperateUtility.Instance.GotoComposeItem(jumpId);
+    //             }
+    //             break;
+    //         case ItemOperateType.renewal:
+    //             ItemOperateUtility.Instance.RenewalItem(guid);
+    //             break;
+    //         case ItemOperateType.exchange:
+    //             WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.ExchangeActiveToken);
+    //             break;
+    //         case ItemOperateType.lsExchange:
+    //             WindowCenter.Instance.Open<LingShiChange>();
+    //             break;
+    //         case ItemOperateType.default1:
+    //             var item = packModel.GetItemByGuid(guid);
+    //             if (item == null)
+    //             {
+    //                 break;
+    //             }
+
+    //             EquipEvolveModel.Instance.EquipJump(item.config.LV, item.config.EquipPlace);
+    //             WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)2013);
+    //             break;
+    //     }
+    // }
+
+    // public static void GoodOperate(ItemOperateType type, int goodId, int count)
+    // {
+    //     var config = StoreConfig.Get(goodId);
+    //     storeModel.SendBuyShopItem(config, count);
+    // }
+
+
+    private static BaseInfo GetBaseInfo(int itemId)
+    {
+        var config = ItemConfig.Get(itemId);
+        var money = 0;
+        if (config.Type == 81)
+        {
+            var chestConfig = ChestsConfig.Get(itemId);
+            money = chestConfig.OpenMoney;
+        }
+
+        var baseInfo = new BaseInfo()
+        {
+            itemId = itemId,
+            isAuction = false,
+            isEquiped = false,
+            isPreview = true,
+            //score = ItemLogicUtility.Instance.GetEquipScore(itemId, null, true),
+            auctionSurplusTime = 0,
+            levelLimit = config.UseLV,
+            moneyLimit = money,
+        };
+
+        return baseInfo;
+    }
+
+    private static BaseInfo GetBaseInfo(string guid)
+    {
+        var item = PackManager.Instance.GetItemByGuid(guid);
+
+        var level = item.config.LV;
+        var place = item.config.EquipPlace;
+
+        var isEquiped = false;// equipModel.GetEquip(new Int2(level, place)) == guid;
+
+        // var type = EquipStrengthModel.GetEquipStrengthType(place);
+        var star = 0; //starModel.GetEquipStarLevel(new Int2(level, place));
+        var maxStrengthenLevel = 0; //strengthenModel.GetEquipLevelMax(type, level);
+        var placeStrengthenLevel = 0;   //strengthenModel.GetStrengthLevel(level, place);
+
+        var money = 0;
+        // if (item.config.Type == 81)
         // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return;
-        //     }
-        //     PrintItemBrief(item.itemId, guid);
-
-        //     secondaryData = null;
-        //     var tipType = GetTipType(item.itemId);
-        //     switch (tipType)
-        //     {
-        //         case TipType.Equip:
-        //             var packType = item.packType;
-        //             switch (packType)
-        //             {
-        //                 case PackType.Equip:
-        //                     mainTipData = CreateNormalEquipData(guid, operatable);
-        //                     break;
-        //                 default:
-        //                     if (item.isAuction)
-        //                     {
-        //                         mainTipData = CreateEquipAuctionData(guid, operatable);
-
-        //                         if (ItemLogicUtility.Instance.IsJobCompatibleItem(item.itemId))
-        //                         {
-        //                             var equipedGuid = equipModel.GetEquip(new Int2(item.config.LV, item.config.EquipPlace));
-        //                             if (equipedGuid != string.Empty)
-        //                             {
-        //                                 secondaryData = CreateNormalEquipData(equipedGuid, false);
-        //                             }
-        //                         }
-        //                     }
-        //                     else
-        //                     {
-        //                         mainTipData = CreateNormalEquipData(guid, operatable);
-        //                         var equipedGuid = equipModel.GetEquip(new Int2(item.config.LV, item.config.EquipPlace));
-        //                         if (equipedGuid != guid)
-        //                         {
-        //                             secondaryData = CreateNormalEquipData(equipedGuid, false);
-        //                         }
-        //                     }
-        //                     break;
-        //             }
-        //             break;
-        //         case TipType.Dogz:
-        //             mainTipData = CreateDogzEquipData(guid);
-        //             break;
-        //         default:
-        //             mainTipData = CreateItemData(guid, operatable);
-        //             break;
-        //     }
-
-        //     switch (tipType)
-        //     {
-        //         case TipType.Equip:
-        //             WindowCenter.Instance.Open<EquipTipWin>();
-        //             break;
-        //         case TipType.Dogz:
-        //             WindowCenter.Instance.Open<EquipTipWin>();
-        //             break;
-        //         case TipType.KingTreasure:
-        //             var kingTreasureShow = ModelCenter.Instance.GetModel<KingTreasureShowModel>();
-        //             kingTreasureShow.SetInitData(item.itemId);
-        //             break;
-        //         case TipType.PetMount:
-        //             WindowCenter.Instance.Open<PetMountTipWin>();
-        //             break;
-        //         case TipType.SpiritWeapon:
-        //             WindowCenter.Instance.Open<SpiritWeaponTipWin>();
-        //             break;
-        //         case TipType.BoxItem:
-        //             if (WindowCenter.Instance.IsOpen<ItemBoxTipWin>())
-        //             {
-        //                 WindowCenter.Instance.Open<ItemTipWin>();
-        //             }
-        //             else
-        //             {
-        //                 WindowCenter.Instance.Open<ItemBoxTipWin>();
-        //             }
-        //             break;
-        //         case TipType.TreasurePavilion:
-        //             TreasurePavilionModel.Instance.selectGubao = item.config.EffectValueA1;
-        //             TreasurePavilionModel.Instance.showTipFromPiece = item.itemId;
-        //             WindowCenter.Instance.OpenIL<TreasurePavilionTipWin>();
-        //             break;
-        //         default:
-        //             WindowCenter.Instance.Open<ItemTipWin>();
-        //             break;
-        //     }
-
+        //     var chestConfig = ChestsConfig.Get(item.itemId);
+        //     money = chestConfig.OpenMoney;
         // }
 
-        public static void ShowGood(int goodId, int itemId)
+        var baseInfo = new BaseInfo()
         {
-            secondaryData = null;
+            itemId = item.itemId,
+            count = item.count,
+            isAuction = item.isAuction,
+            isEquiped = isEquiped,
+            isPreview = false,
+            score = item.score,
+            isOverdue = ItemLogicUtility.Instance.IsOverdue(guid),
+            auctionSurplusTime = item.isAuction ? item.auctionSurplusTime : 0,
+            overdueSurplusTime = item.overdueSurplusTime,
+            levelLimit = item.isAuction ? 0 : item.config.UseLV,
+            star = isEquiped ? star : -1,
+            strengthenLevel = isEquiped ? Mathf.Min(placeStrengthenLevel, maxStrengthenLevel) : 0,
+            moneyLimit = money,
+        };
 
-            var isEquip = ItemLogicUtility.Instance.IsRealmEquip(itemId);
-            if (isEquip)
-            {
-                mainTipData = CreateGoodEquipData(itemId, goodId);
-            }
-            else
-            {
-                mainTipData = CreateGoodItemData(itemId, goodId);
-            }
+        return baseInfo;
+    }
 
-            BuyItemController.Instance.SetGood(goodId);
-            var itemConfig = ItemConfig.Get(itemId);
-            if (isEquip)
-            {
-                // WindowCenter.Instance.Open<EquipTipWin>();
-            }
-            else
-            {
-                var tipType = GetTipType(itemId);
+    private static BaseProperty GetBaseProperty(int itemId)
+    {
+        var baseProperties = new List<Int2>();
+        var config = ItemConfig.Get(itemId);
 
-                // switch (tipType)
-                // {
-                //     case TipType.PetMount:
-                //         WindowCenter.Instance.Open<PetMountTipWin>();
-                //         break;
-                //     case TipType.BoxItem:
-                //         if (WindowCenter.Instance.IsOpen<ItemBoxTipWin>())
-                //         {
-                //             WindowCenter.Instance.Open<ItemTipWin>();
-                //         }
-                //         else
-                //         {
-                //             WindowCenter.Instance.Open<ItemBoxTipWin>();
-                //         }
-                //         break;
-                //     default:
-                //         WindowCenter.Instance.Open<ItemTipWin>();
-                //         break;
-                // }
+        if (config.Effect1 == 220)
+        {
+            return GetBaseProperty(config.EffectValueA1);
+        }
+
+        if (!ItemLogicUtility.Instance.IsDogzEquip(itemId))
+        {
+            if (config.Effect1 != 0)
+            {
+                baseProperties.Add(new Int2(config.Effect1, config.EffectValueA1));
             }
         }
 
-        // public static void ShowCustomEquip(CustomEquipInfo info)
-        // {
-        //     secondaryData = null;
-        //     mainTipData = CreateCustomEquipData(info);
-        //     WindowCenter.Instance.Open<EquipTipWin>();
-        // }
-
-        
-
-        // static TipData CreateNormalEquipData(string guid, bool operatable)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return default(TipData);
-        //     }
-
-        //     return new TipData()
-        //     {
-        //         itemId = item.itemId,
-        //         guid = guid,
-
-        //         baseInfo = GetBaseInfo(guid),
-        //         baseProperty = GetBaseProperty(guid),
-        //         spiritWeaponProperty = GetSpiritWeaponProperty(item.itemId),
-        //         legendProperty = GetLegendProperty(guid),
-        //         skillInfo = GetSkillInfo(item.itemId, guid),
-        //         suitInfo = GetSuitInfo(guid),
-        //         starInfo = GetStarInfo(guid),
-        //         strengthenProperty = GetStrengthenProperty(guid),
-        //         gemInfo = GetGemInfo(guid),
-        //         trainProperty = GetTrainProperty(guid),
-        //         operates = operatable ? GetOperates(guid) : null,
-        //         shenProperty = GetShenProperty(item.itemId)
-        //     };
-        // }
-
-        // static TipData CreateNormalEquipData(int itemId)
-        // {
-        //     return new TipData()
-        //     {
-        //         itemId = itemId,
-        //         guid = string.Empty,
-
-        //         baseInfo = GetBaseInfo(itemId),
-        //         baseProperty = GetBaseProperty(itemId),
-        //         legendProperty = GetLegendProperty(itemId),
-        //         spiritWeaponProperty = GetSpiritWeaponProperty(itemId),
-        //         skillInfo = GetSkillInfo(itemId),
-        //         suitInfo = GetSuitInfo(itemId),
-        //         gemInfo = GetGemInfo(itemId),
-        //         starInfo = GetStarInfo(itemId),
-        //         getWay = GetGetWay(itemId),
-        //         shenProperty = GetShenProperty(itemId)
-        //     };
-        // }
-
-        // static TipData CreateDogzEquipData(string guid)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return default(TipData);
-        //     }
-
-        //     return new TipData()
-        //     {
-        //         itemId = item.itemId,
-        //         guid = guid,
-
-        //         baseInfo = GetBaseInfo(guid),
-        //         baseProperty = GetBaseProperty(guid),
-        //         legendProperty = GetLegendProperty(guid),
-        //         operates = GetOperates(guid),
-        //     };
-        // }
-
-        // static TipData CreateDogzEquipData(int itemId)
-        // {
-        //     return new TipData()
-        //     {
-        //         itemId = itemId,
-        //         guid = string.Empty,
-
-        //         baseInfo = GetBaseInfo(itemId),
-        //         baseProperty = GetBaseProperty(itemId),
-        //         legendProperty = GetLegendProperty(itemId),
-        //         getWay = GetGetWay(itemId)
-        //     };
-        // }
-
-        // static TipData CreateCustomEquipData(CustomEquipInfo info)
-        // {
-        //     var config = ItemConfig.Get(info.itemId);
-        //     if (config == null)
-        //     {
-        //         return default(TipData);
-        //     }
-
-        //     var baseInfo = new BaseInfo()
-        //     {
-        //         itemId = info.itemId,
-        //         star = info.starLevel,
-        //         strengthenLevel = info.strengthenLevel,
-        //         score = info.score,
-        //         isEquiped = info.isEquiped,
-        //         evolveLevel = info.evolveLevel,
-        //     };
-
-        //     var baseProperty = GetBaseProperty(info.itemId);
-        //     if (info.starLevel > 0)
-        //     {
-        //         var starProperties = new List<Int2>();
-        //         baseProperty.star = info.starLevel;
-        //         var starConfig = EquipStarConfig.Get(config.LV, config.EquipPlace, info.starLevel);
-        //         starProperties.AddRange(starConfig.BaseAttrInfo);
-        //         baseProperty.starProperties = starProperties;
-        //     }
-
-        //     var legendProperty = new LegendProperty()
-        //     {
-        //         properties = info.legendProperties,
-        //     };
-
-        //     var skillInfo = GetSkillInfo(info.itemId, info);
-        //     var suitInfo = default(SuitInfo);
-        //     if (ItemLogicUtility.Instance.IsSuitEquip(info.itemId))
-        //     {
-        //         var job = config.JobLimit;
-        //         var twoConfigs = EquipSuitConfig.GetConfigs(job, config.LV, EquipSuitType.TwoSuit);
-        //         var name = twoConfigs[0].name;
-        //         var level = config.LV;
-        //         var maxSuitLevel = EquipStarModel.GetMaxStarLevel(level);
-
-        //         var twoSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
-        //         var fiveSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
-        //         var eightSuits = new Dictionary<int, bool>();
-        //         var eightSuitLevel = info.suitLevels[EquipSuitType.EightSuit];
-
-        //         for (var i = 0; i <= 9; i++, i++, i++)
-        //         {
-        //             var configs = EquipSuitConfig.GetConfigs(job, level, EquipSuitType.TwoSuit);
-        //             var actived = info.suitLevels[EquipSuitType.TwoSuit] >= i;
-        //             var properties = new List<Int2>();
-        //             foreach (var item in configs)
-        //             {
-        //                 if (item.star == i)
-        //                 {
-        //                     properties.AddRange(item.attr);
-        //                     break;
-        //                 }
-        //             }
-
-        //             twoSuitProperties[i] = new EquipSuitPropertyEntry()
-        //             {
-        //                 type = EquipSuitType.TwoSuit,
-        //                 actived = actived,
-        //                 properties = properties,
-        //             };
-
-        //             configs = EquipSuitConfig.GetConfigs(job, level, EquipSuitType.FiveSuit);
-        //             actived = info.suitLevels[EquipSuitType.FiveSuit] >= i;
-        //             properties = new List<Int2>();
-        //             foreach (var item in configs)
-        //             {
-        //                 if (item.star == i)
-        //                 {
-        //                     properties.AddRange(item.attr);
-        //                     break;
-        //                 }
-        //             }
-
-        //             fiveSuitProperties[i] = new EquipSuitPropertyEntry()
-        //             {
-        //                 type = EquipSuitType.TwoSuit,
-        //                 actived = actived,
-        //                 properties = properties,
-        //             };
-
-        //             eightSuits[i] = eightSuitLevel >= i;
-        //         }
-
-        //         suitInfo = new SuitInfo()
-        //         {
-        //             name = name,
-        //             level = level,
-        //             job = job,
-        //             maxSuitLevel = maxSuitLevel,
-        //             places = info.suitPlaces,
-        //             placeStars = info.placeStars,
-        //             twoSuitProperties = twoSuitProperties,
-        //             fiveSuitProperties = fiveSuitProperties,
-        //             eightSuits = eightSuits
-        //         };
-        //     }
-
-        //     var starInfo = new StarInfo()
-        //     {
-        //         equipPosition = new Int2(config.LV, config.EquipPlace),
-        //         starLevel = info.starLevel,
-        //         maxLevel = config.LV == 0 ? 0 : EquipStarModel.GetMaxStarLevel(config.ItemColor, config.LV),
-        //     };
-
-        //     var type = EquipStrengthModel.GetEquipStrengthType(config.EquipPlace);
-        //     var strengthenConfig = ItemPlusConfig.GetTypeAndLevel(type, info.strengthenLevel);
-        //     var strengthenProperties = new List<Int2>();
-        //     for (int i = 0; i < strengthenConfig.attType.Length; i++)
-        //     {
-        //         strengthenProperties.Add(new Int2(strengthenConfig.attType[i], strengthenConfig.attValue[i]));
-        //     }
-        //     var strengthenProperty = new StrengthenProperty()
-        //     {
-        //         strengthenLevel = info.strengthenLevel,
-        //         properties = strengthenProperties,
-        //         equipPlace = config.EquipPlace,
-        //         evolveLevel = info.evolveLevel,
-        //     };
-
-        //     var gemInfo = new GemInfo()
-        //     {
-        //         activeStates = info.gemHoleActiveStates,
-        //         gems = info.gems,
-        //     };
-
-        //     var trainProperty = new TrainProperty()
-        //     {
-        //         properties = info.trainProperties,
-        //     };
-
-        //     return new TipData()
-        //     {
-        //         itemId = info.itemId,
-        //         baseInfo = baseInfo,
-        //         baseProperty = baseProperty,
-        //         legendProperty = legendProperty,
-        //         skillInfo = skillInfo,
-        //         suitInfo = suitInfo,
-        //         starInfo = starInfo,
-        //         strengthenProperty = strengthenProperty,
-        //         gemInfo = gemInfo,
-        //         trainProperty = trainProperty,
-        //         shenProperty = GetShenProperty(info.itemId)
-        //     };
-        // }
-
-        static TipData CreateGoodEquipData(int itemId, int goodId)
+        if (config.Effect2 != 0)
         {
-            return new TipData()
-            {
-                itemId = itemId,
-                guid = string.Empty,
-                goodId = goodId,
-
-                baseInfo = GetBaseInfo(itemId),
-                baseProperty = GetBaseProperty(itemId),
-                //spiritWeaponProperty = GetSpiritWeaponProperty(itemId),
-                //legendProperty = GetLegendProperty(itemId),
-                skillInfo = GetSkillInfo(itemId),
-                //suitInfo = GetSuitInfo(itemId),
-                //gemInfo = GetGemInfo(itemId),
-                //starInfo = GetStarInfo(itemId),
-                operates = GetGoodOperates(goodId),
-                //shenProperty = GetShenProperty(itemId)
-            };
+            baseProperties.Add(new Int2(config.Effect2, config.EffectValueA2));
         }
 
-        // static TipData CreateEquipAuctionData(string guid, bool operatable)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return default(TipData);
-        //     }
-
-        //     var legendProperty = GetLegendProperty(guid);
-        //     if (legendProperty.properties.IsNullOrEmpty())
-        //     {
-        //         legendProperty = GetLegendProperty(item.itemId);
-        //     }
-
-        //     return new TipData()
-        //     {
-        //         itemId = item.itemId,
-        //         guid = guid,
-
-        //         baseInfo = GetBaseInfo(guid),
-        //         baseProperty = GetBaseProperty(item.itemId),
-        //         spiritWeaponProperty = GetSpiritWeaponProperty(item.itemId),
-        //         legendProperty = legendProperty,
-        //         skillInfo = GetSkillInfo(item.itemId, guid),
-        //         suitInfo = GetSuitInfo(item.itemId),
-        //         operates = operatable ? GetOperates(guid) : null,
-
-        //         starInfo = GetStarInfo(guid),
-        //         gemInfo = GetGemInfo(guid),
-        //         shenProperty = GetShenProperty(item.itemId)
-        //     };
-        // }
-
-        // static TipData CreateItemData(string guid, bool operatable)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return default(TipData);
-        //     }
-
-        //     return new TipData()
-        //     {
-        //         itemId = item.itemId,
-        //         guid = guid,
-
-        //         baseInfo = GetBaseInfo(guid),
-        //         baseProperty = GetBaseProperty(item.itemId),
-        //         spiritWeaponProperty = GetSpiritWeaponProperty(item.itemId),
-        //         legendProperty = GetLegendProperty(guid),
-        //         petMountBaseProperty = GetPetMountBaseProperty(item.itemId),
-        //         operates = operatable ? GetOperates(guid) : null,
-        //         refineMaterials = GetWingRefineMaterials(guid),
-        //         shenProperty = GetShenProperty(item.itemId)
-        //     };
-        // }
-
-        // static TipData CreateItemData(int itemId)
-        // {
-        //     return new TipData()
-        //     {
-        //         itemId = itemId,
-        //         baseInfo = GetBaseInfo(itemId),
-        //         baseProperty = GetBaseProperty(itemId),
-        //         exchangeItemId = itemId,
-        //         spiritWeaponProperty = GetSpiritWeaponProperty(itemId),
-        //         legendProperty = GetLegendProperty(itemId),
-        //         petMountBaseProperty = GetPetMountBaseProperty(itemId),
-        //         getWay = GetGetWay(itemId),
-        //         shenProperty = GetShenProperty(itemId)
-        //     };
-        // }
-
-        static TipData CreateGoodItemData(int itemId, int goodId)
+        if (config.Effect3 != 0)
         {
-            return new TipData()
-            {
-                itemId = itemId,
-                goodId = goodId,
-                baseInfo = GetBaseInfo(itemId),
-                baseProperty = GetBaseProperty(itemId),
-                // legendProperty = GetLegendProperty(itemId),
-                // spiritWeaponProperty = GetSpiritWeaponProperty(itemId),
-                // petMountBaseProperty = GetPetMountBaseProperty(itemId),
-                operates = GetGoodOperates(goodId),
-                // shenProperty = GetShenProperty(itemId)
-            };
+            baseProperties.Add(new Int2(config.Effect3, config.EffectValueA3));
         }
 
-        
-        
-        // public static void Operate(ItemOperateType type, string guid)
-        // {
-        //     switch (type)
-        //     {
-        //         case ItemOperateType.putOn:
-        //             ItemOperateUtility.Instance.PutOnItem(guid);
-        //             break;
-        //         case ItemOperateType.gotoPuton:
-        //             ItemOperateUtility.Instance.PutOnItem(guid);
-        //             break;
-        //         case ItemOperateType.putOff:
-        //             ItemOperateUtility.Instance.PutOffEquip(guid);
-        //             break;
-        //         case ItemOperateType.putAway:
-        //             ItemOperateUtility.Instance.PutAway(guid);
-        //             break;
-        //         case ItemOperateType.putIn:
-        //             ItemOperateUtility.Instance.PutInWareHouse(guid);
-        //             break;
-        //         case ItemOperateType.putOut:
-        //             ItemOperateUtility.Instance.TakeOutFromWarehouse(guid);
-        //             break;
-        //         case ItemOperateType.sell:
-        //             ItemOperateUtility.Instance.SellItem(guid);
-        //             break;
-        //         case ItemOperateType.strength:
-        //             ItemOperateUtility.Instance.GotoStrengthen(guid);
-        //             break;
-        //         case ItemOperateType.star:
-        //             ItemOperateUtility.Instance.GotoStarUpgrade(guid);
-        //             break;
-        //         case ItemOperateType.inlay:
-        //             ItemOperateUtility.Instance.GotoInlayItem(guid);
-        //             break;
-        //         case ItemOperateType.train:
-        //             ItemOperateUtility.Instance.GotoTrain(guid);
-        //             break;
-        //         case ItemOperateType.makeUse:
-        //             ItemOperateUtility.Instance.GotoUseItem(guid);
-        //             break;
-        //         case ItemOperateType.split:
-        //             ItemOperateUtility.Instance.OnClickSplitBtn(guid);
-        //             break;
-        //         case ItemOperateType.compose:
-        //             var wannaComposeItem = packModel.GetItemByGuid(guid);
-        //             var jumpId = 0;
-        //             var isUnlock = composeModel.CheckComposeItemById(wannaComposeItem.itemId, out jumpId);
-        //             if (isUnlock)
-        //             {
-        //                 ItemOperateUtility.Instance.GotoComposeItem(jumpId);
-        //             }
-        //             break;
-        //         case ItemOperateType.renewal:
-        //             ItemOperateUtility.Instance.RenewalItem(guid);
-        //             break;
-        //         case ItemOperateType.exchange:
-        //             WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.ExchangeActiveToken);
-        //             break;
-        //         case ItemOperateType.lsExchange:
-        //             WindowCenter.Instance.Open<LingShiChange>();
-        //             break;
-        //         case ItemOperateType.default1:
-        //             var item = packModel.GetItemByGuid(guid);
-        //             if (item == null)
-        //             {
-        //                 break;
-        //             }
-
-        //             EquipEvolveModel.Instance.EquipJump(item.config.LV, item.config.EquipPlace);
-        //             WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)2013);
-        //             break;
-        //     }
-        // }
-
-        // public static void GoodOperate(ItemOperateType type, int goodId, int count)
-        // {
-        //     var config = StoreConfig.Get(goodId);
-        //     storeModel.SendBuyShopItem(config, count);
-        // }
-
-
-        private static BaseInfo GetBaseInfo(int itemId)
+        if (config.Effect4 != 0)
         {
-            var config = ItemConfig.Get(itemId);
-            var money = 0;
-            if (config.Type == 81)
-            {
-                var chestConfig = ChestsConfig.Get(itemId);
-                money = chestConfig.OpenMoney;
-            }
-
-            var baseInfo = new BaseInfo()
-            {
-                itemId = itemId,
-                isAuction = false,
-                isEquiped = false,
-                isPreview = true,
-                //score = ItemLogicUtility.Instance.GetEquipScore(itemId, null, true),
-                auctionSurplusTime = 0,
-                levelLimit = config.UseLV,
-                realmLimit = config.RealmLimit,
-                moneyLimit = money,
-            };
-
-            return baseInfo;
+            baseProperties.Add(new Int2(config.Effect4, config.EffectValueA4));
         }
 
-        // private static BaseInfo GetBaseInfo(string guid)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-
-        //     var level = item.config.LV;
-        //     var place = item.config.EquipPlace;
-
-        //     var isEquiped = equipModel.GetEquip(new Int2(level, place)) == guid;
-
-        //     var type = EquipStrengthModel.GetEquipStrengthType(place);
-        //     var star = starModel.GetEquipStarLevel(new Int2(level, place));
-        //     var maxStrengthenLevel = strengthenModel.GetEquipLevelMax(type, level);
-        //     var placeStrengthenLevel = strengthenModel.GetStrengthLevel(level, place);
-
-        //     var money = 0;
-        //     if (item.config.Type == 81)
-        //     {
-        //         var chestConfig = ChestsConfig.Get(item.itemId);
-        //         money = chestConfig.OpenMoney;
-        //     }
-
-        //     var baseInfo = new BaseInfo()
-        //     {
-        //         itemId = item.itemId,
-        //         count = item.count,
-        //         isAuction = item.isAuction,
-        //         isEquiped = isEquiped,
-        //         isPreview = false,
-        //         score = item.score,
-        //         isOverdue = ItemLogicUtility.Instance.IsOverdue(guid),
-        //         auctionSurplusTime = item.isAuction ? item.auctionSurplusTime : 0,
-        //         overdueSurplusTime = item.overdueSurplusTime,
-        //         levelLimit = item.isAuction ? 0 : item.config.UseLV,
-        //         realmLimit = item.isAuction ? 0 : item.config.RealmLimit,
-        //         star = isEquiped ? star : -1,
-        //         strengthenLevel = isEquiped ? Mathf.Min(placeStrengthenLevel, maxStrengthenLevel) : 0,
-        //         moneyLimit = money,
-        //     };
-
-        //     return baseInfo;
-        // }
-
-        private static BaseProperty GetBaseProperty(int itemId)
+        if (config.Effect5 != 0)
         {
-            var baseProperties = new List<Int2>();
-            var config = ItemConfig.Get(itemId);
-
-            if (config.Effect1 == 220)
-            {
-                return GetBaseProperty(config.EffectValueA1);
-            }
-
-            if (!ItemLogicUtility.Instance.IsDogzEquip(itemId))
-            {
-                if (config.Effect1 != 0)
-                {
-                    baseProperties.Add(new Int2(config.Effect1, config.EffectValueA1));
-                }
-            }
-
-            if (config.Effect2 != 0)
-            {
-                baseProperties.Add(new Int2(config.Effect2, config.EffectValueA2));
-            }
-
-            if (config.Effect3 != 0)
-            {
-                baseProperties.Add(new Int2(config.Effect3, config.EffectValueA3));
-            }
-
-            if (config.Effect4 != 0)
-            {
-                baseProperties.Add(new Int2(config.Effect4, config.EffectValueA4));
-            }
-
-            if (config.Effect5 != 0)
-            {
-                baseProperties.Add(new Int2(config.Effect5, config.EffectValueA5));
-            }
-
-            var baseProperty = new BaseProperty()
-            {
-                baseProperties = baseProperties,
-            };
-
-            return baseProperty;
+            baseProperties.Add(new Int2(config.Effect5, config.EffectValueA5));
         }
 
-        private static BaseProperty GetBaseProperty(string guid)
+        var baseProperty = new BaseProperty()
         {
-            var item = PackManager.Instance.GetItemByGuid(guid);
-            var equipPosition = new Int2(item.config.LV, item.config.EquipPlace);
-            var equiped = true;//equipModel.GetEquip(equipPosition) == guid;
+            baseProperties = baseProperties,
+        };
 
-            var baseProperty = GetBaseProperty(item.itemId);
+        return baseProperty;
+    }
 
-            if (equiped)
-            {
-                var starProperties = new List<Int2>();
-                // var currentStar = starModel.GetEquipStarLevel(equipPosition);
-                // var maxStar = EquipStarModel.GetMaxStarLevel(item.config.ItemColor, item.config.LV);
-                // var star = Mathf.Min(currentStar, maxStar);
-                // if (star > 0)
-                // {
-                //     baseProperty.star = star;
-                //     var starConfig = EquipStarConfig.Get(item.config.LV, item.config.EquipPlace, star);
-                //     starProperties.AddRange(starConfig.BaseAttrInfo);
-                // }
+    private static BaseProperty GetBaseProperty(string guid)
+    {
+        var item = PackManager.Instance.GetItemByGuid(guid);
+        var equipPosition = new Int2(item.config.LV, item.config.EquipPlace);
+        var equiped = true;//equipModel.GetEquip(equipPosition) == guid;
 
-                baseProperty.starProperties = starProperties;
-            }
+        var baseProperty = GetBaseProperty(item.itemId);
 
-            return baseProperty;
-        }
-
-        // private static BaseProperty GetPetMountBaseProperty(int itemId)
-        // {
-        //     var config = ItemConfig.Get(itemId);
-        //     var baseProperty = new BaseProperty();
-        //     Dictionary<int, int> properties = null;
-        //     switch (config.Type)
-        //     {
-        //         case 26:
-        //             var petId = PetInfoConfig.GetItemUnLockPet(itemId);
-        //             properties = petModel.GetPetAttrAddDict(petId);
-        //             break;
-        //         case 41:
-        //         case 42:
-        //             var horseId = HorseConfig.GetItemUnLockHorse(itemId);
-        //             properties = mountModel.GetMountAttrAddDict(horseId);
-        //             break;
-        //         default:
-        //             break;
-        //     }
-
-        //     if (properties != null)
-        //     {
-        //         baseProperty.baseProperties = new List<Int2>();
-        //         foreach (var property in properties)
-        //         {
-        //             baseProperty.baseProperties.Add(new Int2(property.Key, property.Value));
-        //         }
-        //     }
-
-        //     return baseProperty;
-        // }
-
-        // //绁炶灞炴��
-        // private static ShenProperty GetShenProperty(int itemId)
-        // {
-        //     var data = new ShenProperty();
-        //     data.isPreview = true;
-        //     data.itemId = itemId;
-
-        //     var config = ItemConfig.Get(itemId);
-
-        //     data.properties = ShenPropertyUtility.GetEquipShenProperties(itemId);
-
-
-        //     return data;
-        // }
-
-
-        // private static LegendProperty GetLegendProperty(int itemId)
-        // {
-        //     var data = new LegendProperty();
-        //     data.isPreview = true;
-        //     data.itemId = itemId;
-
-        //     var config = ItemConfig.Get(itemId);
-        //     if (config.Effect1 == 220)
-        //     {
-        //         data.isPreview = false;
-        //         var appConfig = AppointItemConfig.Get(itemId);
-        //         data.trueCount = 0;
-
-        //         data.properties = new List<Int2>();
-        //         for (var i = 0; i < appConfig.LegendAttrID.Length; i++)
-        //         {
-        //             data.properties.Add(new Int2(appConfig.LegendAttrID[i], appConfig.LegendAttrValue[i]));
-        //         }
-        //     }
-        //     else
-        //     {
-        //         data.properties = LegendPropertyUtility.GetLegendProFromEquipShen(itemId);
-        //         if (data.properties != null)
-        //         {
-        //             data.trueCount = 0;
-        //             data.isPreview = false;
-        //         }
-        //         else
-        //         {
-        //             data.trueCount = LegendPropertyUtility.GetEquipPropertyCount(itemId);
-        //             data.properties = LegendPropertyUtility.GetEquipProperties(itemId);
-        //         }
-        //     }
-
-        //     return data;
-        // }
-
-        // private static SpiritWeaponProperty GetSpiritWeaponProperty(int itemId)
-        // {
-        //     var config = SpiritWeaponConfig.Get(itemId);
-        //     if (config == null)
-        //     {
-        //         return default(SpiritWeaponProperty);
-        //     }
-
-        //     var properties = new List<Int3>();
-        //     for (var i = 0; i < config.AttrIDList.Length; i++)
-        //     {
-        //         properties.Add(new Int3(config.AttrIDList[i], config.AttrValueList[i], config.AttrColorList[i]));
-        //     }
-
-        //     var spiritWeaponProperty = new SpiritWeaponProperty();
-        //     spiritWeaponProperty.itemId = itemId;
-        //     spiritWeaponProperty.properties = properties;
-        //     return spiritWeaponProperty;
-        // }
-
-        // private static LegendProperty GetLegendProperty(string guid)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return default(LegendProperty);
-        //     }
-
-        //     var data = new LegendProperty();
-        //     data.isPreview = false;
-        //     data.itemId = item.itemId;
-
-        //     var ids = item.GetUseData((int)ItemUseDataKey.legendAttrID);
-        //     var values = item.GetUseData((int)ItemUseDataKey.legendAttrValue);
-        //     if (!ids.IsNullOrEmpty() && !values.IsNullOrEmpty())
-        //     {
-        //         var properties = new List<Int2>();
-        //         var count = Mathf.Min(ids.Count, values.Count);
-        //         for (int i = 0; i < count; i++)
-        //         {
-        //             properties.Add(new Int2(ids[i], values[i]));
-        //         }
-
-        //         data.properties = properties;
-        //     }
-
-        //     return data;
-        // }
-
-        public static LegendProperty GetLegendProperty(int itemId, Dictionary<int, List<int>> userData)
+        if (equiped)
         {
-            var data = new LegendProperty();
-            data.isPreview = false;
-            data.itemId = itemId;
-
-            List<int> ids = null;
-            List<int> values = null;
-            if (userData != null)
-            {
-                userData.TryGetValue((int)ItemUseDataKey.legendAttrID, out ids);
-                userData.TryGetValue((int)ItemUseDataKey.legendAttrValue, out values);
-            }
-            if (!ids.IsNullOrEmpty() && !values.IsNullOrEmpty())
-            {
-                var properties = new List<Int2>();
-                var count = Mathf.Min(ids.Count, values.Count);
-                for (int i = 0; i < count; i++)
-                {
-                    properties.Add(new Int2(ids[i], values[i]));
-                }
-
-                data.properties = properties;
-            }
-
-            return data;
-        }
-
-        // public static SuitInfo GetSuitInfo(int itemId)
-        // {
-        //     var config = ItemConfig.Get(itemId);
-        //     if (config == null || config.SuiteiD <= 0)
-        //     {
-        //         return default(SuitInfo);
-        //     }
-
-        //     var job = config.JobLimit;
-        //     var twoConfigs = EquipSuitConfig.GetConfigs(job, config.LV, EquipSuitType.TwoSuit);
-
-        //     var name = twoConfigs[0].name;
-        //     var level = config.LV;
-        //     var places = new List<int>();
-        //     places.Add(config.EquipPlace);
-        //     //var suitInfo = new SuitInfo()
-        //     //{
-        //     //    name = name,
-        //     //    level = level,
-        //     //    job = job,
-        //     //    places = places,
-        //     //};
-        //     var maxSuitLevel = EquipStarModel.GetMaxStarLevel(level);
-
-        //     var placeStars = new Dictionary<int, int>();
-        //     for (int i = 1; i <= 8; i++)
-        //     {
-        //         var equip = packModel.GetItemByGuid(equipModel.GetEquip(new Int2(level, i)));
-        //         var hasSuit = equip != null && equip.config.SuiteiD > 0;
-        //         if (hasSuit)
-        //         {
-        //             placeStars[i] = starModel.GetEquipStarLevel(new Int2(level, i));
-        //         }
-        //     }
-
-        //     var twoSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
-        //     var fiveSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
-        //     var eightSuits = new Dictionary<int, bool>();
-        //     var eightSuitLevel = equipModel.GetSuitLevel(config.LV, EquipSuitType.EightSuit);
-
-        //     var twoSuitProperties0 = equipModel.GetEquipSuitEntry(config.LV, 0, EquipSuitType.TwoSuit);
-        //     var fiveSuitProperties0 = equipModel.GetEquipSuitEntry(config.LV, 0, EquipSuitType.FiveSuit);
-
-
-        //     twoSuitProperties[0] = twoSuitProperties0;
-        //     fiveSuitProperties[0] = fiveSuitProperties0;
-        //     eightSuits[0] = eightSuitLevel >= 0;
-
-        //     if (maxSuitLevel >= 3)
-        //     {
-        //         twoSuitProperties[3] = equipModel.GetEquipSuitEntry(config.LV, 3, EquipSuitType.TwoSuit);
-        //         fiveSuitProperties[3] = equipModel.GetEquipSuitEntry(config.LV, 3, EquipSuitType.FiveSuit);
-        //         eightSuits[3] = eightSuitLevel >= 3;
-        //     }
-
-        //     if (maxSuitLevel >= 6)
-        //     {
-        //         twoSuitProperties[6] = equipModel.GetEquipSuitEntry(config.LV, 6, EquipSuitType.TwoSuit);
-        //         fiveSuitProperties[6] = equipModel.GetEquipSuitEntry(config.LV, 6, EquipSuitType.FiveSuit);
-        //         eightSuits[6] = eightSuitLevel >= 3;
-        //     }
-
-        //     if (maxSuitLevel >= 9)
-        //     {
-        //         twoSuitProperties[9] = equipModel.GetEquipSuitEntry(config.LV, 9, EquipSuitType.TwoSuit);
-        //         fiveSuitProperties[9] = equipModel.GetEquipSuitEntry(config.LV, 9, EquipSuitType.FiveSuit);
-        //         eightSuits[9] = eightSuitLevel >= 9;
-        //     }
-
-        //     var suitInfo = new SuitInfo()
-        //     {
-        //         name = name,
-        //         level = level,
-        //         job = job,
-        //         maxSuitLevel = maxSuitLevel,
-        //         places = places,
-        //         placeStars = placeStars,
-        //         twoSuitProperties = twoSuitProperties,
-        //         fiveSuitProperties = fiveSuitProperties,
-        //         eightSuits = eightSuits
-        //     };
-        //     return suitInfo;
-        // }
-
-        // private static SuitInfo GetSuitInfo(string guid)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return default(SuitInfo);
-        //     }
-
-        //     var config = ItemConfig.Get(item.itemId);
-        //     if (config == null || config.SuiteiD <= 0)
-        //     {
-        //         return default(SuitInfo);
-        //     }
-
-        //     var equipPosition = new Int2(item.config.LV, item.config.EquipPlace);
-        //     var equiped = equipModel.GetEquip(equipPosition) == guid;
-
-        //     var job = config.JobLimit;
-        //     var twoConfigs = EquipSuitConfig.GetConfigs(job, config.LV, EquipSuitType.TwoSuit);
-        //     var name = twoConfigs[0].name;
-
-        //     var level = config.LV;
-        //     var maxSuitLevel = equiped ? EquipStarModel.GetMaxStarLevel(level) : -1;
-
-        //     var places = new List<int>();
-        //     var placeStars = new Dictionary<int, int>();
-        //     if (equiped)
-        //     {
-        //         for (int i = 1; i <= 8; i++)
-        //         {
-        //             var equip = packModel.GetItemByGuid(equipModel.GetEquip(new Int2(level, i)));
-        //             var hasSuit = equip != null && equip.config.SuiteiD > 0;
-        //             if (hasSuit)
-        //             {
-        //                 places.Add(i);
-        //                 placeStars[i] = starModel.GetEquipStarLevel(new Int2(level, i));
-        //             }
-        //         }
-        //     }
-
-        //     var twoSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
-        //     var fiveSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
-        //     var eightSuits = new Dictionary<int, bool>();
-        //     var eightSuitLevel = equiped ? equipModel.GetSuitLevel(config.LV, EquipSuitType.EightSuit) : -1;
-
-        //     if (!equiped)
-        //     {
-        //         var suit2 = equipModel.GetEquipSuitEntry(config.LV, 0, EquipSuitType.TwoSuit);
-        //         suit2.actived = false;
-        //         var suit5 = equipModel.GetEquipSuitEntry(config.LV, 0, EquipSuitType.FiveSuit);
-        //         suit5.actived = false;
-        //         twoSuitProperties[0] = suit2;
-        //         fiveSuitProperties[0] = suit5;
-        //         eightSuits[0] = eightSuitLevel >= 0;
-        //     }
-        //     else
-        //     {
-        //         foreach (var star in EquipStarModel.StarList)
-        //         {
-        //             if (maxSuitLevel >= star)
-        //             {
-        //                 twoSuitProperties[star] = equipModel.GetEquipSuitEntry(config.LV, star, EquipSuitType.TwoSuit);
-        //                 fiveSuitProperties[star] = equipModel.GetEquipSuitEntry(config.LV, star, EquipSuitType.FiveSuit);
-        //                 eightSuits[star] = eightSuitLevel >= star;
-        //             }
-        //         }
-        //     }
-
-
-
-
-        //     var suitInfo = new SuitInfo()
-        //     {
-        //         name = name,
-        //         level = level,
-        //         job = job,
-        //         maxSuitLevel = maxSuitLevel,
-        //         places = places,
-        //         placeStars = placeStars,
-        //         twoSuitProperties = twoSuitProperties,
-        //         fiveSuitProperties = fiveSuitProperties,
-        //         eightSuits = eightSuits
-        //     };
-
-        //     return suitInfo;
-        // }
-
-        // private static StarInfo GetStarInfo(int itemId)
-        // {
-        //     var config = ItemConfig.Get(itemId);
-        //     if (!EquipModel.IsRealmEquip(config.EquipPlace))
-        //     {
-        //         return default(StarInfo);
-        //     }
-
-        //     var starInfo = new StarInfo();
-        //     starInfo.equipPosition = new Int2(config.LV, config.EquipPlace);
-        //     starInfo.maxLevel = EquipStarModel.GetMaxStarLevel(config.ItemColor, config.LV);
-        //     starInfo.starLevel = 0;
-
-        //     return starInfo;
-        // }
-
-        // private static StarInfo GetStarInfo(string guid)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return default(StarInfo);
-        //     }
-
-        //     if (!EquipModel.IsRealmEquip(item.config.EquipPlace))
-        //     {
-        //         return default(StarInfo);
-        //     }
-
-        //     var starInfo = new StarInfo();
-        //     var equipPosition = new Int2(item.config.LV, item.config.EquipPlace);
-        //     var equiped = equipModel.GetEquip(equipPosition) == guid;
-        //     starInfo.equipPosition = equipPosition;
-        //     starInfo.maxLevel = EquipStarModel.GetMaxStarLevel(item.config.ItemColor, item.config.LV);
-        //     starInfo.starLevel = equiped ? starModel.GetStarLevel(equipPosition) : 0;
-
-        //     return starInfo;
-        // }
-
-        // private static StrengthenProperty GetStrengthenProperty(string guid)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return default(StrengthenProperty);
-        //     }
-
-        //     var level = item.config.LV;
-        //     var place = item.config.EquipPlace;
-        //     var equiped = equipModel.GetEquip(new Int2(level, place)) == guid;
-        //     if (!equiped)
-        //     {
-        //         return default(StrengthenProperty);
-        //     }
-
-        //     var data = new StrengthenProperty();
-
-        //     var strengthenLevel = strengthenModel.GetStrengthLevel(level, place);
-            
-        //     var type = EquipStrengthModel.GetEquipStrengthType(place);
-        //     var maxStrengthenLevel = strengthenModel.GetEquipLevelMax(type, level);
-
-        //     data.strengthenLevel = Mathf.Min(strengthenLevel, maxStrengthenLevel);
-        //     data.evolveLevel = strengthenModel.GetStrengthEvolveLevel(level, place);
-        //     data.equipPlace = place;
-
-        //     data.properties = new List<Int2>();
-        //     var config = ItemPlusConfig.GetTypeAndLevel(type, data.strengthenLevel);
-        //     for (int i = 0; i < config.attType.Length; i++)
-        //     {
-        //         data.properties.Add(new Int2(config.attType[i], config.attValue[i]));
-        //     }
-
-        //     return data;
-        // }
-
-        // private static GemInfo GetGemInfo(int itemId)
-        // {
-        //     var config = ItemConfig.Get(itemId);
-        //     var level = config.LV;
-        //     var place = config.EquipPlace;
-
-        //     var gemInfo = new GemInfo();
-        //     var maxStar = EquipStarModel.GetMaxStarLevel(config.ItemColor, config.LV);
-        //     gemInfo.activeStates = new Dictionary<int, bool>();
-        //     for (int i = 0; i < 4; i++)
-        //     {
-        //         gemInfo.activeStates[i] = IsEquipGemHoleOpen(new Int2(level, place), maxStar, i);
-        //     }
-
-        //     return gemInfo;
-        // }
-
-        // private static GemInfo GetGemInfo(string guid)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return default(GemInfo);
-        //     }
-
-        //     var level = item.config.LV;
-        //     var place = item.config.EquipPlace;
-
-        //     var gemInfo = new GemInfo();
-        //     var maxStar = EquipStarModel.GetMaxStarLevel(item.config.ItemColor, item.config.LV);
-        //     gemInfo.activeStates = new Dictionary<int, bool>();
-        //     for (int i = 0; i < 4; i++)
-        //     {
-        //         gemInfo.activeStates[i] = IsEquipGemHoleOpen(new Int2(level, place), maxStar, i);
-        //     }
-
-        //     gemInfo.gems = new Dictionary<int, int>();
-        //     if (item.packType == PackType.Equip)
-        //     {
-        //         int[] gems;
-        //         if (gemModel.TryGetEquipGems(item.config.LV, item.config.EquipPlace, out gems))
-        //         {
-        //             for (int i = 0; i < gems.Length; i++)
-        //             {
-        //                 gemInfo.gems[i] = gems[i];
-        //             }
-        //         }
-        //     }
-
-        //     return gemInfo;
-        // }
-
-        // private static TrainProperty GetTrainProperty(string guid)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return default(TrainProperty);
-        //     }
-
-        //     var equipPosition = new Int2(item.config.LV, item.config.EquipPlace);
-        //     var equiped = equipModel.GetEquip(equipPosition) == guid;
-        //     if (!equiped)
-        //     {
-        //         return default(TrainProperty);
-        //     }
-
-        //     var trainProperty = new TrainProperty();
-        //     var star = Mathf.Min(EquipStarModel.GetMaxStarLevel(item.config.ItemColor, item.config.LV), starModel.GetEquipStarLevel(equipPosition));
-        //     var type = EquipTrainModel.GetTrainType(equipPosition.y);
-        //     var maxConfig = WashLevelMaxConfig.Get(type, star);
-        //     var maxLevel = maxConfig == null ? 1 : maxConfig.levelMax;
-        //     var trainLevel = Mathf.Min(maxLevel, trainModel.GetTrainLevel(equipPosition));
-        //     trainProperty.level = trainLevel;
-
-        //     var trainConfig = EquipWashConfig.Get(type, trainLevel);
-        //     trainProperty.properties = new List<Int2>();
-
-        //     if (trainConfig == null)
-        //     {
-        //         var trainConfigLevel1 = EquipWashConfig.Get(type, 1);
-        //         trainProperty.properties.Add(new Int2(trainConfigLevel1.config.attType1, 0));
-        //         trainProperty.properties.Add(new Int2(trainConfigLevel1.config.attType2, 0));
-        //         //trainProperty.properties.Add(new Int2(trainConfigLevel1.config.attType3, 0));
-        //     }
-        //     else
-        //     {
-        //         var trainedProperties = trainModel.GetTrainedProperties(equipPosition);
-        //         trainProperty.properties.Add(new Int2(trainConfig.config.attType1, Mathf.Min(trainedProperties.x, trainConfig.config.attMax1)));
-        //         trainProperty.properties.Add(new Int2(trainConfig.config.attType2, Mathf.Min(trainedProperties.y, trainConfig.config.attMax2)));
-        //         //trainProperty.properties.Add(new Int2(trainConfig.config.attType3, Mathf.Min(trainedProperties.z, trainConfig.config.attMax3)));
-        //     }
-
-        //     return trainProperty;
-        // }
-
-        private static SkillInfo GetSkillInfo(int itemId)
-        {
-            var config = ItemConfig.Get(itemId);
-            if (config == null)
-            {
-                return default(SkillInfo);
-            }
-
-            var skillInfo = new SkillInfo();
-            skillInfo.skills = new List<int>();
-
-            if (config.AddSkill1 != 0)
-            {
-                skillInfo.skills.Add(config.AddSkill1);
-            }
-
-            if (config.AddSkill2 != 0)
-            {
-                skillInfo.skills.Add(config.AddSkill2);
-            }
-
-            return skillInfo;
-        }
-        
-
-        private static SkillInfo GetSkillInfo(int itemId, CustomEquipInfo info)
-        {
-            var skillInfo = new SkillInfo();
-            skillInfo.skills = new List<int>();
-            if (!info.equipSkillList.IsNullOrEmpty())
-            {
-                skillInfo.skills = info.equipSkillList;
-            }
-            else
-            {
-                return GetSkillInfo(itemId);
-            }
-            return skillInfo;
-        }
-
-        // private static SkillInfo GetSkillInfo(int itemId, string guid)
-        // {
-
-        //     var skillInfo = new SkillInfo();
-        //     skillInfo.skills = new List<int>();
-
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return GetSkillInfo(itemId);
-        //     }
-
-        //     var values = item.GetUseData((int)ItemUseDataKey.equipSkills);
-        //     if (!values.IsNullOrEmpty())
-        //     {
-        //         skillInfo.skills = values;
-        //     }
-        //     else
-        //     {
-        //         return GetSkillInfo(itemId);
-        //     }
-
-        //     return skillInfo;
-        // }
-
-        // private static WingRefineMaterials GetWingRefineMaterials(string guid)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return default(WingRefineMaterials);
-        //     }
-
-        //     if (item.config.Type != 113)
-        //     {
-        //         return default(WingRefineMaterials);
-        //     }
-
-        //     var refineMaterials = new WingRefineMaterials();
-        //     refineMaterials.materials = new List<Int2>();
-
-        //     var ids = item.GetUseData((int)ItemUseDataKey.wingMaterialItemID);
-        //     var values = item.GetUseData((int)ItemUseDataKey.wingMaterialItemCount);
-        //     if (!ids.IsNullOrEmpty() && !values.IsNullOrEmpty())
-        //     {
-        //         var min = Mathf.Min(ids.Count, values.Count);
-        //         for (int i = 0; i < min; i++)
-        //         {
-        //             refineMaterials.materials.Add(new Int2(ids[i], values[i]));
-        //         }
-        //     }
-
-        //     return refineMaterials;
-        // }
-
-        // private static GetWay GetGetWay(int itemId)
-        // {
-        //     var config = ItemConfig.Get(itemId);
-        //     if (config == null)
-        //     {
-        //         return default(GetWay);
-        //     }
-
-        //     var getWay = new GetWay();
-        //     getWay.itemId = itemId;
-        //     getWay.ways = new List<int>();
-        //     foreach (var way in config.GetWay)
-        //     {
-        //         var wayConfig = GetItemWaysConfig.Get(way);
-        //         if (wayConfig.FuncOpenId == 0 || FuncOpen.Instance.IsFuncOpen(wayConfig.FuncOpenId))
-        //         {
-        //             int activityType = 0;  // 娲诲姩妯℃澘 鍙傝�僌penServerActivityCenter.ActivityType
-        //             if (wayConfig.customize == 2)
-        //             {
-        //                 activityType = (int)OpenServerActivityCenter.ActivityType.AT_JRZF;
-        //             }
-        //             else if (wayConfig.customize == 3)
-        //             {
-        //                 activityType = (int)OpenServerActivityCenter.ActivityType.AT_HFHD;
-        //             }
-        //             if (wayConfig.ActiveType == -1 || OpenServerActivityCenter.Instance.IsActivityOpen(wayConfig.ActiveType, activityType))
-        //             {
-        //                 getWay.ways.Add(way);
-        //             }
-        //         }
-        //     }
-
-        //     return getWay;
-        // }
-
-        // private static List<ItemOperateType> GetOperates(int itemId, int itemCount = 0)
-        // {
-        //     var config = ItemConfig.Get(itemId);
-        //     var operates = new List<ItemOperateType>();
-        //     var lsItemID = 150;
-        //     if (config.CanSell == 1 && itemId != lsItemID)
-        //     {
-        //         operates.Add(ItemOperateType.sell);
-        //     }
-
-        //     // if (itemCount > 1 && itemId != lsItemID)
-        //     // {
-        //     //     operates.Add(ItemOperateType.split);
-        //     // }
-
-        //     if (config.UseTag == 1)
-        //     {
-        //         if (itemId != lsItemID)
-        //             operates.Add(ItemOperateType.makeUse);
-        //         else
-        //             operates.Add(ItemOperateType.lsExchange);
-        //     }
-
-        //     if (config.Type == 25 || config.Effect1 == 225)
-        //     {
-        //         operates.Add(ItemOperateType.inlay);
-        //     }
-
-        //     if (!config.JumpComposeCondi.IsNullOrEmpty())
-        //     {
-        //         var jumpId = 0;
-        //         if (composeModel.CheckComposeItemById(itemId, out jumpId))
-        //         {
-        //             operates.Add(ItemOperateType.compose);
-        //         }
-        //     }
-
-        //     return operates;
-        // }
-
-        
-        // private static List<ItemOperateType> GetOperates(string guid)
-        // {
-        //     var item = packModel.GetItemByGuid(guid);
-        //     if (item == null)
-        //     {
-        //         return null;
-        //     }
-
-        //     var operates = new List<ItemOperateType>();
-
-        //     var packType = item.packType;
-        //     if (WindowCenter.Instance.IsOpen("DepotWin"))
-        //     {
-        //         switch (packType)
-        //         {
-        //             case PackType.Warehouse:
-        //                 operates.Add(ItemOperateType.putOut);
-        //                 break;
-        //             default:
-        //                 operates.Add(ItemOperateType.putIn);
-        //                 break;
-        //         }
-
-        //         return operates;
-        //     }
-
-        //     if (packType == PackType.Equip)
-        //     {
-        //         if (WindowCenter.Instance.IsOpen("RealmEquipWin"))
-        //         {
-        //             operates.Add(ItemOperateType.putOff);
-
-        //             if (FuncOpen.Instance.IsFuncOpen(1))
-        //             {
-        //                 operates.Add(ItemOperateType.strength);
-        //             }
-
-        //             if (FuncOpen.Instance.IsFuncOpen(172))
-        //             {
-        //                 operates.Add(ItemOperateType.star);
-        //             }
-
-        //             if (FuncOpen.Instance.IsFuncOpen(2))
-        //             {
-        //                 operates.Add(ItemOperateType.inlay);
-        //             }
-
-        //             if (FuncOpen.Instance.IsFuncOpen(91))
-        //             {
-        //                 int limitLevel = 0;
-        //                 if (equipModel.EquipLevelFuncID != null)
-        //                     limitLevel = equipModel.EquipLevelFuncID[91];
-        //                 if (item.config.LV >= limitLevel)
-        //                     operates.Add(ItemOperateType.train);
-        //             }
-
-        //             if (EquipEvolveModel.Instance.IsShowEvolveBtn(item.itemId))
-        //             {
-        //                 operates.Add(ItemOperateType.default1);
-        //             }
-        //             return operates;
-        //         }
-
-        //         if (ItemLogicUtility.Instance.IsRealmEquip(item.itemId) && WindowCenter.Instance.IsOpen("RoleEquipWin"))
-        //         {
-        //             operates.Add(ItemOperateType.putOff);
-        //             return operates;
-        //         }
-
-        //         if (ItemLogicUtility.Instance.IsSpiritWeapon(item.itemId) && WindowCenter.Instance.IsOpen("SpiritEquipBagWin"))
-        //         {
-        //             operates.Add(ItemOperateType.putOff);
-        //             return operates;
-        //         }
-        //     }
-
-        //     if (packType == PackType.Warehouse)
-        //     {
-        //         operates.Add(ItemOperateType.putOut);
-        //         return operates;
-        //     }
-
-        //     if (item.isAuction)
-        //     {
-        //         operates.Add(ItemOperateType.putAway);
-        //     }
-
-        //     var isEquip = ItemLogicUtility.Instance.IsRealmEquip(item.itemId);
-        //     var isSpiritWeapon = ItemLogicUtility.Instance.IsSpiritWeapon(item.itemId);
-        //     if (isEquip || isSpiritWeapon)
-        //     {
-        //         var isOverdue = ItemLogicUtility.Instance.IsOverdue(guid);
-        //         if (item.config.CanSell == 1)
-        //         {
-        //             operates.Add(ItemOperateType.sell);
-        //         }
-
-        //         if (item.config.ExpireTime > 0 && isOverdue && itemOverdueModel.CanRenewal(item.itemId))
-        //         {
-        //             operates.Add(ItemOperateType.renewal);
-        //         }
-
-        //         if (!isOverdue)
-        //         {
-        //             if (ItemLogicUtility.Instance.IsJobCompatibleItem(item.itemId))
-        //             {
-        //                 if (isEquip)
-        //                 {
-        //                     operates.Add(ItemOperateType.putOn);
-
-        //                     if (!item.config.JumpComposeCondi.IsNullOrEmpty())
-        //                     {
-        //                         var jumpId = 0;
-        //                         if (composeModel.CheckComposeItemById(item.itemId, out jumpId))
-        //                         {
-        //                             operates.Add(ItemOperateType.compose);
-        //                         }
-        //                     }
-        //                 }
-
-        //                 if (isSpiritWeapon)
-        //                 {
-        //                     if (WindowCenter.Instance.IsOpen<RoleEquipWin>())
-        //                     {
-        //                         operates.Add(ItemOperateType.putOn);
-        //                     }
-        //                     else if (WindowCenter.Instance.IsOpen<MainInterfaceWin>() || WindowCenter.Instance.IsOpen("SpiritEquipBagWin"))
-        //                     {
-        //                         operates.Add(ItemOperateType.putOn);
-        //                     }
-        //                 }
-        //             }
-        //             //else
-        //             //{
-        //             //    if (item.config.ItemColor > 3)
-        //             //    {
-        //             //        operates.Add(ItemOperateType.exchange);
-        //             //    }
-        //             //}
-        //         }
-
-        //         return operates;
-        //     }
-        //     if (ItemLogicUtility.Instance.IsDogzEquip(item.itemId))
-        //     {
-        //         if (packType == PackType.DogzItem)
-        //         {
-        //             if (item.config.ItemColor > 2 && item.config.ItemColor < 6)
-        //             {
-        //                 operates.Add(ItemOperateType.compose);
-        //             }
-        //             operates.Add(ItemOperateType.putOn);
-        //         }
-        //         else if (packType == PackType.DogzEquip)
-        //         {
-        //             operates.Add(ItemOperateType.putOff);
-        //         }
-        //         return operates;
-        //     }
-
-        //     operates.AddRange(GetOperates(item.itemId, item.count));
-
-        //     return operates;
-        // }
-
-        
-
-        private static List<ItemOperateType> GetGoodOperates(int goodId)
-        {
-            var operates = new List<ItemOperateType>();
-            var countLimit = BuyItemController.Instance.GetBuyCountLimit(goodId, PlayerDatas.Instance.baseData.VIPLv);
-            if (countLimit == -1 || countLimit > 0)
-            {
-                var config = StoreConfig.Get(goodId);
-                int curVipIndex = -1;
-                int nextVipIndex = -1;
-                bool isVipBuy = BuyItemController.Instance.CheckIsVipBuy(config, out curVipIndex, out nextVipIndex);
-
-                if ((isVipBuy && curVipIndex == -1) || PlayerDatas.Instance.baseData.LV < config.LV)
-                {
-                    return operates;
-                }
-                operates.Add(ItemOperateType.buy);
-            }
-
-            return operates;
-        }
-
-        // private static bool IsEquipGemHoleOpen(Int2 equipPosition, int maxStar, int hole)
-        // {
-        //     GemHoleCondition condition;
-        //     if (gemModel.TryGetGemHoleCondition(hole, out condition))
-        //     {
-        //         var star = starModel.GetStarLevel(equipPosition);
-        //         if (Mathf.Min(star, maxStar) < condition.equipStar)
-        //         {
-        //             return false;
-        //         }
-
-        //         var vipLevel = PlayerDatas.Instance.baseData.VIPLv;
-        //         if (vipLevel < condition.vipLevel)
-        //         {
-        //             return false;
-        //         }
-        //     }
-
-        //     return true;
-        // }
-
-        private static TipType GetTipType(int itemId)
-        {
-            if (GeneralDefine.chestDisplayItems.Contains(itemId))
-            {
-                return TipType.PeerlessChest;
-            }
-
-            // if (ChestsAwardConfig.IsBox(itemId))
+            var starProperties = new List<Int2>();
+            // var currentStar = starModel.GetEquipStarLevel(equipPosition);
+            // var maxStar = EquipStarModel.GetMaxStarLevel(item.config.ItemColor, item.config.LV);
+            // var star = Mathf.Min(currentStar, maxStar);
+            // if (star > 0)
             // {
-            //     return TipType.BoxItem;
+            //     baseProperty.star = star;
+            //     var starConfig = EquipStarConfig.Get(item.config.LV, item.config.EquipPlace, star);
+            //     starProperties.AddRange(starConfig.BaseAttrInfo);
             // }
 
-            var config = ItemConfig.Get(itemId);
-            switch (config.Type)
+            baseProperty.starProperties = starProperties;
+        }
+
+        return baseProperty;
+    }
+
+    // private static BaseProperty GetPetMountBaseProperty(int itemId)
+    // {
+    //     var config = ItemConfig.Get(itemId);
+    //     var baseProperty = new BaseProperty();
+    //     Dictionary<int, int> properties = null;
+    //     switch (config.Type)
+    //     {
+    //         case 26:
+    //             var petId = PetInfoConfig.GetItemUnLockPet(itemId);
+    //             properties = petModel.GetPetAttrAddDict(petId);
+    //             break;
+    //         case 41:
+    //         case 42:
+    //             var horseId = HorseConfig.GetItemUnLockHorse(itemId);
+    //             properties = mountModel.GetMountAttrAddDict(horseId);
+    //             break;
+    //         default:
+    //             break;
+    //     }
+
+    //     if (properties != null)
+    //     {
+    //         baseProperty.baseProperties = new List<Int2>();
+    //         foreach (var property in properties)
+    //         {
+    //             baseProperty.baseProperties.Add(new Int2(property.Key, property.Value));
+    //         }
+    //     }
+
+    //     return baseProperty;
+    // }
+
+    // //绁炶灞炴��
+    // private static ShenProperty GetShenProperty(int itemId)
+    // {
+    //     var data = new ShenProperty();
+    //     data.isPreview = true;
+    //     data.itemId = itemId;
+
+    //     var config = ItemConfig.Get(itemId);
+
+    //     data.properties = ShenPropertyUtility.GetEquipShenProperties(itemId);
+
+
+    //     return data;
+    // }
+
+
+    // private static LegendProperty GetLegendProperty(int itemId)
+    // {
+    //     var data = new LegendProperty();
+    //     data.isPreview = true;
+    //     data.itemId = itemId;
+
+    //     var config = ItemConfig.Get(itemId);
+    //     if (config.Effect1 == 220)
+    //     {
+    //         data.isPreview = false;
+    //         var appConfig = AppointItemConfig.Get(itemId);
+    //         data.trueCount = 0;
+
+    //         data.properties = new List<Int2>();
+    //         for (var i = 0; i < appConfig.LegendAttrID.Length; i++)
+    //         {
+    //             data.properties.Add(new Int2(appConfig.LegendAttrID[i], appConfig.LegendAttrValue[i]));
+    //         }
+    //     }
+    //     else
+    //     {
+    //         data.properties = LegendPropertyUtility.GetLegendProFromEquipShen(itemId);
+    //         if (data.properties != null)
+    //         {
+    //             data.trueCount = 0;
+    //             data.isPreview = false;
+    //         }
+    //         else
+    //         {
+    //             data.trueCount = LegendPropertyUtility.GetEquipPropertyCount(itemId);
+    //             data.properties = LegendPropertyUtility.GetEquipProperties(itemId);
+    //         }
+    //     }
+
+    //     return data;
+    // }
+
+    // private static SpiritWeaponProperty GetSpiritWeaponProperty(int itemId)
+    // {
+    //     var config = SpiritWeaponConfig.Get(itemId);
+    //     if (config == null)
+    //     {
+    //         return default(SpiritWeaponProperty);
+    //     }
+
+    //     var properties = new List<Int3>();
+    //     for (var i = 0; i < config.AttrIDList.Length; i++)
+    //     {
+    //         properties.Add(new Int3(config.AttrIDList[i], config.AttrValueList[i], config.AttrColorList[i]));
+    //     }
+
+    //     var spiritWeaponProperty = new SpiritWeaponProperty();
+    //     spiritWeaponProperty.itemId = itemId;
+    //     spiritWeaponProperty.properties = properties;
+    //     return spiritWeaponProperty;
+    // }
+
+    // private static LegendProperty GetLegendProperty(string guid)
+    // {
+    //     var item = packModel.GetItemByGuid(guid);
+    //     if (item == null)
+    //     {
+    //         return default(LegendProperty);
+    //     }
+
+    //     var data = new LegendProperty();
+    //     data.isPreview = false;
+    //     data.itemId = item.itemId;
+
+    //     var ids = item.GetUseData((int)ItemUseDataKey.legendAttrID);
+    //     var values = item.GetUseData((int)ItemUseDataKey.legendAttrValue);
+    //     if (!ids.IsNullOrEmpty() && !values.IsNullOrEmpty())
+    //     {
+    //         var properties = new List<Int2>();
+    //         var count = Mathf.Min(ids.Count, values.Count);
+    //         for (int i = 0; i < count; i++)
+    //         {
+    //             properties.Add(new Int2(ids[i], values[i]));
+    //         }
+
+    //         data.properties = properties;
+    //     }
+
+    //     return data;
+    // }
+
+    public static LegendProperty GetLegendProperty(int itemId, Dictionary<int, List<int>> userData)
+    {
+        var data = new LegendProperty();
+        data.isPreview = false;
+        data.itemId = itemId;
+
+        List<int> ids = null;
+        List<int> values = null;
+        if (userData != null)
+        {
+            userData.TryGetValue((int)ItemUseDataKey.legendAttrID, out ids);
+            userData.TryGetValue((int)ItemUseDataKey.legendAttrValue, out values);
+        }
+        if (!ids.IsNullOrEmpty() && !values.IsNullOrEmpty())
+        {
+            var properties = new List<Int2>();
+            var count = Mathf.Min(ids.Count, values.Count);
+            for (int i = 0; i < count; i++)
             {
-                case 101:
-                case 102:
-                case 103:
-                case 104:
-                case 105:
-                case 106:
-                case 107:
-                case 108:
-                case 109:
-                case 110:
-                case 111:
-                case 112:
-                    return TipType.Equip;
-                case 26:
-                case 41:
-                case 42:
-                    return TipType.PetMount;
-                case 147:
-                    return TipType.TreasurePavilion;
-                default:
-                    return TipType.Item;
+                properties.Add(new Int2(ids[i], values[i]));
             }
 
+            data.properties = properties;
         }
 
-        [System.Diagnostics.Conditional("UNITY_EDITOR")]
-        private static void PrintItemBrief(int itemId)
+        return data;
+    }
+
+    // public static SuitInfo GetSuitInfo(int itemId)
+    // {
+    //     var config = ItemConfig.Get(itemId);
+    //     if (config == null || config.SuiteiD <= 0)
+    //     {
+    //         return default(SuitInfo);
+    //     }
+
+    //     var job = config.JobLimit;
+    //     var twoConfigs = EquipSuitConfig.GetConfigs(job, config.LV, EquipSuitType.TwoSuit);
+
+    //     var name = twoConfigs[0].name;
+    //     var level = config.LV;
+    //     var places = new List<int>();
+    //     places.Add(config.EquipPlace);
+    //     //var suitInfo = new SuitInfo()
+    //     //{
+    //     //    name = name,
+    //     //    level = level,
+    //     //    job = job,
+    //     //    places = places,
+    //     //};
+    //     var maxSuitLevel = EquipStarModel.GetMaxStarLevel(level);
+
+    //     var placeStars = new Dictionary<int, int>();
+    //     for (int i = 1; i <= 8; i++)
+    //     {
+    //         var equip = packModel.GetItemByGuid(equipModel.GetEquip(new Int2(level, i)));
+    //         var hasSuit = equip != null && equip.config.SuiteiD > 0;
+    //         if (hasSuit)
+    //         {
+    //             placeStars[i] = starModel.GetEquipStarLevel(new Int2(level, i));
+    //         }
+    //     }
+
+    //     var twoSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
+    //     var fiveSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
+    //     var eightSuits = new Dictionary<int, bool>();
+    //     var eightSuitLevel = equipModel.GetSuitLevel(config.LV, EquipSuitType.EightSuit);
+
+    //     var twoSuitProperties0 = equipModel.GetEquipSuitEntry(config.LV, 0, EquipSuitType.TwoSuit);
+    //     var fiveSuitProperties0 = equipModel.GetEquipSuitEntry(config.LV, 0, EquipSuitType.FiveSuit);
+
+
+    //     twoSuitProperties[0] = twoSuitProperties0;
+    //     fiveSuitProperties[0] = fiveSuitProperties0;
+    //     eightSuits[0] = eightSuitLevel >= 0;
+
+    //     if (maxSuitLevel >= 3)
+    //     {
+    //         twoSuitProperties[3] = equipModel.GetEquipSuitEntry(config.LV, 3, EquipSuitType.TwoSuit);
+    //         fiveSuitProperties[3] = equipModel.GetEquipSuitEntry(config.LV, 3, EquipSuitType.FiveSuit);
+    //         eightSuits[3] = eightSuitLevel >= 3;
+    //     }
+
+    //     if (maxSuitLevel >= 6)
+    //     {
+    //         twoSuitProperties[6] = equipModel.GetEquipSuitEntry(config.LV, 6, EquipSuitType.TwoSuit);
+    //         fiveSuitProperties[6] = equipModel.GetEquipSuitEntry(config.LV, 6, EquipSuitType.FiveSuit);
+    //         eightSuits[6] = eightSuitLevel >= 3;
+    //     }
+
+    //     if (maxSuitLevel >= 9)
+    //     {
+    //         twoSuitProperties[9] = equipModel.GetEquipSuitEntry(config.LV, 9, EquipSuitType.TwoSuit);
+    //         fiveSuitProperties[9] = equipModel.GetEquipSuitEntry(config.LV, 9, EquipSuitType.FiveSuit);
+    //         eightSuits[9] = eightSuitLevel >= 9;
+    //     }
+
+    //     var suitInfo = new SuitInfo()
+    //     {
+    //         name = name,
+    //         level = level,
+    //         job = job,
+    //         maxSuitLevel = maxSuitLevel,
+    //         places = places,
+    //         placeStars = placeStars,
+    //         twoSuitProperties = twoSuitProperties,
+    //         fiveSuitProperties = fiveSuitProperties,
+    //         eightSuits = eightSuits
+    //     };
+    //     return suitInfo;
+    // }
+
+    // private static SuitInfo GetSuitInfo(string guid)
+    // {
+    //     var item = packModel.GetItemByGuid(guid);
+    //     if (item == null)
+    //     {
+    //         return default(SuitInfo);
+    //     }
+
+    //     var config = ItemConfig.Get(item.itemId);
+    //     if (config == null || config.SuiteiD <= 0)
+    //     {
+    //         return default(SuitInfo);
+    //     }
+
+    //     var equipPosition = new Int2(item.config.LV, item.config.EquipPlace);
+    //     var equiped = equipModel.GetEquip(equipPosition) == guid;
+
+    //     var job = config.JobLimit;
+    //     var twoConfigs = EquipSuitConfig.GetConfigs(job, config.LV, EquipSuitType.TwoSuit);
+    //     var name = twoConfigs[0].name;
+
+    //     var level = config.LV;
+    //     var maxSuitLevel = equiped ? EquipStarModel.GetMaxStarLevel(level) : -1;
+
+    //     var places = new List<int>();
+    //     var placeStars = new Dictionary<int, int>();
+    //     if (equiped)
+    //     {
+    //         for (int i = 1; i <= 8; i++)
+    //         {
+    //             var equip = packModel.GetItemByGuid(equipModel.GetEquip(new Int2(level, i)));
+    //             var hasSuit = equip != null && equip.config.SuiteiD > 0;
+    //             if (hasSuit)
+    //             {
+    //                 places.Add(i);
+    //                 placeStars[i] = starModel.GetEquipStarLevel(new Int2(level, i));
+    //             }
+    //         }
+    //     }
+
+    //     var twoSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
+    //     var fiveSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
+    //     var eightSuits = new Dictionary<int, bool>();
+    //     var eightSuitLevel = equiped ? equipModel.GetSuitLevel(config.LV, EquipSuitType.EightSuit) : -1;
+
+    //     if (!equiped)
+    //     {
+    //         var suit2 = equipModel.GetEquipSuitEntry(config.LV, 0, EquipSuitType.TwoSuit);
+    //         suit2.actived = false;
+    //         var suit5 = equipModel.GetEquipSuitEntry(config.LV, 0, EquipSuitType.FiveSuit);
+    //         suit5.actived = false;
+    //         twoSuitProperties[0] = suit2;
+    //         fiveSuitProperties[0] = suit5;
+    //         eightSuits[0] = eightSuitLevel >= 0;
+    //     }
+    //     else
+    //     {
+    //         foreach (var star in EquipStarModel.StarList)
+    //         {
+    //             if (maxSuitLevel >= star)
+    //             {
+    //                 twoSuitProperties[star] = equipModel.GetEquipSuitEntry(config.LV, star, EquipSuitType.TwoSuit);
+    //                 fiveSuitProperties[star] = equipModel.GetEquipSuitEntry(config.LV, star, EquipSuitType.FiveSuit);
+    //                 eightSuits[star] = eightSuitLevel >= star;
+    //             }
+    //         }
+    //     }
+
+
+
+
+    //     var suitInfo = new SuitInfo()
+    //     {
+    //         name = name,
+    //         level = level,
+    //         job = job,
+    //         maxSuitLevel = maxSuitLevel,
+    //         places = places,
+    //         placeStars = placeStars,
+    //         twoSuitProperties = twoSuitProperties,
+    //         fiveSuitProperties = fiveSuitProperties,
+    //         eightSuits = eightSuits
+    //     };
+
+    //     return suitInfo;
+    // }
+
+    // private static StarInfo GetStarInfo(int itemId)
+    // {
+    //     var config = ItemConfig.Get(itemId);
+    //     if (!EquipModel.IsRealmEquip(config.EquipPlace))
+    //     {
+    //         return default(StarInfo);
+    //     }
+
+    //     var starInfo = new StarInfo();
+    //     starInfo.equipPosition = new Int2(config.LV, config.EquipPlace);
+    //     starInfo.maxLevel = EquipStarModel.GetMaxStarLevel(config.ItemColor, config.LV);
+    //     starInfo.starLevel = 0;
+
+    //     return starInfo;
+    // }
+
+    // private static StarInfo GetStarInfo(string guid)
+    // {
+    //     var item = packModel.GetItemByGuid(guid);
+    //     if (item == null)
+    //     {
+    //         return default(StarInfo);
+    //     }
+
+    //     if (!EquipModel.IsRealmEquip(item.config.EquipPlace))
+    //     {
+    //         return default(StarInfo);
+    //     }
+
+    //     var starInfo = new StarInfo();
+    //     var equipPosition = new Int2(item.config.LV, item.config.EquipPlace);
+    //     var equiped = equipModel.GetEquip(equipPosition) == guid;
+    //     starInfo.equipPosition = equipPosition;
+    //     starInfo.maxLevel = EquipStarModel.GetMaxStarLevel(item.config.ItemColor, item.config.LV);
+    //     starInfo.starLevel = equiped ? starModel.GetStarLevel(equipPosition) : 0;
+
+    //     return starInfo;
+    // }
+
+    // private static StrengthenProperty GetStrengthenProperty(string guid)
+    // {
+    //     var item = packModel.GetItemByGuid(guid);
+    //     if (item == null)
+    //     {
+    //         return default(StrengthenProperty);
+    //     }
+
+    //     var level = item.config.LV;
+    //     var place = item.config.EquipPlace;
+    //     var equiped = equipModel.GetEquip(new Int2(level, place)) == guid;
+    //     if (!equiped)
+    //     {
+    //         return default(StrengthenProperty);
+    //     }
+
+    //     var data = new StrengthenProperty();
+
+    //     var strengthenLevel = strengthenModel.GetStrengthLevel(level, place);
+        
+    //     var type = EquipStrengthModel.GetEquipStrengthType(place);
+    //     var maxStrengthenLevel = strengthenModel.GetEquipLevelMax(type, level);
+
+    //     data.strengthenLevel = Mathf.Min(strengthenLevel, maxStrengthenLevel);
+    //     data.evolveLevel = strengthenModel.GetStrengthEvolveLevel(level, place);
+    //     data.equipPlace = place;
+
+    //     data.properties = new List<Int2>();
+    //     var config = ItemPlusConfig.GetTypeAndLevel(type, data.strengthenLevel);
+    //     for (int i = 0; i < config.attType.Length; i++)
+    //     {
+    //         data.properties.Add(new Int2(config.attType[i], config.attValue[i]));
+    //     }
+
+    //     return data;
+    // }
+
+    // private static GemInfo GetGemInfo(int itemId)
+    // {
+    //     var config = ItemConfig.Get(itemId);
+    //     var level = config.LV;
+    //     var place = config.EquipPlace;
+
+    //     var gemInfo = new GemInfo();
+    //     var maxStar = EquipStarModel.GetMaxStarLevel(config.ItemColor, config.LV);
+    //     gemInfo.activeStates = new Dictionary<int, bool>();
+    //     for (int i = 0; i < 4; i++)
+    //     {
+    //         gemInfo.activeStates[i] = IsEquipGemHoleOpen(new Int2(level, place), maxStar, i);
+    //     }
+
+    //     return gemInfo;
+    // }
+
+    // private static GemInfo GetGemInfo(string guid)
+    // {
+    //     var item = packModel.GetItemByGuid(guid);
+    //     if (item == null)
+    //     {
+    //         return default(GemInfo);
+    //     }
+
+    //     var level = item.config.LV;
+    //     var place = item.config.EquipPlace;
+
+    //     var gemInfo = new GemInfo();
+    //     var maxStar = EquipStarModel.GetMaxStarLevel(item.config.ItemColor, item.config.LV);
+    //     gemInfo.activeStates = new Dictionary<int, bool>();
+    //     for (int i = 0; i < 4; i++)
+    //     {
+    //         gemInfo.activeStates[i] = IsEquipGemHoleOpen(new Int2(level, place), maxStar, i);
+    //     }
+
+    //     gemInfo.gems = new Dictionary<int, int>();
+    //     if (item.packType == PackType.Equip)
+    //     {
+    //         int[] gems;
+    //         if (gemModel.TryGetEquipGems(item.config.LV, item.config.EquipPlace, out gems))
+    //         {
+    //             for (int i = 0; i < gems.Length; i++)
+    //             {
+    //                 gemInfo.gems[i] = gems[i];
+    //             }
+    //         }
+    //     }
+
+    //     return gemInfo;
+    // }
+
+    // private static TrainProperty GetTrainProperty(string guid)
+    // {
+    //     var item = packModel.GetItemByGuid(guid);
+    //     if (item == null)
+    //     {
+    //         return default(TrainProperty);
+    //     }
+
+    //     var equipPosition = new Int2(item.config.LV, item.config.EquipPlace);
+    //     var equiped = equipModel.GetEquip(equipPosition) == guid;
+    //     if (!equiped)
+    //     {
+    //         return default(TrainProperty);
+    //     }
+
+    //     var trainProperty = new TrainProperty();
+    //     var star = Mathf.Min(EquipStarModel.GetMaxStarLevel(item.config.ItemColor, item.config.LV), starModel.GetEquipStarLevel(equipPosition));
+    //     var type = EquipTrainModel.GetTrainType(equipPosition.y);
+    //     var maxConfig = WashLevelMaxConfig.Get(type, star);
+    //     var maxLevel = maxConfig == null ? 1 : maxConfig.levelMax;
+    //     var trainLevel = Mathf.Min(maxLevel, trainModel.GetTrainLevel(equipPosition));
+    //     trainProperty.level = trainLevel;
+
+    //     var trainConfig = EquipWashConfig.Get(type, trainLevel);
+    //     trainProperty.properties = new List<Int2>();
+
+    //     if (trainConfig == null)
+    //     {
+    //         var trainConfigLevel1 = EquipWashConfig.Get(type, 1);
+    //         trainProperty.properties.Add(new Int2(trainConfigLevel1.config.attType1, 0));
+    //         trainProperty.properties.Add(new Int2(trainConfigLevel1.config.attType2, 0));
+    //         //trainProperty.properties.Add(new Int2(trainConfigLevel1.config.attType3, 0));
+    //     }
+    //     else
+    //     {
+    //         var trainedProperties = trainModel.GetTrainedProperties(equipPosition);
+    //         trainProperty.properties.Add(new Int2(trainConfig.config.attType1, Mathf.Min(trainedProperties.x, trainConfig.config.attMax1)));
+    //         trainProperty.properties.Add(new Int2(trainConfig.config.attType2, Mathf.Min(trainedProperties.y, trainConfig.config.attMax2)));
+    //         //trainProperty.properties.Add(new Int2(trainConfig.config.attType3, Mathf.Min(trainedProperties.z, trainConfig.config.attMax3)));
+    //     }
+
+    //     return trainProperty;
+    // }
+
+    private static SkillInfo GetSkillInfo(int itemId)
+    {
+        var config = ItemConfig.Get(itemId);
+        if (config == null)
         {
-            var config = ItemConfig.Get(itemId);
-            Debug.LogFormat("浣犳煡鐪嬬殑鐗╁搧鏄細itemId->{0} ;name->{1}", itemId, config.ItemName);
+            return default(SkillInfo);
         }
 
-        [System.Diagnostics.Conditional("UNITY_EDITOR")]
-        private static void PrintItemBrief(int itemId, string guid)
+        var skillInfo = new SkillInfo();
+        skillInfo.skills = new List<int>();
+
+        if (config.AddSkill1 != 0)
         {
-            var config = ItemConfig.Get(itemId);
-            Debug.LogFormat("浣犳煡鐪嬬殑鐗╁搧鏄細itemId->{0};name->{1};guid->{2};", itemId, config.ItemName, string.IsNullOrEmpty(guid) ? "" : guid);
+            skillInfo.skills.Add(config.AddSkill1);
+        }
+
+        if (config.AddSkill2 != 0)
+        {
+            skillInfo.skills.Add(config.AddSkill2);
+        }
+
+        return skillInfo;
+    }
+    
+
+    private static SkillInfo GetSkillInfo(int itemId, CustomEquipInfo info)
+    {
+        var skillInfo = new SkillInfo();
+        skillInfo.skills = new List<int>();
+        if (!info.equipSkillList.IsNullOrEmpty())
+        {
+            skillInfo.skills = info.equipSkillList;
+        }
+        else
+        {
+            return GetSkillInfo(itemId);
+        }
+        return skillInfo;
+    }
+
+    // private static SkillInfo GetSkillInfo(int itemId, string guid)
+    // {
+
+    //     var skillInfo = new SkillInfo();
+    //     skillInfo.skills = new List<int>();
+
+    //     var item = packModel.GetItemByGuid(guid);
+    //     if (item == null)
+    //     {
+    //         return GetSkillInfo(itemId);
+    //     }
+
+    //     var values = item.GetUseData((int)ItemUseDataKey.equipSkills);
+    //     if (!values.IsNullOrEmpty())
+    //     {
+    //         skillInfo.skills = values;
+    //     }
+    //     else
+    //     {
+    //         return GetSkillInfo(itemId);
+    //     }
+
+    //     return skillInfo;
+    // }
+
+    // private static WingRefineMaterials GetWingRefineMaterials(string guid)
+    // {
+    //     var item = packModel.GetItemByGuid(guid);
+    //     if (item == null)
+    //     {
+    //         return default(WingRefineMaterials);
+    //     }
+
+    //     if (item.config.Type != 113)
+    //     {
+    //         return default(WingRefineMaterials);
+    //     }
+
+    //     var refineMaterials = new WingRefineMaterials();
+    //     refineMaterials.materials = new List<Int2>();
+
+    //     var ids = item.GetUseData((int)ItemUseDataKey.wingMaterialItemID);
+    //     var values = item.GetUseData((int)ItemUseDataKey.wingMaterialItemCount);
+    //     if (!ids.IsNullOrEmpty() && !values.IsNullOrEmpty())
+    //     {
+    //         var min = Mathf.Min(ids.Count, values.Count);
+    //         for (int i = 0; i < min; i++)
+    //         {
+    //             refineMaterials.materials.Add(new Int2(ids[i], values[i]));
+    //         }
+    //     }
+
+    //     return refineMaterials;
+    // }
+
+    // private static GetWay GetGetWay(int itemId)
+    // {
+    //     var config = ItemConfig.Get(itemId);
+    //     if (config == null)
+    //     {
+    //         return default(GetWay);
+    //     }
+
+    //     var getWay = new GetWay();
+    //     getWay.itemId = itemId;
+    //     getWay.ways = new List<int>();
+    //     foreach (var way in config.GetWay)
+    //     {
+    //         var wayConfig = GetItemWaysConfig.Get(way);
+    //         if (wayConfig.FuncOpenId == 0 || FuncOpen.Instance.IsFuncOpen(wayConfig.FuncOpenId))
+    //         {
+    //             int activityType = 0;  // 娲诲姩妯℃澘 鍙傝�僌penServerActivityCenter.ActivityType
+    //             if (wayConfig.customize == 2)
+    //             {
+    //                 activityType = (int)OpenServerActivityCenter.ActivityType.AT_JRZF;
+    //             }
+    //             else if (wayConfig.customize == 3)
+    //             {
+    //                 activityType = (int)OpenServerActivityCenter.ActivityType.AT_HFHD;
+    //             }
+    //             if (wayConfig.ActiveType == -1 || OpenServerActivityCenter.Instance.IsActivityOpen(wayConfig.ActiveType, activityType))
+    //             {
+    //                 getWay.ways.Add(way);
+    //             }
+    //         }
+    //     }
+
+    //     return getWay;
+    // }
+
+    // private static List<ItemOperateType> GetOperates(int itemId, int itemCount = 0)
+    // {
+    //     var config = ItemConfig.Get(itemId);
+    //     var operates = new List<ItemOperateType>();
+    //     var lsItemID = 150;
+    //     if (config.CanSell == 1 && itemId != lsItemID)
+    //     {
+    //         operates.Add(ItemOperateType.sell);
+    //     }
+
+    //     // if (itemCount > 1 && itemId != lsItemID)
+    //     // {
+    //     //     operates.Add(ItemOperateType.split);
+    //     // }
+
+    //     if (config.UseTag == 1)
+    //     {
+    //         if (itemId != lsItemID)
+    //             operates.Add(ItemOperateType.makeUse);
+    //         else
+    //             operates.Add(ItemOperateType.lsExchange);
+    //     }
+
+    //     if (config.Type == 25 || config.Effect1 == 225)
+    //     {
+    //         operates.Add(ItemOperateType.inlay);
+    //     }
+
+    //     if (!config.JumpComposeCondi.IsNullOrEmpty())
+    //     {
+    //         var jumpId = 0;
+    //         if (composeModel.CheckComposeItemById(itemId, out jumpId))
+    //         {
+    //             operates.Add(ItemOperateType.compose);
+    //         }
+    //     }
+
+    //     return operates;
+    // }
+
+    
+    // private static List<ItemOperateType> GetOperates(string guid)
+    // {
+    //     var item = packModel.GetItemByGuid(guid);
+    //     if (item == null)
+    //     {
+    //         return null;
+    //     }
+
+    //     var operates = new List<ItemOperateType>();
+
+    //     var packType = item.packType;
+    //     if (WindowCenter.Instance.IsOpen("DepotWin"))
+    //     {
+    //         switch (packType)
+    //         {
+    //             case PackType.Warehouse:
+    //                 operates.Add(ItemOperateType.putOut);
+    //                 break;
+    //             default:
+    //                 operates.Add(ItemOperateType.putIn);
+    //                 break;
+    //         }
+
+    //         return operates;
+    //     }
+
+    //     if (packType == PackType.Equip)
+    //     {
+    //         if (WindowCenter.Instance.IsOpen("RealmEquipWin"))
+    //         {
+    //             operates.Add(ItemOperateType.putOff);
+
+    //             if (FuncOpen.Instance.IsFuncOpen(1))
+    //             {
+    //                 operates.Add(ItemOperateType.strength);
+    //             }
+
+    //             if (FuncOpen.Instance.IsFuncOpen(172))
+    //             {
+    //                 operates.Add(ItemOperateType.star);
+    //             }
+
+    //             if (FuncOpen.Instance.IsFuncOpen(2))
+    //             {
+    //                 operates.Add(ItemOperateType.inlay);
+    //             }
+
+    //             if (FuncOpen.Instance.IsFuncOpen(91))
+    //             {
+    //                 int limitLevel = 0;
+    //                 if (equipModel.EquipLevelFuncID != null)
+    //                     limitLevel = equipModel.EquipLevelFuncID[91];
+    //                 if (item.config.LV >= limitLevel)
+    //                     operates.Add(ItemOperateType.train);
+    //             }
+
+    //             if (EquipEvolveModel.Instance.IsShowEvolveBtn(item.itemId))
+    //             {
+    //                 operates.Add(ItemOperateType.default1);
+    //             }
+    //             return operates;
+    //         }
+
+    //         if (ItemLogicUtility.Instance.IsRealmEquip(item.itemId) && WindowCenter.Instance.IsOpen("RoleEquipWin"))
+    //         {
+    //             operates.Add(ItemOperateType.putOff);
+    //             return operates;
+    //         }
+
+    //         if (ItemLogicUtility.Instance.IsSpiritWeapon(item.itemId) && WindowCenter.Instance.IsOpen("SpiritEquipBagWin"))
+    //         {
+    //             operates.Add(ItemOperateType.putOff);
+    //             return operates;
+    //         }
+    //     }
+
+    //     if (packType == PackType.Warehouse)
+    //     {
+    //         operates.Add(ItemOperateType.putOut);
+    //         return operates;
+    //     }
+
+    //     if (item.isAuction)
+    //     {
+    //         operates.Add(ItemOperateType.putAway);
+    //     }
+
+    //     var isEquip = ItemLogicUtility.Instance.IsRealmEquip(item.itemId);
+    //     var isSpiritWeapon = ItemLogicUtility.Instance.IsSpiritWeapon(item.itemId);
+    //     if (isEquip || isSpiritWeapon)
+    //     {
+    //         var isOverdue = ItemLogicUtility.Instance.IsOverdue(guid);
+    //         if (item.config.CanSell == 1)
+    //         {
+    //             operates.Add(ItemOperateType.sell);
+    //         }
+
+    //         if (item.config.ExpireTime > 0 && isOverdue && itemOverdueModel.CanRenewal(item.itemId))
+    //         {
+    //             operates.Add(ItemOperateType.renewal);
+    //         }
+
+    //         if (!isOverdue)
+    //         {
+    //             if (ItemLogicUtility.Instance.IsJobCompatibleItem(item.itemId))
+    //             {
+    //                 if (isEquip)
+    //                 {
+    //                     operates.Add(ItemOperateType.putOn);
+
+    //                     if (!item.config.JumpComposeCondi.IsNullOrEmpty())
+    //                     {
+    //                         var jumpId = 0;
+    //                         if (composeModel.CheckComposeItemById(item.itemId, out jumpId))
+    //                         {
+    //                             operates.Add(ItemOperateType.compose);
+    //                         }
+    //                     }
+    //                 }
+
+    //                 if (isSpiritWeapon)
+    //                 {
+    //                     if (WindowCenter.Instance.IsOpen<RoleEquipWin>())
+    //                     {
+    //                         operates.Add(ItemOperateType.putOn);
+    //                     }
+    //                     else if (WindowCenter.Instance.IsOpen<MainInterfaceWin>() || WindowCenter.Instance.IsOpen("SpiritEquipBagWin"))
+    //                     {
+    //                         operates.Add(ItemOperateType.putOn);
+    //                     }
+    //                 }
+    //             }
+    //             //else
+    //             //{
+    //             //    if (item.config.ItemColor > 3)
+    //             //    {
+    //             //        operates.Add(ItemOperateType.exchange);
+    //             //    }
+    //             //}
+    //         }
+
+    //         return operates;
+    //     }
+    //     if (ItemLogicUtility.Instance.IsDogzEquip(item.itemId))
+    //     {
+    //         if (packType == PackType.DogzItem)
+    //         {
+    //             if (item.config.ItemColor > 2 && item.config.ItemColor < 6)
+    //             {
+    //                 operates.Add(ItemOperateType.compose);
+    //             }
+    //             operates.Add(ItemOperateType.putOn);
+    //         }
+    //         else if (packType == PackType.DogzEquip)
+    //         {
+    //             operates.Add(ItemOperateType.putOff);
+    //         }
+    //         return operates;
+    //     }
+
+    //     operates.AddRange(GetOperates(item.itemId, item.count));
+
+    //     return operates;
+    // }
+
+    
+
+    private static List<ItemOperateType> GetGoodOperates(int goodId)
+    {
+        var operates = new List<ItemOperateType>();
+        var countLimit = BuyItemController.Instance.GetBuyCountLimit(goodId, PlayerDatas.Instance.baseData.VIPLv);
+        if (countLimit == -1 || countLimit > 0)
+        {
+            var config = StoreConfig.Get(goodId);
+            int curVipIndex = -1;
+            int nextVipIndex = -1;
+            bool isVipBuy = BuyItemController.Instance.CheckIsVipBuy(config, out curVipIndex, out nextVipIndex);
+
+            if ((isVipBuy && curVipIndex == -1) || PlayerDatas.Instance.baseData.LV < config.LV)
+            {
+                return operates;
+            }
+            operates.Add(ItemOperateType.buy);
+        }
+
+        return operates;
+    }
+
+    // private static bool IsEquipGemHoleOpen(Int2 equipPosition, int maxStar, int hole)
+    // {
+    //     GemHoleCondition condition;
+    //     if (gemModel.TryGetGemHoleCondition(hole, out condition))
+    //     {
+    //         var star = starModel.GetStarLevel(equipPosition);
+    //         if (Mathf.Min(star, maxStar) < condition.equipStar)
+    //         {
+    //             return false;
+    //         }
+
+    //         var vipLevel = PlayerDatas.Instance.baseData.VIPLv;
+    //         if (vipLevel < condition.vipLevel)
+    //         {
+    //             return false;
+    //         }
+    //     }
+
+    //     return true;
+    // }
+
+    private static TipType GetTipType(int itemId)
+    {
+        if (GeneralDefine.chestDisplayItems.Contains(itemId))
+        {
+            return TipType.PeerlessChest;
+        }
+
+        // if (ChestsAwardConfig.IsBox(itemId))
+        // {
+        //     return TipType.BoxItem;
+        // }
+
+        var config = ItemConfig.Get(itemId);
+        switch (config.Type)
+        {
+            case 101:
+            case 102:
+            case 103:
+            case 104:
+            case 105:
+            case 106:
+            case 107:
+            case 108:
+            case 109:
+            case 110:
+            case 111:
+            case 112:
+                return TipType.Equip;
+            case 26:
+            case 41:
+            case 42:
+                return TipType.PetMount;
+            case 147:
+                return TipType.TreasurePavilion;
+            default:
+                return TipType.Item;
         }
 
     }
 
+    [System.Diagnostics.Conditional("UNITY_EDITOR")]
+    private static void PrintItemBrief(int itemId)
+    {
+        var config = ItemConfig.Get(itemId);
+        Debug.LogFormat("鏌ョ湅鐗╁搧锛歩temId->{0} ;name->{1}", itemId, config.ItemName);
+    }
+
+    [System.Diagnostics.Conditional("UNITY_EDITOR")]
+    private static void PrintItemBrief(int itemId, ItemModel item)
+    {
+        var config = ItemConfig.Get(itemId);
+        Debug.LogFormat("鏌ョ湅鐗╁搧锛歩temId->{0};name->{1};鏈嶅姟绔储寮�->{3};guid->{2}",
+        itemId, config.ItemName, item.guid, item.gridIndex);
+    }
+
+}
+
 
diff --git a/Main/System/ItemTip/ItemTipWin.cs b/Main/System/ItemTip/ItemTipWin.cs
new file mode 100644
index 0000000..a29abce
--- /dev/null
+++ b/Main/System/ItemTip/ItemTipWin.cs
@@ -0,0 +1,27 @@
+using System;
+using UnityEngine;
+using UnityEngine.UI;
+
+/// <summary>
+/// 鐗╁搧鍩虹淇℃伅
+/// </summary>
+public class ItemTipWin : UIBase
+{
+
+    [SerializeField] ItemCell itemCell;
+    [SerializeField] Text nameText;
+    [SerializeField] Text descText;
+
+
+
+    protected override void OnPreOpen()
+    {
+        var item = ItemTipUtility.mainTipData.baseInfo;
+        itemCell.Init(new ItemCellModel(item.itemId, false, (ulong)item.count));
+        var itemConfig = ItemConfig.Get(item.itemId);
+        nameText.text = itemConfig.ItemName;
+        descText.text = itemConfig.Description;
+    }
+
+
+}
\ No newline at end of file
diff --git a/Main/System/ItemTip/ItemTipWin.cs.meta b/Main/System/ItemTip/ItemTipWin.cs.meta
new file mode 100644
index 0000000..321b974
--- /dev/null
+++ b/Main/System/ItemTip/ItemTipWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 037e7adc04fdcd74ab67dcd5dc746114
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/KnapSack/Logic/ComposeGirdCell.cs b/Main/System/KnapSack/Logic/ComposeGirdCell.cs
new file mode 100644
index 0000000..3ee472c
--- /dev/null
+++ b/Main/System/KnapSack/Logic/ComposeGirdCell.cs
@@ -0,0 +1,25 @@
+锘縰sing UnityEngine;
+using UnityEngine.UI;
+
+/// <summary>
+/// 鍚堟垚鏍煎瓙
+/// </summary>
+public class ComposeGirdCell : MonoBehaviour
+{
+    [SerializeField] ItemCell itemCell;
+    [SerializeField] Image fillImage;
+    [SerializeField] Image fullImage;
+    [SerializeField] Text processText;
+    public void Display(int index)
+    {
+        var guid = PackManager.Instance.composeItemGuidList[index];
+        var item = PackManager.Instance.GetItemByGuid(guid);
+        if (item == null)
+            return;
+        itemCell.Init(item);
+        itemCell.button.AddListener(()=>
+        {
+            //鍚堟垚鐣岄潰
+        });
+    }
+}
diff --git a/Main/System/KnapSack/Logic/ComposeGirdCell.cs.meta b/Main/System/KnapSack/Logic/ComposeGirdCell.cs.meta
new file mode 100644
index 0000000..d25b99a
--- /dev/null
+++ b/Main/System/KnapSack/Logic/ComposeGirdCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3c64a63d0c44fce40a3d1b90b18b2324
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/KnapSack/Logic/ItemLogicUtility.cs b/Main/System/KnapSack/Logic/ItemLogicUtility.cs
index e43d797..40bbc65 100644
--- a/Main/System/KnapSack/Logic/ItemLogicUtility.cs
+++ b/Main/System/KnapSack/Logic/ItemLogicUtility.cs
@@ -5,1361 +5,1363 @@
 using UnityEngine;
 
 
-    public class ItemLogicUtility : Singleton<ItemLogicUtility>
+public class ItemLogicUtility : Singleton<ItemLogicUtility>
+{
+    private string normalGSFormula;
+
+
+    private List<int> equipBaseProperties = new List<int>();
+    Dictionary<int, int> equipSkillScores = new Dictionary<int, int>();
+
+    PackManager packModel { get { return PackManager.Instance; } }
+    // BuffModel buffDatas { get { return ModelCenter.Instance.GetModel<BuffModel>(); } }
+    // MountModel mountDatas { get { return ModelCenter.Instance.GetModel<MountModel>(); } }
+    // PetModel petDatas { get { return ModelCenter.Instance.GetModel<PetModel>(); } }
+    // StrengthenModel strengthDatas { get { return ModelCenter.Instance.GetModel<StrengthenModel>(); } }
+    // MagicianModel magicianModel { get { return ModelCenter.Instance.GetModel<MagicianModel>(); } }
+    // ComposeWinModel composeModel { get { return ModelCenter.Instance.GetModel<ComposeWinModel>(); } }
+    // EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
+    // AlchemyModel alchemyModel { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
+
+    public void Init()
     {
-        private string normalGSFormula;
+        var GSFormulaConfig = FuncConfigConfig.Get("EquipGSFormula");
+        normalGSFormula = GSFormulaConfig.Numerical1;
 
-
-        private List<int> equipBaseProperties = new List<int>();
-        Dictionary<int, int> equipSkillScores = new Dictionary<int, int>();
-
-        PackManager packModel { get { return PackManager.Instance; } }
-        // BuffModel buffDatas { get { return ModelCenter.Instance.GetModel<BuffModel>(); } }
-        // MountModel mountDatas { get { return ModelCenter.Instance.GetModel<MountModel>(); } }
-        // PetModel petDatas { get { return ModelCenter.Instance.GetModel<PetModel>(); } }
-        // StrengthenModel strengthDatas { get { return ModelCenter.Instance.GetModel<StrengthenModel>(); } }
-        // MagicianModel magicianModel { get { return ModelCenter.Instance.GetModel<MagicianModel>(); } }
-        // ComposeWinModel composeModel { get { return ModelCenter.Instance.GetModel<ComposeWinModel>(); } }
-        // EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
-        // AlchemyModel alchemyModel { get { return ModelCenter.Instance.GetModel<AlchemyModel>(); } }
-
-        public void Init()
+        var equipSkillScoreJson = JsonMapper.ToObject(GSFormulaConfig.Numerical4);
+        foreach (var key in equipSkillScoreJson.Keys)
         {
-            var GSFormulaConfig = FuncConfigConfig.Get("EquipGSFormula");
-            normalGSFormula = GSFormulaConfig.Numerical1;
-
-            var equipSkillScoreJson = JsonMapper.ToObject(GSFormulaConfig.Numerical4);
-            foreach (var key in equipSkillScoreJson.Keys)
+            var skillId = 0;
+            int.TryParse(key, out skillId);
+            if (skillId != 0)
             {
-                var skillId = 0;
-                int.TryParse(key, out skillId);
-                if (skillId != 0)
-                {
-                    equipSkillScores[skillId] = (int)equipSkillScoreJson[key];
-                }
+                equipSkillScores[skillId] = (int)equipSkillScoreJson[key];
             }
-
-            var baseAttr = JsonMapper.ToObject(GSFormulaConfig.Numerical2);
-            if (baseAttr.IsArray)
-            {
-                for (int i = 0; i < baseAttr.Count; i++)
-                {
-                    equipBaseProperties.Add(int.Parse(baseAttr[i].ToString()));
-                }
-            }
-
-
-
-
-            DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
         }
 
-        void OnBeforePlayerDataInitialize()
+        var baseAttr = JsonMapper.ToObject(GSFormulaConfig.Numerical2);
+        if (baseAttr.IsArray)
         {
-            isPackResetOk = true;
-            ClearSortedBetterEquip();
+            for (int i = 0; i < baseAttr.Count; i++)
+            {
+                equipBaseProperties.Add(int.Parse(baseAttr[i].ToString()));
+            }
         }
 
-        #region 璁$畻瑁呭璇勫垎
 
-        class EquipSorceProperties
+
+
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
+    }
+
+    void OnBeforePlayerDataInitialize()
+    {
+        isPackResetOk = true;
+        ClearSortedBetterEquip();
+    }
+
+    #region 璁$畻瑁呭璇勫垎
+
+    class EquipSorceProperties
+    {
+        Dictionary<int, int> properties = new Dictionary<int, int>();
+
+        public int this[int id] { get { return properties[id]; } set { properties[id] = value; } }
+
+        public List<int> Keys { get { return new List<int>(properties.Keys); } }
+
+        void Add(int id, int value)
         {
-            Dictionary<int, int> properties = new Dictionary<int, int>();
-
-            public int this[int id] { get { return properties[id]; } set { properties[id] = value; } }
-
-            public List<int> Keys { get { return new List<int>(properties.Keys); } }
-
-            void Add(int id, int value)
+            if (properties.ContainsKey(id))
             {
-                if (properties.ContainsKey(id))
-                {
-                    properties[id] += value;
-                }
-                else
-                {
-                    properties[id] = value;
-                }
-            }
-
-            public void AddRange(List<int> ids, List<int> values)
-            {
-                if (ids == null || values == null)
-                {
-                    return;
-                }
-
-                var count = Mathf.Min(ids.Count, values.Count);
-                for (int i = 0; i < count; i++)
-                {
-                    Add(ids[i], values[i]);
-                }
-            }
-
-            public void AddRange(int[] ids, int[] values)
-            {
-                if (ids == null || values == null)
-                {
-                    return;
-                }
-
-                var length = Mathf.Min(ids.Length, values.Length);
-                for (int i = 0; i < length; i++)
-                {
-                    Add(ids[i], values[i]);
-                }
-            }
-
-            public void AddRange(Dictionary<int, int> keyValues)
-            {
-                if (keyValues == null)
-                {
-                    return;
-                }
-
-                foreach (var item in keyValues)
-                {
-                    Add(item.Key, item.Value);
-                }
-            }
-
-            public void AddBaseProperties(int itemId, List<int> reference)
-            {
-                var config = ItemConfig.Get(itemId);
-                if (config == null)
-                {
-                    return;
-                }
-                if (config.Effect1 != 0 && reference.Contains(config.Effect1))
-                {
-                    properties.Add(config.Effect1, config.EffectValueA1);
-                }
-
-                if (config.Effect2 != 0 && reference.Contains(config.Effect2))
-                {
-                    properties.Add(config.Effect2, config.EffectValueA2);
-                }
-
-                if (config.Effect3 != 0 && reference.Contains(config.Effect3))
-                {
-                    properties.Add(config.Effect3, config.EffectValueA3);
-                }
-
-                if (config.Effect4 != 0 && reference.Contains(config.Effect4))
-                {
-                    properties.Add(config.Effect4, config.EffectValueA4);
-                }
-
-                if (config.Effect5 != 0 && reference.Contains(config.Effect5))
-                {
-                    properties.Add(config.Effect5, config.EffectValueA5);
-                }
-            }
-
-            public void AddCustomProperties(int itemId)
-            {
-                if (!AppointItemConfig.HasKey(itemId))
-                {
-                    return;
-                }
-
-                var config = AppointItemConfig.Get(itemId);
-                AddRange(config.LegendAttrID, config.LegendAttrValue);
-            }
-
-            public bool ContainsKey(int id)
-            {
-                return properties.ContainsKey(id);
-            }
-
-        }
-
-        public int GetEquipScore(int itemId, Dictionary<int, List<int>> useDataDic = null, bool isPreview = false)
-        {
-            var config = ItemConfig.Get(itemId);
-            if (config == null) return 0;
-            if (config.EquipPlace == 0)
-            {
-                return 0;
-            }
-
-            var properties = new EquipSorceProperties();
-
-            if (IsCustomItem(itemId))
-            {
-                properties.AddBaseProperties(config.EffectValueA1, equipBaseProperties);
-                properties.AddCustomProperties(itemId);
-                return CalculateEquipScore(config.EffectValueA1, properties);
-            }
-
-            properties.AddBaseProperties(itemId, equipBaseProperties);
-
-
-            if (useDataDic != null)
-            {
-                if (useDataDic.ContainsKey((int)ItemUseDataKey.legendAttrID))
-                {
-                    properties.AddRange(useDataDic[(int)ItemUseDataKey.legendAttrID], useDataDic[(int)ItemUseDataKey.legendAttrValue]);
-                }
-
-                if (useDataDic.ContainsKey((int)ItemUseDataKey.outOfPrintAttrID))
-                {
-                    properties.AddRange(useDataDic[(int)ItemUseDataKey.outOfPrintAttrID], useDataDic[(int)ItemUseDataKey.outOfPrintAttrValue]);
-                }
-            }
-
-            return CalculateEquipScore(itemId, properties, useDataDic);
-        }
-
-        // private Dictionary<int, int> GetEquipLegendProperties(int itemId)
-        // {
-        //     var legendProperties = LegendPropertyUtility.GetLegendProFromEquipShen(itemId);
-        //     if (legendProperties == null)
-        //         legendProperties = LegendPropertyUtility.GetEquipProperties(itemId);
-        //     var properties = new Dictionary<int, int>();
-        //     if (legendProperties != null)
-        //     {
-        //         foreach (var item in legendProperties)
-        //         {
-        //             properties[item.x] = item.y;
-        //         }
-        //     }
-
-        //     return properties;
-        // }
-
-        // private Dictionary<int, int> GetEquipShenProperties(int itemId)
-        // {
-        //     var shenProperties = ShenPropertyUtility.GetEquipShenProperties(itemId);
-        //     var properties = new Dictionary<int, int>();
-        //     if (shenProperties != null)
-        //     {
-        //         foreach (var item in shenProperties)
-        //         {
-        //             properties[item.x] = item.y;
-        //         }
-        //     }
-
-        //     return properties;
-        // }
-
-        public bool IsCustomItem(int itemId)
-        {
-            if (!ItemConfig.HasKey(itemId))
-            {
-                return false;
-            }
-
-            return ItemConfig.Get(itemId).Effect1 == 220;
-        }
-
-        /// <summary>
-        /// 寰楀埌瑁呭鐨勮瘎鍒�
-        /// </summary>
-        /// <param name="itemId"></param>
-        /// <returns></returns>
-        private Dictionary<PropertyType, float> curEquipAttrDict = new Dictionary<PropertyType, float>(); //瀛樺偍褰撳墠瑁呭灞炴�у搴旂殑鏁板�� key 灞炴�� value 灞炴�у��
-        private int CalculateEquipScore(int itemId, EquipSorceProperties properties, Dictionary<int, List<int>> useDataDic = null)
-        {
-            var config = ItemConfig.Get(itemId);
-            if (config == null || !GeneralDefine.CompareEquipPlaces.Contains(config.EquipPlace))
-            {
-                return 0;
-            }
-
-            //properties.AddRange(GetEquipShenProperties(itemId));
-
-            var minAttack = properties.ContainsKey((int)PropertyType.MinAtk) ? properties[(int)PropertyType.MinAtk] : 0;
-            var maxAttack = properties.ContainsKey((int)PropertyType.MaxAtk) ? properties[(int)PropertyType.MaxAtk] : 0;
-            var attack = properties.ContainsKey((int)PropertyType.ATK) ? properties[(int)PropertyType.ATK] : 0;
-
-            properties[(int)PropertyType.MinAtk] = minAttack + attack;
-            properties[(int)PropertyType.MaxAtk] = maxAttack + attack;
-
-            Equation.Instance.Clear();
-            curEquipAttrDict.Clear();
-
-            var GSProValueDict = EquipGSParamConfig.GetTagGsProValueDict(config.LV, config.ItemColor, config.SuiteiD > 0 ? 1 : 0, config.StarLevel);
-            foreach (var key in properties.Keys)
-            {
-                var attrType = (PropertyType)key;
-                switch (attrType)
-                {
-                    case PropertyType.ATKSPEED:
-                    case PropertyType.OnlyFinalHurt:
-                    case PropertyType.PVPAtkBackHP:
-                    case PropertyType.MinAtk:
-                    case PropertyType.MaxAtk:
-                    case PropertyType.AddFinalHurt:
-                    case PropertyType.ReduceFinalHurt:
-                        curEquipAttrDict.Add(attrType, properties[key]);
-                        break;
-                    default:
-                        if (GSProValueDict != null && GSProValueDict.ContainsKey(attrType))
-                        {
-                            var curProValue = properties[key] * GSProValueDict[attrType];
-                            curEquipAttrDict.Add(attrType, curProValue);
-                        }
-                        else
-                        {
-                            curEquipAttrDict.Add(attrType, properties[key]);
-                        }
-                        break;
-                }
-            }
-
-            foreach (var key in curEquipAttrDict.Keys)
-            {
-                var propertyConfig = PlayerPropertyConfig.Get((int)key);
-                if (propertyConfig != null)
-                {
-                    Equation.Instance.AddKeyValue(propertyConfig.Parameter, curEquipAttrDict[key]);
-                }
-            }
-
-            var skillScore = 0;
-            if (useDataDic != null && useDataDic.ContainsKey((int)ItemUseDataKey.equipSkills))
-            {
-                for (int i = 0; i < useDataDic[(int)ItemUseDataKey.equipSkills].Count; i++)
-                {
-                    skillScore += equipSkillScores[useDataDic[(int)ItemUseDataKey.equipSkills][i]];
-                }
+                properties[id] += value;
             }
             else
             {
-
-                if (config.AddSkill1 != 0 && equipSkillScores.ContainsKey(config.AddSkill1))
-                {
-                    skillScore += equipSkillScores[config.AddSkill1];
-                }
-
-                if (config.AddSkill2 != 0 && equipSkillScores.ContainsKey(config.AddSkill2))
-                {
-                    skillScore += equipSkillScores[config.AddSkill2];
-                }
-
+                properties[id] = value;
             }
-
-
-            return skillScore + Equation.Instance.Eval<int>(normalGSFormula);
         }
 
-        #endregion
-
-       
-        private bool CheckIsExtendGrid(int itemId)
+        public void AddRange(List<int> ids, List<int> values)
         {
-            SinglePack singlePack = packModel.GetSinglePack(PackType.Item);
-            if (singlePack == null) return false;
+            if (ids == null || values == null)
+            {
+                return;
+            }
 
-            int startLockIndex = singlePack.unlockedGridCount - PackManager.Instance.initBagGridCount;
-            FuncConfigConfig _tagFuncModel = FuncConfigConfig.Get("OpenBagItem");
-            int haveCount = packModel.GetItemCountByID(PackType.Item, itemId);
-            Equation.Instance.Clear();
-            Equation.Instance.AddKeyValue("index", startLockIndex + 1);
-            int needTool = Equation.Instance.Eval<int>(_tagFuncModel.Numerical2);
-            if (haveCount >= needTool)
+            var count = Mathf.Min(ids.Count, values.Count);
+            for (int i = 0; i < count; i++)
+            {
+                Add(ids[i], values[i]);
+            }
+        }
+
+        public void AddRange(int[] ids, int[] values)
+        {
+            if (ids == null || values == null)
+            {
+                return;
+            }
+
+            var length = Mathf.Min(ids.Length, values.Length);
+            for (int i = 0; i < length; i++)
+            {
+                Add(ids[i], values[i]);
+            }
+        }
+
+        public void AddRange(Dictionary<int, int> keyValues)
+        {
+            if (keyValues == null)
+            {
+                return;
+            }
+
+            foreach (var item in keyValues)
+            {
+                Add(item.Key, item.Value);
+            }
+        }
+
+        public void AddBaseProperties(int itemId, List<int> reference)
+        {
+            var config = ItemConfig.Get(itemId);
+            if (config == null)
+            {
+                return;
+            }
+            if (config.Effect1 != 0 && reference.Contains(config.Effect1))
+            {
+                properties.Add(config.Effect1, config.EffectValueA1);
+            }
+
+            if (config.Effect2 != 0 && reference.Contains(config.Effect2))
+            {
+                properties.Add(config.Effect2, config.EffectValueA2);
+            }
+
+            if (config.Effect3 != 0 && reference.Contains(config.Effect3))
+            {
+                properties.Add(config.Effect3, config.EffectValueA3);
+            }
+
+            if (config.Effect4 != 0 && reference.Contains(config.Effect4))
+            {
+                properties.Add(config.Effect4, config.EffectValueA4);
+            }
+
+            if (config.Effect5 != 0 && reference.Contains(config.Effect5))
+            {
+                properties.Add(config.Effect5, config.EffectValueA5);
+            }
+        }
+
+        public void AddCustomProperties(int itemId)
+        {
+            if (!AppointItemConfig.HasKey(itemId))
+            {
+                return;
+            }
+
+            var config = AppointItemConfig.Get(itemId);
+            AddRange(config.LegendAttrID, config.LegendAttrValue);
+        }
+
+        public bool ContainsKey(int id)
+        {
+            return properties.ContainsKey(id);
+        }
+
+    }
+
+    public int GetEquipScore(int itemId, Dictionary<int, List<int>> useDataDic = null, bool isPreview = false)
+    {
+        var config = ItemConfig.Get(itemId);
+        if (config == null) return 0;
+        if (config.EquipPlace == 0)
+        {
+            return 0;
+        }
+
+        var properties = new EquipSorceProperties();
+
+        if (IsCustomItem(itemId))
+        {
+            properties.AddBaseProperties(config.EffectValueA1, equipBaseProperties);
+            properties.AddCustomProperties(itemId);
+            return CalculateEquipScore(config.EffectValueA1, properties);
+        }
+
+        properties.AddBaseProperties(itemId, equipBaseProperties);
+
+
+        if (useDataDic != null)
+        {
+            if (useDataDic.ContainsKey((int)ItemUseDataKey.legendAttrID))
+            {
+                properties.AddRange(useDataDic[(int)ItemUseDataKey.legendAttrID], useDataDic[(int)ItemUseDataKey.legendAttrValue]);
+            }
+
+            if (useDataDic.ContainsKey((int)ItemUseDataKey.outOfPrintAttrID))
+            {
+                properties.AddRange(useDataDic[(int)ItemUseDataKey.outOfPrintAttrID], useDataDic[(int)ItemUseDataKey.outOfPrintAttrValue]);
+            }
+        }
+
+        return CalculateEquipScore(itemId, properties, useDataDic);
+    }
+
+    // private Dictionary<int, int> GetEquipLegendProperties(int itemId)
+    // {
+    //     var legendProperties = LegendPropertyUtility.GetLegendProFromEquipShen(itemId);
+    //     if (legendProperties == null)
+    //         legendProperties = LegendPropertyUtility.GetEquipProperties(itemId);
+    //     var properties = new Dictionary<int, int>();
+    //     if (legendProperties != null)
+    //     {
+    //         foreach (var item in legendProperties)
+    //         {
+    //             properties[item.x] = item.y;
+    //         }
+    //     }
+
+    //     return properties;
+    // }
+
+    // private Dictionary<int, int> GetEquipShenProperties(int itemId)
+    // {
+    //     var shenProperties = ShenPropertyUtility.GetEquipShenProperties(itemId);
+    //     var properties = new Dictionary<int, int>();
+    //     if (shenProperties != null)
+    //     {
+    //         foreach (var item in shenProperties)
+    //         {
+    //             properties[item.x] = item.y;
+    //         }
+    //     }
+
+    //     return properties;
+    // }
+
+    public bool IsCustomItem(int itemId)
+    {
+        if (!ItemConfig.HasKey(itemId))
+        {
+            return false;
+        }
+
+        return ItemConfig.Get(itemId).Effect1 == 220;
+    }
+
+    /// <summary>
+    /// 寰楀埌瑁呭鐨勮瘎鍒�
+    /// </summary>
+    /// <param name="itemId"></param>
+    /// <returns></returns>
+    private Dictionary<PropertyType, float> curEquipAttrDict = new Dictionary<PropertyType, float>(); //瀛樺偍褰撳墠瑁呭灞炴�у搴旂殑鏁板�� key 灞炴�� value 灞炴�у��
+    private int CalculateEquipScore(int itemId, EquipSorceProperties properties, Dictionary<int, List<int>> useDataDic = null)
+    {
+        var config = ItemConfig.Get(itemId);
+        if (config == null || !GeneralDefine.CompareEquipPlaces.Contains(config.EquipPlace))
+        {
+            return 0;
+        }
+
+        //properties.AddRange(GetEquipShenProperties(itemId));
+
+        var minAttack = properties.ContainsKey((int)PropertyType.MinAtk) ? properties[(int)PropertyType.MinAtk] : 0;
+        var maxAttack = properties.ContainsKey((int)PropertyType.MaxAtk) ? properties[(int)PropertyType.MaxAtk] : 0;
+        var attack = properties.ContainsKey((int)PropertyType.ATK) ? properties[(int)PropertyType.ATK] : 0;
+
+        properties[(int)PropertyType.MinAtk] = minAttack + attack;
+        properties[(int)PropertyType.MaxAtk] = maxAttack + attack;
+
+        Equation.Instance.Clear();
+        curEquipAttrDict.Clear();
+
+        var GSProValueDict = EquipGSParamConfig.GetTagGsProValueDict(config.LV, config.ItemColor, config.SuiteiD > 0 ? 1 : 0, config.StarLevel);
+        foreach (var key in properties.Keys)
+        {
+            var attrType = (PropertyType)key;
+            switch (attrType)
+            {
+                case PropertyType.ATKSPEED:
+                case PropertyType.OnlyFinalHurt:
+                case PropertyType.PVPAtkBackHP:
+                case PropertyType.MinAtk:
+                case PropertyType.MaxAtk:
+                case PropertyType.AddFinalHurt:
+                case PropertyType.ReduceFinalHurt:
+                    curEquipAttrDict.Add(attrType, properties[key]);
+                    break;
+                default:
+                    if (GSProValueDict != null && GSProValueDict.ContainsKey(attrType))
+                    {
+                        var curProValue = properties[key] * GSProValueDict[attrType];
+                        curEquipAttrDict.Add(attrType, curProValue);
+                    }
+                    else
+                    {
+                        curEquipAttrDict.Add(attrType, properties[key]);
+                    }
+                    break;
+            }
+        }
+
+        foreach (var key in curEquipAttrDict.Keys)
+        {
+            var propertyConfig = PlayerPropertyConfig.Get((int)key);
+            if (propertyConfig != null)
+            {
+                Equation.Instance.AddKeyValue(propertyConfig.Parameter, curEquipAttrDict[key]);
+            }
+        }
+
+        var skillScore = 0;
+        if (useDataDic != null && useDataDic.ContainsKey((int)ItemUseDataKey.equipSkills))
+        {
+            for (int i = 0; i < useDataDic[(int)ItemUseDataKey.equipSkills].Count; i++)
+            {
+                skillScore += equipSkillScores[useDataDic[(int)ItemUseDataKey.equipSkills][i]];
+            }
+        }
+        else
+        {
+
+            if (config.AddSkill1 != 0 && equipSkillScores.ContainsKey(config.AddSkill1))
+            {
+                skillScore += equipSkillScores[config.AddSkill1];
+            }
+
+            if (config.AddSkill2 != 0 && equipSkillScores.ContainsKey(config.AddSkill2))
+            {
+                skillScore += equipSkillScores[config.AddSkill2];
+            }
+
+        }
+
+
+        return skillScore + Equation.Instance.Eval<int>(normalGSFormula);
+    }
+
+    #endregion
+
+
+    private bool CheckIsExtendGrid(int itemId)
+    {
+        SinglePack singlePack = packModel.GetSinglePack(PackType.Item);
+        if (singlePack == null) return false;
+
+        int startLockIndex = singlePack.unlockedGridCount - PackManager.Instance.initBagGridCount;
+        FuncConfigConfig _tagFuncModel = FuncConfigConfig.Get("OpenBagItem");
+        int haveCount = packModel.GetItemCountByID(PackType.Item, itemId);
+        Equation.Instance.Clear();
+        Equation.Instance.AddKeyValue("index", startLockIndex + 1);
+        int needTool = Equation.Instance.Eval<int>(_tagFuncModel.Numerical2);
+        if (haveCount >= needTool)
+        {
+            return true;
+        }
+        else
+        {
+            return false;
+        }
+    }
+
+    public event Action<string> GetBetterEquipEvent; //寰楀埌鏇村ソ鐨勮澶� value 鐗╁搧鐨勫疄渚婭D
+
+    // public void OnGetEquip(ItemModel item)
+    // {
+    //     if (item == null)
+    //     {
+    //         return;
+    //     }
+
+    //     if (item.packType != PackType.Item)
+    //     {
+    //         return;
+    //     }
+
+    //     if (!IsJobCompatibleItem(item.itemId))
+    //     {
+    //         return;
+    //     }
+
+    //     int equipPlace = item.config.EquipPlace;
+    //     if ((RoleEquipType)equipPlace == RoleEquipType.Wing)
+    //     {
+    //         var wing = packModel.GetItemByIndex(PackType.Equip, SpiritWeaponModel.WING_EQUIPINDEX);
+    //         if (wing == null)
+    //         {
+    //             if (!SpiritWeaponModel.hasAutoEquipWing)
+    //             {
+    //                 SpiritWeaponModel.hasAutoEquipWing = true;
+    //                 ItemOperateUtility.Instance.PutOnItem(item.guid);
+    //                 return;
+    //             }
+    //         }
+    //     }
+
+    //     switch ((RoleEquipType)equipPlace)
+    //     {
+    //         case RoleEquipType.Weapon:
+    //         case RoleEquipType.Weapon2:
+    //         case RoleEquipType.Hat:
+    //         case RoleEquipType.Clothes:
+    //         case RoleEquipType.Belt:
+    //         case RoleEquipType.Trousers:
+    //         case RoleEquipType.Shoes:
+    //         case RoleEquipType.Neck:
+    //         case RoleEquipType.FairyCan1:
+    //         case RoleEquipType.FairyCan2:
+    //         case RoleEquipType.Glove:
+    //         case RoleEquipType.Jade:
+    //         case RoleEquipType.Wing:
+    //         case RoleEquipType.Guard:
+    //         case RoleEquipType.PeerlessWeapon1:
+    //         case RoleEquipType.PeerlessWeapon2:
+    //             if (betterEquipExceptDungeonDict.ContainsKey(PlayerDatas.Instance.baseData.MapID))
+    //             {
+    //                 if (betterEquipExceptDungeonDict[PlayerDatas.Instance.baseData.MapID].Contains(item.itemId))
+    //                 {
+    //                     return;
+    //                 }
+    //             }
+    //             SetGetBetterEquipEvent(item);
+    //             break;
+    //     }
+    // }
+
+    private void SetGetBetterEquipEvent(ItemModel model)
+    {
+        // // if (model.isAuction)
+        // // {
+        // //    return;
+        // // }
+
+        // var itemEffectTime = model.GetUseData((int)ItemUseDataKey.createTime);
+        // if (!itemEffectTime.IsNullOrEmpty() && itemEffectTime.Count > 0)
+        // {
+        //     if (itemEffectTime[0] != 0)
+        //     {
+        //         var cool = KnapsackTimeCDMgr.Instance.GetItemCoolById(model.guid);
+        //         double remainTime = 0;
+        //         if (cool != null)
+        //         {
+        //             remainTime = cool.GetRemainTime();
+        //         }
+
+        //         if (remainTime >= 0 && remainTime < 120 && model.config.ExpireTime > 0)
+        //         {
+        //             return;
+        //         }
+        //     }
+        // }
+
+        // if (!equipModel.IsLevelUnLocked(model.config.LV))
+        // {
+        //     return;
+        // }
+
+        // int isFightUp = IsFightUp(model.itemId, model.score);
+        // if (isFightUp != 1)
+        // {
+        //     return;
+        // }
+
+        // if (GetBetterEquipEvent != null)
+        // {
+        //     GetBetterEquipEvent(model.guid);
+        // }
+    }
+
+
+
+    Dictionary<int, ItemModel> RealmBetterDict = new Dictionary<int, ItemModel>();
+    // public Dictionary<int, ItemModel> CheckBetterEquipByRealm()
+    // {
+    //     RealmBetterDict.Clear();
+    //     SinglePack singlePack = packModel.GetSinglePack(PackType.Item);
+    //     if (singlePack == null) return RealmBetterDict;
+
+    //     int realmLv = PlayerDatas.Instance.baseData.realmLevel;
+    //     Dictionary<int, ItemModel> pairs = singlePack.GetAllItems();
+    //     foreach (var model in pairs.Values)
+    //     {
+    //         var equipServerIndex = EquipSet.ClientPlaceToServerPlace(new Int2(model.config.LV, model.config.EquipPlace));
+    //         if (model.config.EquipPlace > 0
+    //             && model.config.EquipPlace != (int)RoleEquipType.Guard
+    //             && model.config.RealmLimit <= realmLv
+    //             && !IsOverdue(model.guid)
+    //             && IsFightUp(model.itemId, model.score) == 1)
+    //         {
+    //             if (!RealmBetterDict.ContainsKey(equipServerIndex))
+    //             {
+    //                 RealmBetterDict.Add(equipServerIndex, model);
+    //             }
+    //             else
+    //             {
+    //                 if (model.score > RealmBetterDict[equipServerIndex].score)
+    //                 {
+    //                     RealmBetterDict[equipServerIndex] = model;
+    //                 }
+    //             }
+    //         }
+    //     }
+    //     return RealmBetterDict;
+    // }
+
+    // List<ItemModel> RealmDruglist = new List<ItemModel>();
+    // public List<ItemModel> GetDruglistByRealm()
+    // {
+    //     RealmDruglist.Clear();
+    //     SinglePack singlePack = packModel.GetSinglePack(PackType.Item);
+    //     if (singlePack == null) return RealmDruglist;
+
+    //     int realmLv = PlayerDatas.Instance.baseData.realmLevel;
+    //     Dictionary<int, ItemModel> pairs = singlePack.GetAllItems();
+    //     foreach (var model in pairs.Values)
+    //     {
+    //         if (packModel.CheckIsDrugById(model.itemId))
+    //         {
+    //             AttrFruitConfig fruitConfig = AttrFruitConfig.Get(model.itemId);
+    //             if (!packModel.IsReachMaxUseDrug(fruitConfig)
+    //                 && model.config.RealmLimit <= realmLv)
+    //             {
+    //                 RealmDruglist.Add(model);
+    //             }
+    //         }
+    //     }
+    //     return RealmDruglist;
+    // }
+
+    #region 鐗╁搧澶勪簬CD涓殑閫昏緫澶勭悊
+
+    private List<string> itemEffectTimelist = new List<string>(); //key 鐗╁搧瀹炰緥ID
+    /// <summary>
+    /// 鐗╁搧浣跨敤鏃堕棿闄愬埗
+    /// </summary>
+    public void SetItemEffectCDTime(string guid, int itemID, int getTime, int serverSurplusTime)
+    {
+        double time = GetTimeOffest(TimeUtility.GetTime((uint)getTime));
+        if (time < 0)
+        {
+            time = 0;
+        }
+
+        ItemConfig itemConfig = ItemConfig.Get(itemID);
+        if (time >= itemConfig.ExpireTime)
+        {
+            KnapsackTimeCDMgr.Instance.UnRegister(guid);
+            return;
+        }
+        double remainTime = (serverSurplusTime > 0 ? serverSurplusTime : itemConfig.ExpireTime) - time;
+        KnapsackTimeCDMgr.Instance.Register(guid, itemID, remainTime);
+    }
+
+    public double GetTimeOffest(DateTime getTime)
+    {
+        Debug.Log("鐜板湪鏃堕棿锛�" + TimeUtility.ServerNow + "鑾峰緱鏃堕棿:" + getTime);
+        //TimeUtility.SyncServerTime();
+        TimeSpan t = TimeUtility.ServerNow - getTime;
+        Debug.Log("鏃堕棿宸細" + t.TotalSeconds);
+        return t.TotalSeconds;
+    }
+
+    #endregion
+
+    #region 璁剧疆鍙互涓�閿嚭鍞殑鐗╁搧鏁版嵁
+
+    private int playerLv;
+    private Dictionary<int, List<ItemModel>> _lifePotionDict = new Dictionary<int, List<ItemModel>>(); //key 鑽按绛夌骇
+    private List<int> _sellItemScorelist = new List<int>();
+    private Dictionary<int, Dictionary<int, List<ItemModel>>> _sameIndexEquipDict = new Dictionary<int, Dictionary<int, List<ItemModel>>>();  //瀛樺偍鐩稿悓瑁呭浣嶇殑瑁呭
+                                                                                                                                              // private  _sameEquipScoreDict = new Dictionary<int, List<ItemModel>>(); //瀛樺偍鐩稿悓ID涓浉鍚岃澶囪瘎鍒嗙殑瑁呭
+    private Dictionary<int, ItemModel> _packModelDict;
+    private List<ItemModel> _sellItemlist = new List<ItemModel>();
+
+    // public List<ItemModel> GetSellItemList()
+    // {
+    //     GetOneKeySellModel();
+    //     _sellItemlist.Sort(SetSellItemOrder);
+    //     return _sellItemlist;
+    // }
+
+    // public int SetSellItemOrder(ItemModel startModel, ItemModel endModel)
+    // {
+    //     bool startIsEquip = IsRealmEquip(startModel.itemId);
+    //     bool endIsEquip = IsRealmEquip(endModel.itemId);
+    //     if (startIsEquip.CompareTo(endIsEquip) != 0) return -startIsEquip.CompareTo(endIsEquip);
+    //     int order1 = startModel.config.Type;
+    //     int order2 = endModel.config.Type;
+    //     if (order1.CompareTo(order2) != 0) return order1.CompareTo(order2);
+    //     int color1 = startModel.config.ItemColor;
+    //     int color2 = endModel.config.ItemColor;
+    //     if (color1.CompareTo(color2) != 0) return -color1.CompareTo(color2);
+    //     int code1 = startModel.itemId;
+    //     int code2 = endModel.itemId;
+    //     if (code1.CompareTo(code2) != 0) return -code1.CompareTo(code2);
+    //     return 0;
+    // }
+
+    // public void GetOneKeySellModel()
+    // {
+    //     SinglePack singlePack = packModel.GetSinglePack(PackType.Item);
+    //     if (singlePack == null)
+    //         return;
+
+    //     _sellItemlist.Clear();
+    //     _lifePotionDict.Clear();
+    //     _sameIndexEquipDict.Clear();
+    //     _sellItemScorelist.Clear();
+    //     playerLv = PlayerDatas.Instance.baseData.LV;
+    //     _packModelDict = singlePack.GetAllItems();
+    //     foreach (var key in _packModelDict.Keys)
+    //     {
+    //         GetCanSellEquipList(_packModelDict[key]);
+    //         ItemModel itemModel = _packModelDict[key];
+    //         if (drugIDs.Contains(itemModel.itemId))
+    //         {
+    //             if (!_lifePotionDict.ContainsKey(itemModel.config.LV))
+    //             {
+    //                 List<ItemModel> modellist = new List<ItemModel>();
+    //                 modellist.Add(itemModel);
+    //                 _lifePotionDict.Add(itemModel.config.LV, modellist);
+    //             }
+    //             else
+    //             {
+    //                 _lifePotionDict[itemModel.config.LV].Add(itemModel);
+    //             }
+    //         }
+    //     }
+
+    //     #region 寰楀埌鍙互鍑哄敭鐨勮澶�
+    //     foreach (var key in _sameIndexEquipDict.Keys)
+    //     {
+    //         _sellItemScorelist = _sameIndexEquipDict[key].Keys.ToList();
+    //         _sellItemScorelist.Sort();
+    //         if (_sellItemScorelist.Count > 0)
+    //         {
+    //             int score = 0;
+    //             for (score = _sellItemScorelist.Count - 1; score > -1; score--)
+    //             {
+    //                 SinglePack equipPack = packModel.GetSinglePack(PackType.Equip);
+    //                 ItemModel model = null;
+    //                 if (equipPack != null)
+    //                 {
+    //                     model = equipPack.GetItemByIndex(key);
+    //                 }
+
+    //                 var modellist = _sameIndexEquipDict[key][_sellItemScorelist[score]];
+    //                 bool remainBetter = true;
+    //                 for (var i = 0; i < modellist.Count; i++)
+    //                 {
+    //                     if (model != null)
+    //                     {
+    //                         if (remainBetter)
+    //                         {
+    //                             if (model.score < _sellItemScorelist[score] && IsJobCompatibleItem(model.itemId))
+    //                             {
+    //                                 _sameIndexEquipDict[key].Remove(_sellItemScorelist[score]);
+    //                                 remainBetter = false;
+    //                                 break;
+    //                             }
+    //                         }
+
+    //                     }
+    //                     else
+    //                     {
+    //                         if (IsJobCompatibleItem(model.itemId))
+    //                         {
+    //                             if (remainBetter)
+    //                             {
+    //                                 _sameIndexEquipDict[key].Remove(_sellItemScorelist[score]);
+    //                                 remainBetter = false;
+    //                                 break;
+    //                             }
+    //                         }
+    //                     }
+    //                 }
+
+    //                 if (!remainBetter)
+    //                 {
+    //                     break;
+    //                 }
+
+    //             }
+
+    //             for (var j = 0; j < _sellItemScorelist.Count; j++)
+    //             {
+
+    //                 if (_sameIndexEquipDict[key].ContainsKey(_sellItemScorelist[j]))
+    //                 {
+    //                     var sellModlelist = _sameIndexEquipDict[key][_sellItemScorelist[j]];
+    //                     for (var k = 0; k < sellModlelist.Count; k++)
+    //                     {
+    //                         _sellItemlist.Add(sellModlelist[k]);
+    //                     }
+    //                 }
+    //             }
+
+    //         }
+
+    //     }
+    //     #endregion
+
+    //     List<int> drugLvlist = new List<int>();
+    //     drugLvlist.AddRange(_lifePotionDict.Keys.ToList());
+    //     drugLvlist.Sort();
+    //     for (int i = drugLvlist.Count - 1; i > -1; i--)
+    //     {
+    //         if (drugLvlist[i] > playerLv)
+    //         {
+    //             _lifePotionDict.Remove(drugLvlist[i]);
+    //         }
+    //         else
+    //         {
+    //             _lifePotionDict.Remove(drugLvlist[i]);
+    //             break;
+    //         }
+    //     }
+
+    //     foreach (var list in _lifePotionDict.Values)
+    //     {
+    //         for (int i = 0; i < list.Count; i++)
+    //         {
+    //             _sellItemlist.Add(list[i]);
+    //         }
+
+    //     }
+    // }
+
+
+    //寰楀埌婊¤冻鍑哄敭鏉′欢鐨勮澶囧垪琛�
+    // public void GetCanSellEquipList(ItemModel model)
+    // {
+
+    //     if (model.config.EquipPlace == 0 || !onekeySellTypes.Contains(model.config.Type))
+    //         return;
+
+    //     Dictionary<int, List<ItemModel>> sameScoreDict;
+    //     List<ItemModel> sameScorelist;
+
+    //     if (model.config.ItemColor < 3)
+    //     {
+    //         if (!_sameIndexEquipDict.ContainsKey(model.config.EquipPlace))
+    //         {
+    //             sameScoreDict = new Dictionary<int, List<ItemModel>>();
+    //             sameScorelist = new List<ItemModel>();
+    //             sameScorelist.Add(model);
+    //             sameScoreDict.Add(model.score, sameScorelist);
+    //             _sameIndexEquipDict.Add(model.config.EquipPlace, sameScoreDict);
+
+    //         }
+    //         else
+    //         {
+    //             if (_sameIndexEquipDict[model.config.EquipPlace].ContainsKey(model.score))
+    //             {
+    //                 _sameIndexEquipDict[model.config.EquipPlace][model.score].Add(model);
+    //             }
+    //             else
+    //             {
+    //                 sameScorelist = new List<ItemModel>();
+    //                 sameScorelist.Add(model);
+    //                 _sameIndexEquipDict[model.config.EquipPlace].Add(model.score, sameScorelist);
+    //             }
+
+    //         }
+    //     }
+
+
+    // }
+
+    #endregion
+
+    #region 鍙戦�佽姹�
+    /// <summary>
+    /// 涓�閿嚭鍞墿鍝佺殑璇锋眰
+    /// </summary>
+    /// <param name="_oneKeySelllist"></param>
+    // public void OneKeySell(List<ItemModel> _oneKeySelllist)
+    // {
+    //     if (!isPackResetOk || SettingEffectMgr.Instance.isStartOneKeySell) return;
+
+    //     SettingEffectMgr.Instance.isStartOneKeySell = true;
+    //     byte[] itemIndexs = new byte[_oneKeySelllist.Count];
+    //     int i = 0;
+    //     for (i = 0; i < _oneKeySelllist.Count; i++)
+    //     {
+    //         itemIndexs[i] = (byte)_oneKeySelllist[i].gridIndex;
+    //     }
+    //     CA311_tagCMSellItem sellItem = new CA311_tagCMSellItem();
+    //     sellItem.PackType = (int)PackType.Item;
+    //     sellItem.Count = (byte)_oneKeySelllist.Count;
+    //     sellItem.ItemIndex = itemIndexs;
+    //     GameNetSystem.Instance.SendInfo(sellItem);
+    // }
+
+    /// <summary>
+    /// 鏁寸悊鍖呰9鐗╁搧
+    /// </summary>
+    /// <param name="type"></param>
+    public bool isPackResetOk { get; set; }
+    public void ResetPack(PackType type)
+    {
+        if (lookLineIndex > -1)
+        {
+            SetLookIndex(null);
+        }
+
+
+        SinglePack singlePack = packModel.GetSinglePack(type);
+        if (singlePack != null)
+        {
+            var packReset = new C070F_tagCItemPackReset();
+            packReset.Type = (byte)type;
+            packReset.ItemBeginIndex = 0;
+            packReset.ItemEndIndex = (ushort)(singlePack.unlockedGridCount - 1);
+            GameNetSystem.Instance.SendInfo(packReset); //鏁寸悊鐗╁搧
+            if (type == PackType.Item)
+            {
+                isPackResetOk = false;
+            }
+        }
+    }
+    #endregion
+
+    #region 鏌ョ湅鏌愪釜浣嶇疆鐨勭墿鍝�
+    public event Action lookEquipEvent;
+    private int _lookLineIndex = -1;
+    public int lookLineIndex { get { return _lookLineIndex; } private set { _lookLineIndex = value; } }
+
+    public string lookItemGUID { get; private set; }
+
+    public void SetLookIndex(string guid, int singleRowCount = 5)
+    {
+
+        if (string.IsNullOrEmpty(guid) || guid == "")
+        {
+            lookLineIndex = -1;
+        }
+        else
+        {
+            int index = packModel.GetItemByGuid(guid).gridIndex;
+            lookLineIndex = index / singleRowCount;
+            lookItemGUID = guid;
+        }
+
+        if (lookEquipEvent != null)
+        {
+            lookEquipEvent();
+        }
+
+    }
+    #endregion
+
+    #region 鍒ゆ柇鏄惁鏈夋洿濂界殑瑁呭鏇挎崲
+
+    /// <summary>
+    /// 鑾峰彇瑁呭璇勫垎鏈�楂樺彲鎻愬崌鎴樺姏鐨勮澶�
+    /// </summary>
+    /// <param name="_places"></param>
+    /// <returns></returns>
+    // public string GetHighestScoreEquipByPlace(int equipPlace)
+    // {
+    //     var itemPackage = packModel.GetSinglePack(PackType.Item);
+    //     var allItems = itemPackage.GetAllItems();
+    //     var putModel = packModel.GetItemByIndex(PackType.Equip, equipPlace);
+    //     var guid = string.Empty;
+    //     var score = putModel == null ? 0 : putModel.score;
+    //     foreach (var item in allItems.Values)
+    //     {
+    //         if (item.config.EquipPlace == equipPlace)
+    //         {
+    //             if (!IsOverdue(item.guid)
+    //                && (IsJobCompatibleItem(item.itemId)) && item.score > score)
+    //             {
+    //                 guid = item.guid;
+    //                 score = item.score;
+    //             }
+    //         }
+    //     }
+
+    //     return guid;
+    // }
+    #endregion
+
+    #region 鑳屽寘鏁寸悊鍚庡ソ鐨勫悓绫诲瀷鏈�濂界殑瑁呭
+    Dictionary<int, Dictionary<int, ItemModel>> itemModelDict = new Dictionary<int, Dictionary<int, ItemModel>>();  // key1 瑁呭浣嶇疆绱㈠紩 key2 鑳屽寘浣嶇疆绱㈠紩
+
+    public void ClearSortedBetterEquip()
+    {
+        itemModelDict.Clear();
+    }
+
+    public void SetBagSortBetterEquipList(ItemModel itemModel)
+    {
+        if (itemModel == null || itemModel.packType != PackType.Item) return;
+
+        if (!IsCanPutOn(itemModel)) return;
+
+        int equipPlace = itemModel.config.EquipPlace;
+        if (!itemModelDict.ContainsKey(equipPlace))
+        {
+            var dict = new Dictionary<int, ItemModel>();
+            if (IsFightUp(itemModel.itemId, itemModel.score) == 1)
+            {
+                dict.Add(itemModel.gridIndex, itemModel);
+                itemModelDict.Add(equipPlace, dict);
+            }
+        }
+        else
+        {
+            if (IsFightUp(itemModel.itemId, itemModel.score) == 1)
+            {
+                itemModelDict[equipPlace].Add(itemModel.gridIndex, itemModel);
+            }
+        }
+
+    }
+
+    public ItemModel GetBagSortBetterEquip(int equipPlace, int index)
+    {
+        ItemModel itemModel = null;
+        if (itemModelDict.ContainsKey(equipPlace))
+        {
+            itemModelDict[equipPlace].TryGetValue(index, out itemModel);
+        }
+        return itemModel;
+    }
+
+    bool IsCanPutOn(ItemModel item)
+    {
+        if (IsJobCompatibleItem(item.itemId))
+        {
+            return false;
+        }
+
+        int equipPlace = item.config.EquipPlace;
+        if (equipPlace == 0 || equipPlace > 17)
+        {
+            return false;
+        }
+
+        var putOnlimitList = item.GetUseData((int)ItemUseDataKey.cancelUseLimit);
+        if (!putOnlimitList.IsNullOrEmpty())
+        {
+            if (putOnlimitList[0] == 1)
             {
                 return true;
             }
-            else
-            {
-                return false;
-            }
         }
 
-        public event Action<string> GetBetterEquipEvent; //寰楀埌鏇村ソ鐨勮澶� value 鐗╁搧鐨勫疄渚婭D
+        return true;
+    }
 
-        // public void OnGetEquip(ItemModel item)
+    #endregion
+
+    #region 寰楀埌鐗╁搧鐨勫搧璐ㄩ鑹�
+    private Dictionary<int, int> wingRefineQualityDict;
+    private int[] wingsQualitys;
+    private int[] wingsRefineExps;
+    public int GetItemQuality(int itemId, Dictionary<int, List<int>> useDataDic = null)
+    {
+        wingsQualitys = null;
+        wingsRefineExps = null;
+        ItemConfig itemConfig = ItemConfig.Get(itemId);
+        // wingRefineQualityDict = WingRefineAttrConfig.GetWingsQualityModel(itemConfig.LV);
+        // if (useDataDic != null)
         // {
-        //     if (item == null)
+        //     if (useDataDic.ContainsKey(42) && wingRefineQualityDict != null)
         //     {
-        //         return;
-        //     }
-
-        //     if (item.packType != PackType.Item)
-        //     {
-        //         return;
-        //     }
-
-        //     if (!IsJobCompatibleItem(item.itemId))
-        //     {
-        //         return;
-        //     }
-
-        //     int equipPlace = item.config.EquipPlace;
-        //     if ((RoleEquipType)equipPlace == RoleEquipType.Wing)
-        //     {
-        //         var wing = packModel.GetItemByIndex(PackType.Equip, SpiritWeaponModel.WING_EQUIPINDEX);
-        //         if (wing == null)
+        //         wingsQualitys = wingRefineQualityDict.Keys.ToArray();
+        //         wingsRefineExps = wingRefineQualityDict.Values.ToArray();
+        //         int i = 0;
+        //         for (i = wingsRefineExps.Length - 1; i > -1; i--)
         //         {
-        //             if (!SpiritWeaponModel.hasAutoEquipWing)
+        //             if (useDataDic[42][0] >= wingsRefineExps[i])
         //             {
-        //                 SpiritWeaponModel.hasAutoEquipWing = true;
-        //                 ItemOperateUtility.Instance.PutOnItem(item.guid);
-        //                 return;
+        //                 return wingsQualitys[i];
         //             }
         //         }
         //     }
-
-        //     switch ((RoleEquipType)equipPlace)
-        //     {
-        //         case RoleEquipType.Weapon:
-        //         case RoleEquipType.Weapon2:
-        //         case RoleEquipType.Hat:
-        //         case RoleEquipType.Clothes:
-        //         case RoleEquipType.Belt:
-        //         case RoleEquipType.Trousers:
-        //         case RoleEquipType.Shoes:
-        //         case RoleEquipType.Neck:
-        //         case RoleEquipType.FairyCan1:
-        //         case RoleEquipType.FairyCan2:
-        //         case RoleEquipType.Glove:
-        //         case RoleEquipType.Jade:
-        //         case RoleEquipType.Wing:
-        //         case RoleEquipType.Guard:
-        //         case RoleEquipType.PeerlessWeapon1:
-        //         case RoleEquipType.PeerlessWeapon2:
-        //             if (betterEquipExceptDungeonDict.ContainsKey(PlayerDatas.Instance.baseData.MapID))
-        //             {
-        //                 if (betterEquipExceptDungeonDict[PlayerDatas.Instance.baseData.MapID].Contains(item.itemId))
-        //                 {
-        //                     return;
-        //                 }
-        //             }
-        //             SetGetBetterEquipEvent(item);
-        //             break;
-        //     }
         // }
+        return itemConfig.ItemColor;
+    }
+    #endregion
 
-        private void SetGetBetterEquipEvent(ItemModel model)
+    //璁剧疆鐜╁璐у竵鏄剧ず
+    public string OnChangeCoinsUnit(ulong value)
+    {
+        return UIHelper.ReplaceLargeNum(value);
+    }
+
+    /// <summary>
+    /// 瑁呭鏄惁鍙互鎻愬崌鎴樺姏
+    /// </summary>
+    /// <param name="_itemID"></param>
+    /// <param name="_score"></param>
+    /// <returns></returns>
+    public int IsFightUp(int _itemID, int _score)//-1浣庣骇锛�0涓嶆槸鏈亴涓氾紝1鏇村ソ
+    {
+        var config = ItemConfig.Get(_itemID);
+        if (config != null)
         {
-            // // if (model.isAuction)
-            // // {
-            // //    return;
-            // // }
-
-            // var itemEffectTime = model.GetUseData((int)ItemUseDataKey.createTime);
-            // if (!itemEffectTime.IsNullOrEmpty() && itemEffectTime.Count > 0)
+            // var index = EquipModel.GetItemServerEquipPlace(_itemID);
+            // if (index == -1)
             // {
-            //     if (itemEffectTime[0] != 0)
-            //     {
-            //         var cool = KnapsackTimeCDMgr.Instance.GetItemCoolById(model.guid);
-            //         double remainTime = 0;
-            //         if (cool != null)
-            //         {
-            //             remainTime = cool.GetRemainTime();
-            //         }
-
-            //         if (remainTime >= 0 && remainTime < 120 && model.config.ExpireTime > 0)
-            //         {
-            //             return;
-            //         }
-            //     }
+            //     return 0;
             // }
 
-            // if (!equipModel.IsLevelUnLocked(model.config.LV))
+            // var item = packModel.GetItemByIndex(PackType.Equip, index);
+            // var equipScore = item != null ? item.score : 0;
+            // if (IsJobCompatibleItem(_itemID))
             // {
-            //     return;
+            //     return _score.CompareTo(equipScore);
             // }
-
-            // int isFightUp = IsFightUp(model.itemId, model.score);
-            // if (isFightUp != 1)
+            // else
             // {
-            //     return;
-            // }
-
-            // if (GetBetterEquipEvent != null)
-            // {
-            //     GetBetterEquipEvent(model.guid);
+            //     return 0;
             // }
         }
 
+        return 0;
+    }
 
-
-        Dictionary<int, ItemModel> RealmBetterDict = new Dictionary<int, ItemModel>();
-        // public Dictionary<int, ItemModel> CheckBetterEquipByRealm()
-        // {
-        //     RealmBetterDict.Clear();
-        //     SinglePack singlePack = packModel.GetSinglePack(PackType.Item);
-        //     if (singlePack == null) return RealmBetterDict;
-
-        //     int realmLv = PlayerDatas.Instance.baseData.realmLevel;
-        //     Dictionary<int, ItemModel> pairs = singlePack.GetAllItems();
-        //     foreach (var model in pairs.Values)
-        //     {
-        //         var equipServerIndex = EquipSet.ClientPlaceToServerPlace(new Int2(model.config.LV, model.config.EquipPlace));
-        //         if (model.config.EquipPlace > 0
-        //             && model.config.EquipPlace != (int)RoleEquipType.Guard
-        //             && model.config.RealmLimit <= realmLv
-        //             && !IsOverdue(model.guid)
-        //             && IsFightUp(model.itemId, model.score) == 1)
-        //         {
-        //             if (!RealmBetterDict.ContainsKey(equipServerIndex))
-        //             {
-        //                 RealmBetterDict.Add(equipServerIndex, model);
-        //             }
-        //             else
-        //             {
-        //                 if (model.score > RealmBetterDict[equipServerIndex].score)
-        //                 {
-        //                     RealmBetterDict[equipServerIndex] = model;
-        //                 }
-        //             }
-        //         }
-        //     }
-        //     return RealmBetterDict;
-        // }
-
-        // List<ItemModel> RealmDruglist = new List<ItemModel>();
-        // public List<ItemModel> GetDruglistByRealm()
-        // {
-        //     RealmDruglist.Clear();
-        //     SinglePack singlePack = packModel.GetSinglePack(PackType.Item);
-        //     if (singlePack == null) return RealmDruglist;
-
-        //     int realmLv = PlayerDatas.Instance.baseData.realmLevel;
-        //     Dictionary<int, ItemModel> pairs = singlePack.GetAllItems();
-        //     foreach (var model in pairs.Values)
-        //     {
-        //         if (packModel.CheckIsDrugById(model.itemId))
-        //         {
-        //             AttrFruitConfig fruitConfig = AttrFruitConfig.Get(model.itemId);
-        //             if (!packModel.IsReachMaxUseDrug(fruitConfig)
-        //                 && model.config.RealmLimit <= realmLv)
-        //             {
-        //                 RealmDruglist.Add(model);
-        //             }
-        //         }
-        //     }
-        //     return RealmDruglist;
-        // }
-
-        #region 鐗╁搧澶勪簬CD涓殑閫昏緫澶勭悊
-
-        private List<string> itemEffectTimelist = new List<string>(); //key 鐗╁搧瀹炰緥ID
-        /// <summary>
-        /// 鐗╁搧浣跨敤鏃堕棿闄愬埗
-        /// </summary>
-        public void SetItemEffectCDTime(string guid, int itemID, int getTime, int serverSurplusTime)
+    // 涓嶅寘鍚湭寮�鏀捐澶囩殑姣旇緝 灞炰簬-1
+    public int IsFightUpEx(int _itemID, int _score, int _realm)//-1浣庣骇锛�0涓嶆槸鏈亴涓氾紝1鏇村ソ
+    {
+        var config = ItemConfig.Get(_itemID);
+        if (config != null)
         {
-            double time = GetTimeOffest(TimeUtility.GetTime((uint)getTime));
-            if (time < 0)
-            {
-                time = 0;
-            }
-
-            ItemConfig itemConfig = ItemConfig.Get(itemID);
-            if (time >= itemConfig.ExpireTime)
-            {
-                KnapsackTimeCDMgr.Instance.UnRegister(guid);
-                return;
-            }
-            double remainTime = (serverSurplusTime > 0 ? serverSurplusTime : itemConfig.ExpireTime) - time;
-            KnapsackTimeCDMgr.Instance.Register(guid, itemID, remainTime);
-        }
-
-        public double GetTimeOffest(DateTime getTime)
-        {
-            Debug.Log("鐜板湪鏃堕棿锛�" + TimeUtility.ServerNow + "鑾峰緱鏃堕棿:" + getTime);
-            //TimeUtility.SyncServerTime();
-            TimeSpan t = TimeUtility.ServerNow - getTime;
-            Debug.Log("鏃堕棿宸細" + t.TotalSeconds);
-            return t.TotalSeconds;
-        }
-
-        #endregion
-
-        #region 璁剧疆鍙互涓�閿嚭鍞殑鐗╁搧鏁版嵁
-
-        private int playerLv;
-        private Dictionary<int, List<ItemModel>> _lifePotionDict = new Dictionary<int, List<ItemModel>>(); //key 鑽按绛夌骇
-        private List<int> _sellItemScorelist = new List<int>();
-        private Dictionary<int, Dictionary<int, List<ItemModel>>> _sameIndexEquipDict = new Dictionary<int, Dictionary<int, List<ItemModel>>>();  //瀛樺偍鐩稿悓瑁呭浣嶇殑瑁呭
-                                                                                                                                                  // private  _sameEquipScoreDict = new Dictionary<int, List<ItemModel>>(); //瀛樺偍鐩稿悓ID涓浉鍚岃澶囪瘎鍒嗙殑瑁呭
-        private Dictionary<int, ItemModel> _packModelDict;
-        private List<ItemModel> _sellItemlist = new List<ItemModel>();
-
-        // public List<ItemModel> GetSellItemList()
-        // {
-        //     GetOneKeySellModel();
-        //     _sellItemlist.Sort(SetSellItemOrder);
-        //     return _sellItemlist;
-        // }
-
-        // public int SetSellItemOrder(ItemModel startModel, ItemModel endModel)
-        // {
-        //     bool startIsEquip = IsRealmEquip(startModel.itemId);
-        //     bool endIsEquip = IsRealmEquip(endModel.itemId);
-        //     if (startIsEquip.CompareTo(endIsEquip) != 0) return -startIsEquip.CompareTo(endIsEquip);
-        //     int order1 = startModel.config.Type;
-        //     int order2 = endModel.config.Type;
-        //     if (order1.CompareTo(order2) != 0) return order1.CompareTo(order2);
-        //     int color1 = startModel.config.ItemColor;
-        //     int color2 = endModel.config.ItemColor;
-        //     if (color1.CompareTo(color2) != 0) return -color1.CompareTo(color2);
-        //     int code1 = startModel.itemId;
-        //     int code2 = endModel.itemId;
-        //     if (code1.CompareTo(code2) != 0) return -code1.CompareTo(code2);
-        //     return 0;
-        // }
-
-        // public void GetOneKeySellModel()
-        // {
-        //     SinglePack singlePack = packModel.GetSinglePack(PackType.Item);
-        //     if (singlePack == null)
-        //         return;
-
-        //     _sellItemlist.Clear();
-        //     _lifePotionDict.Clear();
-        //     _sameIndexEquipDict.Clear();
-        //     _sellItemScorelist.Clear();
-        //     playerLv = PlayerDatas.Instance.baseData.LV;
-        //     _packModelDict = singlePack.GetAllItems();
-        //     foreach (var key in _packModelDict.Keys)
-        //     {
-        //         GetCanSellEquipList(_packModelDict[key]);
-        //         ItemModel itemModel = _packModelDict[key];
-        //         if (drugIDs.Contains(itemModel.itemId))
-        //         {
-        //             if (!_lifePotionDict.ContainsKey(itemModel.config.LV))
-        //             {
-        //                 List<ItemModel> modellist = new List<ItemModel>();
-        //                 modellist.Add(itemModel);
-        //                 _lifePotionDict.Add(itemModel.config.LV, modellist);
-        //             }
-        //             else
-        //             {
-        //                 _lifePotionDict[itemModel.config.LV].Add(itemModel);
-        //             }
-        //         }
-        //     }
-
-        //     #region 寰楀埌鍙互鍑哄敭鐨勮澶�
-        //     foreach (var key in _sameIndexEquipDict.Keys)
-        //     {
-        //         _sellItemScorelist = _sameIndexEquipDict[key].Keys.ToList();
-        //         _sellItemScorelist.Sort();
-        //         if (_sellItemScorelist.Count > 0)
-        //         {
-        //             int score = 0;
-        //             for (score = _sellItemScorelist.Count - 1; score > -1; score--)
-        //             {
-        //                 SinglePack equipPack = packModel.GetSinglePack(PackType.Equip);
-        //                 ItemModel model = null;
-        //                 if (equipPack != null)
-        //                 {
-        //                     model = equipPack.GetItemByIndex(key);
-        //                 }
-
-        //                 var modellist = _sameIndexEquipDict[key][_sellItemScorelist[score]];
-        //                 bool remainBetter = true;
-        //                 for (var i = 0; i < modellist.Count; i++)
-        //                 {
-        //                     if (model != null)
-        //                     {
-        //                         if (remainBetter)
-        //                         {
-        //                             if (model.score < _sellItemScorelist[score] && IsJobCompatibleItem(model.itemId))
-        //                             {
-        //                                 _sameIndexEquipDict[key].Remove(_sellItemScorelist[score]);
-        //                                 remainBetter = false;
-        //                                 break;
-        //                             }
-        //                         }
-
-        //                     }
-        //                     else
-        //                     {
-        //                         if (IsJobCompatibleItem(model.itemId))
-        //                         {
-        //                             if (remainBetter)
-        //                             {
-        //                                 _sameIndexEquipDict[key].Remove(_sellItemScorelist[score]);
-        //                                 remainBetter = false;
-        //                                 break;
-        //                             }
-        //                         }
-        //                     }
-        //                 }
-
-        //                 if (!remainBetter)
-        //                 {
-        //                     break;
-        //                 }
-
-        //             }
-
-        //             for (var j = 0; j < _sellItemScorelist.Count; j++)
-        //             {
-
-        //                 if (_sameIndexEquipDict[key].ContainsKey(_sellItemScorelist[j]))
-        //                 {
-        //                     var sellModlelist = _sameIndexEquipDict[key][_sellItemScorelist[j]];
-        //                     for (var k = 0; k < sellModlelist.Count; k++)
-        //                     {
-        //                         _sellItemlist.Add(sellModlelist[k]);
-        //                     }
-        //                 }
-        //             }
-
-        //         }
-
-        //     }
-        //     #endregion
-
-        //     List<int> drugLvlist = new List<int>();
-        //     drugLvlist.AddRange(_lifePotionDict.Keys.ToList());
-        //     drugLvlist.Sort();
-        //     for (int i = drugLvlist.Count - 1; i > -1; i--)
-        //     {
-        //         if (drugLvlist[i] > playerLv)
-        //         {
-        //             _lifePotionDict.Remove(drugLvlist[i]);
-        //         }
-        //         else
-        //         {
-        //             _lifePotionDict.Remove(drugLvlist[i]);
-        //             break;
-        //         }
-        //     }
-
-        //     foreach (var list in _lifePotionDict.Values)
-        //     {
-        //         for (int i = 0; i < list.Count; i++)
-        //         {
-        //             _sellItemlist.Add(list[i]);
-        //         }
-
-        //     }
-        // }
-
-
-        //寰楀埌婊¤冻鍑哄敭鏉′欢鐨勮澶囧垪琛�
-        // public void GetCanSellEquipList(ItemModel model)
-        // {
-
-        //     if (model.config.EquipPlace == 0 || !onekeySellTypes.Contains(model.config.Type))
-        //         return;
-
-        //     Dictionary<int, List<ItemModel>> sameScoreDict;
-        //     List<ItemModel> sameScorelist;
-
-        //     if (model.config.ItemColor < 3)
-        //     {
-        //         if (!_sameIndexEquipDict.ContainsKey(model.config.EquipPlace))
-        //         {
-        //             sameScoreDict = new Dictionary<int, List<ItemModel>>();
-        //             sameScorelist = new List<ItemModel>();
-        //             sameScorelist.Add(model);
-        //             sameScoreDict.Add(model.score, sameScorelist);
-        //             _sameIndexEquipDict.Add(model.config.EquipPlace, sameScoreDict);
-
-        //         }
-        //         else
-        //         {
-        //             if (_sameIndexEquipDict[model.config.EquipPlace].ContainsKey(model.score))
-        //             {
-        //                 _sameIndexEquipDict[model.config.EquipPlace][model.score].Add(model);
-        //             }
-        //             else
-        //             {
-        //                 sameScorelist = new List<ItemModel>();
-        //                 sameScorelist.Add(model);
-        //                 _sameIndexEquipDict[model.config.EquipPlace].Add(model.score, sameScorelist);
-        //             }
-
-        //         }
-        //     }
-
-
-        // }
-
-        #endregion
-
-        #region 鍙戦�佽姹�
-        /// <summary>
-        /// 涓�閿嚭鍞墿鍝佺殑璇锋眰
-        /// </summary>
-        /// <param name="_oneKeySelllist"></param>
-        // public void OneKeySell(List<ItemModel> _oneKeySelllist)
-        // {
-        //     if (!isPackResetOk || SettingEffectMgr.Instance.isStartOneKeySell) return;
-
-        //     SettingEffectMgr.Instance.isStartOneKeySell = true;
-        //     byte[] itemIndexs = new byte[_oneKeySelllist.Count];
-        //     int i = 0;
-        //     for (i = 0; i < _oneKeySelllist.Count; i++)
-        //     {
-        //         itemIndexs[i] = (byte)_oneKeySelllist[i].gridIndex;
-        //     }
-        //     CA311_tagCMSellItem sellItem = new CA311_tagCMSellItem();
-        //     sellItem.PackType = (int)PackType.Item;
-        //     sellItem.Count = (byte)_oneKeySelllist.Count;
-        //     sellItem.ItemIndex = itemIndexs;
-        //     GameNetSystem.Instance.SendInfo(sellItem);
-        // }
-
-        /// <summary>
-        /// 鏁寸悊鍖呰9鐗╁搧
-        /// </summary>
-        /// <param name="type"></param>
-        public bool isPackResetOk { get; set; }
-        public void ResetPack(PackType type)
-        {
-            if (lookLineIndex > -1)
-            {
-                SetLookIndex(null);
-            }
-
-
-            SinglePack singlePack = packModel.GetSinglePack(type);
-            if (singlePack != null)
-            {
-                var packReset = new C070F_tagCItemPackReset();
-                packReset.Type = (byte)type;
-                packReset.ItemBeginIndex = 0;
-                packReset.ItemEndIndex = (ushort)(singlePack.unlockedGridCount - 1);
-                GameNetSystem.Instance.SendInfo(packReset); //鏁寸悊鐗╁搧
-                if (type == PackType.Item)
-                {
-                    isPackResetOk = false;
-                }
-            }
-        }
-        #endregion
-
-        #region 鏌ョ湅鏌愪釜浣嶇疆鐨勭墿鍝�
-        public event Action lookEquipEvent;
-        private int _lookLineIndex = -1;
-        public int lookLineIndex { get { return _lookLineIndex; } private set { _lookLineIndex = value; } }
-
-        public string lookItemGUID { get; private set; }
-
-        public void SetLookIndex(string guid, int singleRowCount = 5)
-        {
-
-            if (string.IsNullOrEmpty(guid) || guid == "")
-            {
-                lookLineIndex = -1;
-            }
-            else
-            {
-                int index = packModel.GetItemByGuid(guid).gridIndex;
-                lookLineIndex = index / singleRowCount;
-                lookItemGUID = guid;
-            }
-
-            if (lookEquipEvent != null)
-            {
-                lookEquipEvent();
-            }
-
-        }
-        #endregion
-
-        #region 鍒ゆ柇鏄惁鏈夋洿濂界殑瑁呭鏇挎崲
-
-        /// <summary>
-        /// 鑾峰彇瑁呭璇勫垎鏈�楂樺彲鎻愬崌鎴樺姏鐨勮澶�
-        /// </summary>
-        /// <param name="_places"></param>
-        /// <returns></returns>
-        // public string GetHighestScoreEquipByPlace(int equipPlace)
-        // {
-        //     var itemPackage = packModel.GetSinglePack(PackType.Item);
-        //     var allItems = itemPackage.GetAllItems();
-        //     var putModel = packModel.GetItemByIndex(PackType.Equip, equipPlace);
-        //     var guid = string.Empty;
-        //     var score = putModel == null ? 0 : putModel.score;
-        //     foreach (var item in allItems.Values)
-        //     {
-        //         if (item.config.EquipPlace == equipPlace)
-        //         {
-        //             if (!IsOverdue(item.guid)
-        //                && (IsJobCompatibleItem(item.itemId)) && item.score > score)
-        //             {
-        //                 guid = item.guid;
-        //                 score = item.score;
-        //             }
-        //         }
-        //     }
-
-        //     return guid;
-        // }
-        #endregion
-
-        #region 鑳屽寘鏁寸悊鍚庡ソ鐨勫悓绫诲瀷鏈�濂界殑瑁呭
-        Dictionary<int, Dictionary<int, ItemModel>> itemModelDict = new Dictionary<int, Dictionary<int, ItemModel>>();  // key1 瑁呭浣嶇疆绱㈠紩 key2 鑳屽寘浣嶇疆绱㈠紩
-
-        public void ClearSortedBetterEquip()
-        {
-            itemModelDict.Clear();
-        }
-
-        public void SetBagSortBetterEquipList(ItemModel itemModel)
-        {
-            if (itemModel == null || itemModel.packType != PackType.Item) return;
-
-            if (!IsCanPutOn(itemModel)) return;
-
-            int equipPlace = itemModel.config.EquipPlace;
-            if (!itemModelDict.ContainsKey(equipPlace))
-            {
-                var dict = new Dictionary<int, ItemModel>();
-                if (IsFightUp(itemModel.itemId, itemModel.score) == 1)
-                {
-                    dict.Add(itemModel.gridIndex, itemModel);
-                    itemModelDict.Add(equipPlace, dict);
-                }
-            }
-            else
-            {
-                if (IsFightUp(itemModel.itemId, itemModel.score) == 1)
-                {
-                    itemModelDict[equipPlace].Add(itemModel.gridIndex, itemModel);
-                }
-            }
-
-        }
-
-        public ItemModel GetBagSortBetterEquip(int equipPlace, int index)
-        {
-            ItemModel itemModel = null;
-            if (itemModelDict.ContainsKey(equipPlace))
-            {
-                itemModelDict[equipPlace].TryGetValue(index, out itemModel);
-            }
-            return itemModel;
-        }
-
-        bool IsCanPutOn(ItemModel item)
-        {
-            if (IsJobCompatibleItem(item.itemId))
-            {
-                return false;
-            }
-
-            int equipPlace = item.config.EquipPlace;
-            if (equipPlace == 0 || equipPlace > 17)
-            {
-                return false;
-            }
-
-            var putOnlimitList = item.GetUseData((int)ItemUseDataKey.cancelUseLimit);
-            if (!putOnlimitList.IsNullOrEmpty())
-            {
-                if (putOnlimitList[0] == 1)
-                {
-                    return true;
-                }
-            }
-
-            return PlayerDatas.Instance.baseData.realmLevel >= item.config.RealmLimit;
-        }
-
-        #endregion
-
-        #region 寰楀埌鐗╁搧鐨勫搧璐ㄩ鑹�
-        private Dictionary<int, int> wingRefineQualityDict;
-        private int[] wingsQualitys;
-        private int[] wingsRefineExps;
-        public int GetItemQuality(int itemId, Dictionary<int, List<int>> useDataDic = null)
-        {
-            wingsQualitys = null;
-            wingsRefineExps = null;
-            ItemConfig itemConfig = ItemConfig.Get(itemId);
-            // wingRefineQualityDict = WingRefineAttrConfig.GetWingsQualityModel(itemConfig.LV);
-            // if (useDataDic != null)
+            // var index = EquipModel.GetItemServerEquipPlace(_itemID);
+            // if (index == -1)
             // {
-            //     if (useDataDic.ContainsKey(42) && wingRefineQualityDict != null)
-            //     {
-            //         wingsQualitys = wingRefineQualityDict.Keys.ToArray();
-            //         wingsRefineExps = wingRefineQualityDict.Values.ToArray();
-            //         int i = 0;
-            //         for (i = wingsRefineExps.Length - 1; i > -1; i--)
-            //         {
-            //             if (useDataDic[42][0] >= wingsRefineExps[i])
-            //             {
-            //                 return wingsQualitys[i];
-            //             }
-            //         }
-            //     }
+            //     return 0;
             // }
-            return itemConfig.ItemColor;
-        }
-        #endregion
 
-        //璁剧疆鐜╁璐у竵鏄剧ず
-        public string OnChangeCoinsUnit(ulong value)
-        {
-            return UIHelper.ReplaceLargeNum(value);
+            // var item = packModel.GetItemByIndex(PackType.Equip, index);
+
+            // var equipScore = item != null ? item.score : 0;
+            // if (IsJobCompatibleItem(_itemID))
+            // {
+            //     if (_realm > PlayerDatas.Instance.baseData.realmLevel)
+            //         return -1;
+            //     return _score.CompareTo(equipScore);
+            // }
+            // else
+            // {
+            //     return 0;
+            // }
         }
 
-        /// <summary>
-        /// 瑁呭鏄惁鍙互鎻愬崌鎴樺姏
-        /// </summary>
-        /// <param name="_itemID"></param>
-        /// <param name="_score"></param>
-        /// <returns></returns>
-        public int IsFightUp(int _itemID, int _score)//-1浣庣骇锛�0涓嶆槸鏈亴涓氾紝1鏇村ソ
+        return 0;
+    }
+
+
+    #region 鐗╁搧鏄惁杩囨湡
+
+    public bool IsOverdue(string guid)
+    {
+        var item = packModel.GetItemByGuid(guid);
+        if (item == null)
         {
-            var config = ItemConfig.Get(_itemID);
-            if (config != null)
-            {
-                // var index = EquipModel.GetItemServerEquipPlace(_itemID);
-                // if (index == -1)
-                // {
-                //     return 0;
-                // }
-
-                // var item = packModel.GetItemByIndex(PackType.Equip, index);
-                // var equipScore = item != null ? item.score : 0;
-                // if (IsJobCompatibleItem(_itemID))
-                // {
-                //     return _score.CompareTo(equipScore);
-                // }
-                // else
-                // {
-                //     return 0;
-                // }
-            }
-
-            return 0;
+            return false;
         }
 
-        // 涓嶅寘鍚湭寮�鏀捐澶囩殑姣旇緝 灞炰簬-1
-        public int IsFightUpEx(int _itemID, int _score, int _realm)//-1浣庣骇锛�0涓嶆槸鏈亴涓氾紝1鏇村ソ
+        if (item.isAuction)
         {
-            var config = ItemConfig.Get(_itemID);
-            if (config != null)
-            {
-                // var index = EquipModel.GetItemServerEquipPlace(_itemID);
-                // if (index == -1)
-                // {
-                //     return 0;
-                // }
-
-                // var item = packModel.GetItemByIndex(PackType.Equip, index);
-
-                // var equipScore = item != null ? item.score : 0;
-                // if (IsJobCompatibleItem(_itemID))
-                // {
-                //     if (_realm > PlayerDatas.Instance.baseData.realmLevel)
-                //         return -1;
-                //     return _score.CompareTo(equipScore);
-                // }
-                // else
-                // {
-                //     return 0;
-                // }
-            }
-
-            return 0;
+            return false;//item.auctionSurplusTime < 0;
         }
-
-
-        #region 鐗╁搧鏄惁杩囨湡
-
-        public bool IsOverdue(string guid)
+        else
         {
-            var item = packModel.GetItemByGuid(guid);
-            if (item == null)
+            var isoverdue = false;
+            switch ((ItemTimeType)item.config.EndureReduceType)
             {
-                return false;
+                case ItemTimeType.EquipedTime:
+                    isoverdue = item.GetUseDataFirstValue(44) > 0 && item.overdueSurplusTime < 0;
+                    break;
+                case ItemTimeType.RealityTime:
+                    isoverdue = item.overdueSurplusTime < 0;
+                    break;
             }
 
-            if (item.isAuction)
-            {
-                return false;//item.auctionSurplusTime < 0;
-            }
-            else
-            {
-                var isoverdue = false;
-                switch ((ItemTimeType)item.config.EndureReduceType)
-                {
-                    case ItemTimeType.EquipedTime:
-                        isoverdue = item.GetUseDataFirstValue(44) > 0 && item.overdueSurplusTime < 0;
-                        break;
-                    case ItemTimeType.RealityTime:
-                        isoverdue = item.overdueSurplusTime < 0;
-                        break;
-                }
-
-                return isoverdue;
-            }
-        }
-
-        #endregion
-
-        public bool IsJobCompatibleItem(int itemId)
-        {
-            var config = ItemConfig.Get(itemId);
-            return config != null && (config.JobLimit == 0 || config.JobLimit == PlayerDatas.Instance.baseData.Job);
-        }
-
-        public bool IsRealmEquip(int itemId)
-        {
-            if (!ItemConfig.HasKey(itemId))
-            {
-                return false;
-            }
-
-            var config = ItemConfig.Get(itemId);
-            return config.Type >= 101 && config.Type <= 112;
-        }
-
-        public bool IsWing(int itemId)
-        {
-            if (!ItemConfig.HasKey(itemId))
-            {
-                return false;
-            }
-            var config = ItemConfig.Get(itemId);
-            return config.Type == 113 || config.Type == 39 || config.Type == 52;
-        }
-
-        public bool IsDogzEquip(int itemId)
-        {
-            if (!ItemConfig.HasKey(itemId))
-            {
-                return false;
-            }
-
-            var config = ItemConfig.Get(itemId);
-            return config.Type >= 119 && config.Type <= 123;
-        }
-
-        public bool IsSpiritWeapon(int itemId)
-        {
-            if (!ItemConfig.HasKey(itemId))
-            {
-                return false;
-            }
-
-            var config = ItemConfig.Get(itemId);
-            return config.Type >= 113 && config.Type <= 117;
-        }
-
-        public bool IsSuitEquip(int itemId)
-        {
-            if (!ItemConfig.HasKey(itemId))
-            {
-                return false;
-            }
-
-            var config = ItemConfig.Get(itemId);
-            return config.SuiteiD > 0 && config.Type >= 101 && config.Type <= 112;
-        }
-
-        // public bool IsThanksItem(int itemID)
-        // {
-        //     if (AssistThanksGiftConfig.Get(itemID) == null)
-        //     {
-        //         return false;
-        //     }
-        //     return true;
-        // }
-
-        // public int GetSpecialSpiritPropertyValue(int itemId)
-        // {
-        //     var config = SpiritWeaponConfig.Get(itemId);
-        //     if (config == null)
-        //     {
-        //         return 0;
-        //     }
-
-        //     var propertyId = 0;
-        //     var propertyValue = 0;
-        //     for (var i = 0; i < config.AttrIDList.Length; i++)
-        //     {
-        //         var id = config.AttrIDList[i];
-        //         if (id == 79 || id == 80)
-        //         {
-        //             propertyId = id;
-        //             propertyValue = config.AttrValueList[i];
-        //             break;
-        //         }
-        //     }
-
-        //     if (propertyId == 0)
-        //     {
-        //         return 0;
-        //     }
-
-        //     Equation.Instance.Clear();
-        //     Equation.Instance.AddKeyValue("maxOOPValue", propertyValue);
-
-        //     var maxLevel = 100;
-        //     if (specialSpiritPropertyMaxLevels.ContainsKey(config.Level))
-        //     {
-        //         maxLevel = specialSpiritPropertyMaxLevels[config.Level];
-        //     }
-
-        //     Equation.Instance.AddKeyValue("lv", Mathf.Min(maxLevel, PlayerDatas.Instance.baseData.LV));
-        //     return Equation.Instance.Eval<int>(specialSpiritPropertyFormula[propertyId]);
-        // }
-
-        // public int GetSpecialSpiritPropertyMaxLevel(int itemId)
-        // {
-        //     var config = SpiritWeaponConfig.Get(itemId);
-        //     if (config == null)
-        //     {
-        //         return 0;
-        //     }
-
-        //     var maxLevel = 0;
-        //     if (specialSpiritPropertyMaxLevels.ContainsKey(config.Level))
-        //     {
-        //         maxLevel = specialSpiritPropertyMaxLevels[config.Level];
-        //     }
-
-        //     return maxLevel;
-        // }
-
-        //瑁呭瀵规瘮锛岀敤浜庨潪瀹為檯瑁呭绠�鍗曟瘮杈� 鏄惁闇�瑕佹瑁呭
-        // public bool IsSatisfyEquipBetterEquip(int itemID)
-        // {
-        //     if (!IsRealmEquip(itemID))
-        //     {
-        //         return false;
-        //     }
-
-        //     var itemConfig = ItemConfig.Get(itemID);
-        //     if (itemConfig.JobLimit != 0 && itemConfig.JobLimit != PlayerDatas.Instance.baseData.Job)
-        //     {
-        //         return false;
-        //     }
-
-        //     var equipSet = equipModel.GetEquipSet(itemConfig.LV);
-        //     if (!equipSet.IsSlotUnLocked(itemConfig.EquipPlace))
-        //     {
-        //         return false;
-        //     }
-
-        //     var equipGuid = equipModel.GetEquip(new Int2(itemConfig.LV, itemConfig.EquipPlace));
-        //     if (string.IsNullOrEmpty(equipGuid))
-        //     {
-        //         return true;
-        //     }
-
-        //     var itemModel = packModel.GetItemByGuid(equipGuid);
-        //     if (itemModel == null)
-        //     {
-        //         return true;
-        //     }
-
-        //     if (itemConfig.ItemColor > itemModel.config.ItemColor)
-        //     {
-        //         return true;
-        //     }
-
-        //     return itemModel.config.SuiteiD == 0 && itemConfig.SuiteiD != 0;
-        // }
-
-
-
-        public Action OnGetItem;    //CommonGetItemWin鐣岄潰鍏抽棴鏃惰Е鍙�
-        public string getItemInfo { get; private set; }  //閫氱敤鏄剧ず鑾峰緱鐨勭晫闈俊鎭�
-        public string getItemBtnText { get; private set; }  //閫氱敤鏄剧ず鑾峰緱鐨勭晫闈㈡寜閽枃瀛� 榛樿纭畾
-        public int closeSeconds { get; private set; } // 鍏抽棴鍊掕鏃舵椂闂� 濡傛灉浼�0浠h〃鎵嬪姩鍏抽棴
-        public bool isNameShow { get; private set; } // 鏄惁灞曠ず鐗╁搧鍚嶅瓧
-
-        // 濡傛灉鍚屾椂鏈夊绉嶅鍔卞皝鍖咃紝鍚屼竴涓簨浠跺綊闆嗭紝涓嶅悓浜嬩欢鐩存帴椤舵帀鏄剧ず鏈�鏂�
-        public Dictionary<int, Item> totalShowItems = new Dictionary<int, Item>();
-        public event Action OnGetItemShowEvent;
-        private string getItemEventName;
-
-
-        // 閫氱敤鏄剧ず鑾峰緱鐨勭墿鍝�
-        public void ShowGetItem(List<Item> items, string info = "", int seconds = 3, string btnName = "", Action func = null, bool isNameShow = true, string eventName = "default")
-        {
-            if (getItemEventName != eventName)
-            {
-                if (UIManager.Instance.IsOpenedInList<CommonGetItemWin>())
-                {
-                    //----------------------璁板緱鏀圭珛鍗冲叧闂�
-                    UIManager.Instance.CloseWindow<CommonGetItemWin>();
-                }
-                totalShowItems.Clear();
-                getItemEventName = eventName;
-            }
-
-            //鐩稿悓ID 鍚堝苟鏁伴噺鏄剧ず
-            for (int i = 0; i < items.Count; i++)
-            {
-                var id = items[i].id;
-                if (totalShowItems.ContainsKey(id))
-                {
-                    totalShowItems[id] = new Item(id, items[i].countEx + totalShowItems[id].countEx, items[i].bind, items[i].quality);
-                }
-                else
-                {
-                    totalShowItems.Add(id, items[i]);
-                }
-            }
-
-
-            getItemInfo = info;
-            OnGetItem = func;
-            if (btnName == "")
-                btnName = Language.Get("PopConfirmWin_OK");
-            getItemBtnText = btnName;
-            closeSeconds = seconds;
-            this.isNameShow = isNameShow;
-            OnGetItemShowEvent?.Invoke();
-            if (!UIManager.Instance.IsOpenedInList<CommonGetItemWin>())
-            {
-                UIManager.Instance.OpenWindow<CommonGetItemWin>();
-            }
-        }
-
-        //鍙互鎸囧畾鎵撳紑鐨勭獥鍙�
-        public void ShowGetItemEx<T>(List<Item> items, string info = "", int seconds = 3, string btnName = "", Action func = null, bool isNameShow = true, string eventName = "default") where T : UIBase
-        {
-            if (getItemEventName != eventName)
-            {
-                if (UIManager.Instance.IsOpenedInList<T>())
-                {
-                    //----------------------璁板緱鏀圭珛鍗冲叧闂�
-                    UIManager.Instance.CloseWindow<T>();
-                }
-
-                totalShowItems.Clear();
-                getItemEventName = eventName;
-            }
-
-            //鐩稿悓ID 鍚堝苟鏁伴噺鏄剧ず
-            for (int i = 0; i < items.Count; i++)
-            {
-                var id = items[i].id;
-                if (totalShowItems.ContainsKey(id))
-                {
-                    totalShowItems[id] = new Item(id, items[i].countEx + totalShowItems[id].countEx, items[i].bind, items[i].quality);
-                }
-                else
-                {
-                    totalShowItems.Add(id, items[i]);
-                }
-            }
-
-
-            getItemInfo = info;
-            OnGetItem = func;
-            if (btnName == "")
-                btnName = Language.Get("PopConfirmWin_OK");
-            getItemBtnText = btnName;
-            closeSeconds = seconds;
-            this.isNameShow = isNameShow;
-            OnGetItemShowEvent?.Invoke();
-            if (!UIManager.Instance.IsOpenedInList<T>())
-            {
-                UIManager.Instance.OpenWindow<T>();
-            }
-        }
-        public void ClearGetItem()
-        {
-            //涓嶆竻鐞嗙墿鍝侊紝涓嬫鏀跺埌鏁版嵁浼氳嚜鍔ㄦ竻鐞嗭紝鍙敼浜嬩欢鏂逛究鎵撳紑鐣岄潰娴嬭瘯
-            getItemEventName = "";
+            return isoverdue;
         }
     }
+
+    #endregion
+
+    public bool IsJobCompatibleItem(int itemId)
+    {
+        var config = ItemConfig.Get(itemId);
+        return config != null && (config.JobLimit == 0 || config.JobLimit == PlayerDatas.Instance.baseData.Job);
+    }
+
+    public bool IsRealmEquip(int itemId)
+    {
+        if (!ItemConfig.HasKey(itemId))
+        {
+            return false;
+        }
+
+        var config = ItemConfig.Get(itemId);
+        return config.Type >= 101 && config.Type <= 112;
+    }
+
+    public bool IsWing(int itemId)
+    {
+        if (!ItemConfig.HasKey(itemId))
+        {
+            return false;
+        }
+        var config = ItemConfig.Get(itemId);
+        return config.Type == 113 || config.Type == 39 || config.Type == 52;
+    }
+
+    public bool IsDogzEquip(int itemId)
+    {
+        if (!ItemConfig.HasKey(itemId))
+        {
+            return false;
+        }
+
+        var config = ItemConfig.Get(itemId);
+        return config.Type >= 119 && config.Type <= 123;
+    }
+
+    public bool IsSpiritWeapon(int itemId)
+    {
+        if (!ItemConfig.HasKey(itemId))
+        {
+            return false;
+        }
+
+        var config = ItemConfig.Get(itemId);
+        return config.Type >= 113 && config.Type <= 117;
+    }
+
+    public bool IsSuitEquip(int itemId)
+    {
+        if (!ItemConfig.HasKey(itemId))
+        {
+            return false;
+        }
+
+        var config = ItemConfig.Get(itemId);
+        return config.SuiteiD > 0 && config.Type >= 101 && config.Type <= 112;
+    }
+
+    // public bool IsThanksItem(int itemID)
+    // {
+    //     if (AssistThanksGiftConfig.Get(itemID) == null)
+    //     {
+    //         return false;
+    //     }
+    //     return true;
+    // }
+
+    // public int GetSpecialSpiritPropertyValue(int itemId)
+    // {
+    //     var config = SpiritWeaponConfig.Get(itemId);
+    //     if (config == null)
+    //     {
+    //         return 0;
+    //     }
+
+    //     var propertyId = 0;
+    //     var propertyValue = 0;
+    //     for (var i = 0; i < config.AttrIDList.Length; i++)
+    //     {
+    //         var id = config.AttrIDList[i];
+    //         if (id == 79 || id == 80)
+    //         {
+    //             propertyId = id;
+    //             propertyValue = config.AttrValueList[i];
+    //             break;
+    //         }
+    //     }
+
+    //     if (propertyId == 0)
+    //     {
+    //         return 0;
+    //     }
+
+    //     Equation.Instance.Clear();
+    //     Equation.Instance.AddKeyValue("maxOOPValue", propertyValue);
+
+    //     var maxLevel = 100;
+    //     if (specialSpiritPropertyMaxLevels.ContainsKey(config.Level))
+    //     {
+    //         maxLevel = specialSpiritPropertyMaxLevels[config.Level];
+    //     }
+
+    //     Equation.Instance.AddKeyValue("lv", Mathf.Min(maxLevel, PlayerDatas.Instance.baseData.LV));
+    //     return Equation.Instance.Eval<int>(specialSpiritPropertyFormula[propertyId]);
+    // }
+
+    // public int GetSpecialSpiritPropertyMaxLevel(int itemId)
+    // {
+    //     var config = SpiritWeaponConfig.Get(itemId);
+    //     if (config == null)
+    //     {
+    //         return 0;
+    //     }
+
+    //     var maxLevel = 0;
+    //     if (specialSpiritPropertyMaxLevels.ContainsKey(config.Level))
+    //     {
+    //         maxLevel = specialSpiritPropertyMaxLevels[config.Level];
+    //     }
+
+    //     return maxLevel;
+    // }
+
+    //瑁呭瀵规瘮锛岀敤浜庨潪瀹為檯瑁呭绠�鍗曟瘮杈� 鏄惁闇�瑕佹瑁呭
+    // public bool IsSatisfyEquipBetterEquip(int itemID)
+    // {
+    //     if (!IsRealmEquip(itemID))
+    //     {
+    //         return false;
+    //     }
+
+    //     var itemConfig = ItemConfig.Get(itemID);
+    //     if (itemConfig.JobLimit != 0 && itemConfig.JobLimit != PlayerDatas.Instance.baseData.Job)
+    //     {
+    //         return false;
+    //     }
+
+    //     var equipSet = equipModel.GetEquipSet(itemConfig.LV);
+    //     if (!equipSet.IsSlotUnLocked(itemConfig.EquipPlace))
+    //     {
+    //         return false;
+    //     }
+
+    //     var equipGuid = equipModel.GetEquip(new Int2(itemConfig.LV, itemConfig.EquipPlace));
+    //     if (string.IsNullOrEmpty(equipGuid))
+    //     {
+    //         return true;
+    //     }
+
+    //     var itemModel = packModel.GetItemByGuid(equipGuid);
+    //     if (itemModel == null)
+    //     {
+    //         return true;
+    //     }
+
+    //     if (itemConfig.ItemColor > itemModel.config.ItemColor)
+    //     {
+    //         return true;
+    //     }
+
+    //     return itemModel.config.SuiteiD == 0 && itemConfig.SuiteiD != 0;
+    // }
+
+
+
+    public Action OnGetItem;    //CommonGetItemWin鐣岄潰鍏抽棴鏃惰Е鍙�
+    public string getItemInfo { get; private set; }  //閫氱敤鏄剧ず鑾峰緱鐨勭晫闈俊鎭�
+    public string getItemBtnText { get; private set; }  //閫氱敤鏄剧ず鑾峰緱鐨勭晫闈㈡寜閽枃瀛� 榛樿纭畾
+    public int closeSeconds { get; private set; } // 鍏抽棴鍊掕鏃舵椂闂� 濡傛灉浼�0浠h〃鎵嬪姩鍏抽棴
+    public bool isNameShow { get; private set; } // 鏄惁灞曠ず鐗╁搧鍚嶅瓧
+
+    // 濡傛灉鍚屾椂鏈夊绉嶅鍔卞皝鍖咃紝鍚屼竴涓簨浠跺綊闆嗭紝涓嶅悓浜嬩欢鐩存帴椤舵帀鏄剧ず鏈�鏂�
+    public Dictionary<int, Item> totalShowItems = new Dictionary<int, Item>();
+    public event Action OnGetItemShowEvent;
+    private string getItemEventName;
+
+
+    // 閫氱敤鏄剧ず鑾峰緱鐨勭墿鍝�
+    public void ShowGetItem(List<Item> items, string info = "", int seconds = 3, string btnName = "", Action func = null, bool isNameShow = true, string eventName = "default")
+    {
+        if (getItemEventName != eventName)
+        {
+            if (UIManager.Instance.IsOpenedInList<CommonGetItemWin>())
+            {
+                //----------------------璁板緱鏀圭珛鍗冲叧闂�
+                UIManager.Instance.CloseWindow<CommonGetItemWin>();
+            }
+            totalShowItems.Clear();
+            getItemEventName = eventName;
+        }
+
+        //鐩稿悓ID 鍚堝苟鏁伴噺鏄剧ず
+        for (int i = 0; i < items.Count; i++)
+        {
+            var id = items[i].id;
+            if (totalShowItems.ContainsKey(id))
+            {
+                totalShowItems[id] = new Item(id, items[i].countEx + totalShowItems[id].countEx, items[i].bind, items[i].quality);
+            }
+            else
+            {
+                totalShowItems.Add(id, items[i]);
+            }
+        }
+
+
+        getItemInfo = info;
+        OnGetItem = func;
+        if (btnName == "")
+            btnName = Language.Get("PopConfirmWin_OK");
+        getItemBtnText = btnName;
+        closeSeconds = seconds;
+        this.isNameShow = isNameShow;
+        OnGetItemShowEvent?.Invoke();
+        if (!UIManager.Instance.IsOpenedInList<CommonGetItemWin>())
+        {
+            UIManager.Instance.OpenWindow<CommonGetItemWin>();
+        }
+    }
+
+    //鍙互鎸囧畾鎵撳紑鐨勭獥鍙�
+    public void ShowGetItemEx<T>(List<Item> items, string info = "", int seconds = 3, string btnName = "", Action func = null, bool isNameShow = true, string eventName = "default") where T : UIBase
+    {
+        if (getItemEventName != eventName)
+        {
+            if (UIManager.Instance.IsOpenedInList<T>())
+            {
+                //----------------------璁板緱鏀圭珛鍗冲叧闂�
+                UIManager.Instance.CloseWindow<T>();
+            }
+
+            totalShowItems.Clear();
+            getItemEventName = eventName;
+        }
+
+        //鐩稿悓ID 鍚堝苟鏁伴噺鏄剧ず
+        for (int i = 0; i < items.Count; i++)
+        {
+            var id = items[i].id;
+            if (totalShowItems.ContainsKey(id))
+            {
+                totalShowItems[id] = new Item(id, items[i].countEx + totalShowItems[id].countEx, items[i].bind, items[i].quality);
+            }
+            else
+            {
+                totalShowItems.Add(id, items[i]);
+            }
+        }
+
+
+        getItemInfo = info;
+        OnGetItem = func;
+        if (btnName == "")
+            btnName = Language.Get("PopConfirmWin_OK");
+        getItemBtnText = btnName;
+        closeSeconds = seconds;
+        this.isNameShow = isNameShow;
+        OnGetItemShowEvent?.Invoke();
+        if (!UIManager.Instance.IsOpenedInList<T>())
+        {
+            UIManager.Instance.OpenWindow<T>();
+        }
+    }
+    public void ClearGetItem()
+    {
+        //涓嶆竻鐞嗙墿鍝侊紝涓嬫鏀跺埌鏁版嵁浼氳嚜鍔ㄦ竻鐞嗭紝鍙敼浜嬩欢鏂逛究鎵撳紑鐣岄潰娴嬭瘯
+        getItemEventName = "";
+    }
+
+    
+}
diff --git a/Main/System/KnapSack/Logic/PackGirdCell.cs b/Main/System/KnapSack/Logic/PackGirdCell.cs
index 16b5df8..d61fc3e 100644
--- a/Main/System/KnapSack/Logic/PackGirdCell.cs
+++ b/Main/System/KnapSack/Logic/PackGirdCell.cs
@@ -1,4 +1,5 @@
 锘縰sing UnityEngine;
+using UnityEngine.UI;
 
 /// <summary>
 /// 鑳屽寘鏍煎瓙
@@ -6,12 +7,18 @@
 public class PackGirdCell : MonoBehaviour
 {
     [SerializeField] ItemCell itemCell;
-    [SerializeField] RedpointBehaviour redPoint;    // 姝ゅ绾㈢偣鍙互鐢ㄥ浘鐗囪〃绀�
+    [SerializeField] Image redPoint;    // 鐢ㄥ浘鏍囦唬鏇跨畝鍖朓D绠$悊
     public void Display(int index)
     {
         var guid = PackManager.Instance.GetSinglePack(PackType.Item).itemGuidList[index];
         if (string.IsNullOrEmpty(guid))
             return;
         itemCell.Init(PackManager.Instance.GetItemByGuid(guid));
+        itemCell.button.AddListener(()=>
+        {
+            ItemTipUtility.Show(guid);
+        });
+
+        redPoint.SetActive(false);
     }
 }
diff --git a/Main/System/KnapSack/Logic/PackGirdCell.cs.meta b/Main/System/KnapSack/Logic/PackGirdCell.cs.meta
index d25b99a..d2b2673 100644
--- a/Main/System/KnapSack/Logic/PackGirdCell.cs.meta
+++ b/Main/System/KnapSack/Logic/PackGirdCell.cs.meta
@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 3c64a63d0c44fce40a3d1b90b18b2324
+guid: d7093aa7f47948a4c9e4a824b10f4845
 MonoImporter:
   externalObjects: {}
   serializedVersion: 2
diff --git a/Main/System/KnapSack/Logic/RolePackWin.cs b/Main/System/KnapSack/Logic/RolePackWin.cs
index cabf0db..3941699 100644
--- a/Main/System/KnapSack/Logic/RolePackWin.cs
+++ b/Main/System/KnapSack/Logic/RolePackWin.cs
@@ -8,7 +8,7 @@
 {
 
     [SerializeField] ScrollerController packScroller;
-    [SerializeField] ScrollerController composeScroller;
+    [SerializeField] ScrollerController composeScroller;    //寰呯瓥鍒掔‘瀹�
     [SerializeField] GroupButtonEx packBtn;
     [SerializeField] GroupButtonEx composeBtn;
 
@@ -87,7 +87,7 @@
     }
 
     void RefreshItemEvent(PackType type, int index, int itemID)
-    { 
+    {
         if (type != PackType.Item)
         {
             return;
@@ -98,7 +98,11 @@
 
     public override void Refresh()
     {
-
+        if (functionOrder == 1)
+        {
+            RefreshComposeItemData();
+            
+        }
         packScroller.SetActive(functionOrder == 0);
         composeScroller.SetActive(functionOrder != 0);
         CreatePackScroller();
@@ -170,6 +174,15 @@
         {
             return;
         }
+        composeScroller.Refresh();
+        for (int i = 0; i < PackManager.Instance.composeItemGuidList.Count; i++)
+        {
+            if (i % 5 == 0)
+            {
+                composeScroller.AddCell(ScrollerDataType.Header, i);
+            }
+        }
+        composeScroller.Restart();
     }
 
     void RefreshPackCell(ScrollerDataType type, CellView cell)
@@ -180,5 +193,12 @@
 
     void RefreshComposeCell(ScrollerDataType type, CellView cell)
     {
+        var _cell = cell as ComposeLineCell;
+        _cell.Display(cell.index);
+    }
+
+    void RefreshComposeItemData()
+    { 
+        PackManager.Instance.composeItemGuidList.Clear();
     }
 }
\ No newline at end of file
diff --git a/Main/System/KnapSack/Logic/SinglePack.cs b/Main/System/KnapSack/Logic/SinglePack.cs
index 36f22b3..ad8f229 100644
--- a/Main/System/KnapSack/Logic/SinglePack.cs
+++ b/Main/System/KnapSack/Logic/SinglePack.cs
@@ -247,18 +247,6 @@
                 continue;
             }
 
-            //var auctionValid = filterParams.isAuction == item.isAuction;
-            //if (!auctionValid)
-            //{
-            //    continue;
-            //}
-
-            var realmValid = filterParams.realmLimit == 0 || filterParams.realmLimit == item.config.RealmLimit;
-            if (!realmValid)
-            {
-                continue;
-            }
-
             list.Add(item);
         }
 
@@ -376,7 +364,6 @@
         public List<int> qualitys;
         public List<int> itemTypes;
         public List<int> equipTypes;
-        public int realmLimit;
         public bool isAuction;
         public List<int> jobs;
     }
diff --git a/Main/System/KnapSack/Logic/composeLineCell.cs b/Main/System/KnapSack/Logic/composeLineCell.cs
index 72122ec..6625d2d 100644
--- a/Main/System/KnapSack/Logic/composeLineCell.cs
+++ b/Main/System/KnapSack/Logic/composeLineCell.cs
@@ -3,12 +3,22 @@
 /// <summary>
 /// 鍚堟垚鏍煎瓙琛�
 /// </summary>
-public class composeLineCell : CellView
+public class ComposeLineCell : CellView
 {
-    [SerializeField] PackGirdCell[] itemCell;
+    [SerializeField] ComposeGirdCell[] itemCell;
     public void Display(int index)
     {
-        
-
+        for (int i = 0; i < itemCell.Length; i++)
+        {
+            if (index + i < PackManager.Instance.composeItemGuidList.Count)
+            {
+                itemCell[i].SetActive(true);
+                itemCell[i].Display(index + i);
+            }
+            else
+            {
+                itemCell[i].SetActive(false);
+            }
+        }
     }
 }
diff --git a/Main/System/KnapSack/New/CommonItemBaisc.cs b/Main/System/KnapSack/New/CommonItemBaisc.cs
index 6ba1861..57644ef 100644
--- a/Main/System/KnapSack/New/CommonItemBaisc.cs
+++ b/Main/System/KnapSack/New/CommonItemBaisc.cs
@@ -214,7 +214,7 @@
 
         itemIcon.SetActive(true);
         bgIcon.SetActive(true);
-        itemIcon.SetSprite(config.IconKey);
+        itemIcon.SetOrgSprite(config.IconKey);
         ItemConfig itemConfig = ItemConfig.Get(itemId);
         bgIcon.SetItemBackGround(ItemLogicUtility.Instance.GetItemQuality(itemId, useDataDic));
         if (packModel.textCountShow.ContainsKey(itemId))
@@ -265,6 +265,7 @@
         //         break;
         // }
 
+        //寰呯瓥鍒掔‘瀹�
         if (config.Type == (int)ItemType.Hero)
         {
             var heroConfig = HeroConfig.Get(itemId);
@@ -276,7 +277,7 @@
         {
             countryIcon.SetActive(false);
         }
-        // pieceIcon.SetActive(); //寰呯瓥鍒掔‘瀹�
+        // pieceIcon.SetActive(); 
     }
 
     // / <summary>
diff --git a/Main/System/KnapSack/PackManager.cs b/Main/System/KnapSack/PackManager.cs
index d4acb33..ae9f4fb 100644
--- a/Main/System/KnapSack/PackManager.cs
+++ b/Main/System/KnapSack/PackManager.cs
@@ -12,6 +12,7 @@
     public Dictionary<int, int> PackInitCountDict = new Dictionary<int, int>(); //鑳屽寘绫诲瀷锛氬垵濮嬫暟閲�
     public int initBagGridCount { get; private set; } //鍒濆鐗╁搧鑳屽寘鏍煎瓙鏁�
     public int[] itemPackSortTyps { get; private set; }    //鑳屽寘鐗╁搧鐨勬寜绫诲瀷鎺掑簭
+    public List<string> composeItemGuidList = new List<string>();  //鍚堟垚鍒楄〃鐗╁搧guid
 
     public static string StrengthAttrShift_RecordKey = "";
     public const string RecordKnapsackTitle = "RecordKnapsackTitle";
diff --git a/Main/System/Main/HomeWin.cs b/Main/System/Main/HomeWin.cs
index 7c154ce..8e49695 100644
--- a/Main/System/Main/HomeWin.cs
+++ b/Main/System/Main/HomeWin.cs
@@ -125,7 +125,7 @@
             taskNumText.text = string.Format("({0}/{1})", task.CurValue, taskConfig.NeedValue);
             taskNumText.color = task.CurValue >= taskConfig.NeedValue ? UIHelper.GetUIColor(TextColType.NavyYellow) :  UIHelper.GetUIColor(TextColType.Red);
             taskEffect.SetActive(TaskManager.Instance.GetMainTaskState() == 2);
-            awardIcon.SetSprite(ItemConfig.Get(taskConfig.AwardItemList[0][0]).IconKey);
+            awardIcon.SetOrgSprite(ItemConfig.Get(taskConfig.AwardItemList[0][0]).IconKey);
             awardCnt.text = taskConfig.AwardItemList[0][1].ToString();
         }
     }
diff --git a/Main/System/Team/TeamManager.cs b/Main/System/Team/TeamManager.cs
index 7c000a5..d2594c9 100644
--- a/Main/System/Team/TeamManager.cs
+++ b/Main/System/Team/TeamManager.cs
@@ -12,17 +12,13 @@
 	{
 		base.Init();
 		
-		HeroManager.Instance.onHeroChangeEvent += onHeroChangeEvent;
-        HeroManager.Instance.onHeroDeleteEvent += onHeroDeleteEvent;
         DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
     }
 
 	public override void Release()
 	{
 		base.Release();
-		HeroManager.Instance.onHeroChangeEvent += onHeroChangeEvent;
-        HeroManager.Instance.onHeroDeleteEvent += onHeroDeleteEvent;
-        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize;
+        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize;
     }
 
 	protected void OnBeforePlayerDataInitialize()
@@ -30,114 +26,36 @@
 		teamDict.Clear();
 	}
 
-	protected void onHeroChangeEvent(HeroInfo heroInfo)
+	public void OnHeroChangeEvent(HB124_tagSCLineupInfo vNetData)
 	{
-		//  鑻遍泟褰撳墠鎵�鏈夊湪鐨勯槦浼�
-		List<int> heroTeams = heroInfo.itemHero.GetUseData(81);
-
-		//  褰撳墠鑻遍泟鎵�鍦ㄧ殑闃熶紞淇℃伅 <闃熶紞绫诲瀷, <闃熷舰, 浣嶇疆>>
-		Dictionary<TeamType, KeyValuePair<int, int>> teamTypeShapeTypePositionDict = new Dictionary<TeamType, KeyValuePair<int, int>>();
-
-
-		//  澶勭悊褰撳墠璁板綍鍦ㄨ嫳闆勪俊鎭噷鐨勯槦浼嶄俊鎭�
-		if (null != heroTeams)
+		var heroPack = PackManager.Instance.GetSinglePack(PackType.Hero);
+		for (int i = 0; i < vNetData.LineupCnt; i++)
 		{
-			foreach (var teamMsg in heroTeams)
+			var team = GetTeam((TeamType)vNetData.LineupList[i].LineupID);
+			for (int j = 0; j < vNetData.LineupList[i].HeroCnt; j++)
 			{
-				// 鎵�鍦ㄩ樀瀹逛俊鎭垪琛� [闃靛绫诲瀷*10000+闃靛瀷绫诲瀷*100+浣嶇疆缂栧彿, ...] 
-				int teamType = teamMsg / 10000;
-				int shapeType = (teamMsg % 10000) / 100;
-				int positionIndex = teamMsg % 100 - 1;	//甯冮樀浣嶇疆锛氭湇鍔$涓� 1  瀹㈡埛绔负0
-
-				if (teamTypeShapeTypePositionDict.ContainsKey((TeamType)teamType))
+				int index = vNetData.LineupList[i].HeroItemIndexList[j];
+				HeroInfo hero;
+				if (index == 0)
 				{
-					//  闃熶紞绫诲瀷鐩稿悓锛屾洿鏂伴樀鍨嬪拰浣嶇疆
-					Debug.LogError("褰撳墠鑻遍泟鎷ユ湁涓や釜鐩稿悓鐨勯槦浼嶄俊鎭�: " + teamType + " " + shapeType + " " + positionIndex + ", hero guid is " + heroInfo.itemHero.guid);
+					hero = null;
 				}
 				else
 				{
-					//  闃熶紞绫诲瀷涓嶅悓锛屾坊鍔犳柊鐨�
-					KeyValuePair<int, int> shapeTypePosition = new KeyValuePair<int, int>(shapeType, positionIndex);
-					teamTypeShapeTypePositionDict.Add((TeamType)teamType, shapeTypePosition);
+					var item = heroPack.GetItemByIndex(vNetData.LineupList[i].HeroItemIndexList[j] - 1);
+					if (item == null)
+					{
+						hero = null;
+						Debug.LogError("娌℃湁瀵瑰簲鐨勬灏嗘暟鎹紒");
+					}
+					hero = HeroManager.Instance.GetHero(item.guid);
+
 				}
+				team.RefreshServerData(vNetData.LineupList[i].ShapeType, j, hero);
 			}
 		}
+	} 
 
-
-		//  閬嶅巻褰撳墠鎵�鏈夐槦浼� 鍒ゆ柇褰撳墠闃熶紞閲屾槸鍚︽湁璇ヨ嫳闆�
-		//  濡傛灉鏈夌殑璇� 鏍规嵁鑻遍泟閲岀殑淇℃伅褰撳墠鏄惁璇ヨ嫳闆勮繕鍦ㄩ槦浼嶉噷 鏄惁鍙戠敓鍙樺寲
-		//  	=>1.闃靛瀷鍙戠敓鍙樺寲 2.浣嶇疆鍙戠敓鍙樺寲
-		//  濡傛灉娌℃湁鐨勮瘽 灏辫鏄庤鑻遍泟琚Щ鍑洪槦浼嶄簡
-		foreach (var team in teamDict.Values)
-		{
-			//  妫�鏌ヤ竴涓嬪綋鍓嶉槦浼嶆槸鍚︽湁璇ヨ嫳闆�
-			//  濡傛灉鏈夌殑璇� 璇诲彇涓�涓嬪綋鍓嶆槸鍚﹁鑻遍泟杩樺湪闃熶紞閲� 浣嶇疆鏄惁鍙戠敓鍙樺寲
-			TeamHero teamHero = team.GetHero(heroInfo.itemHero.guid);
-			if (teamHero != null)
-			{
-				if ((teamTypeShapeTypePositionDict.ContainsKey(team.teamType)))
-				{
-					KeyValuePair<int, int> shapeTypePosition = teamTypeShapeTypePositionDict[team.teamType];
-					//  鏇存柊闃熶紞淇℃伅 
-					// 鍙互鍒ゆ柇teamHero鐨刾ositionNum鏄惁璺焥hapeTypePosition.Value涓�鑷� 鍒ゆ柇鏄惁鍙樹綅缃簡
-					// 鍙互鍒ゆ柇teamHero鐨凷erverShapeType鏄惁璺焥hapeTypePosition.Key涓�鑷� 鍒ゆ柇鏄惁鍙橀樀鍨嬩簡
-					team.RefreshServerData(shapeTypePosition.Key, shapeTypePosition.Value, heroInfo);
-				}
-				else
-				{
-					//  闃熶紞閲屾湁杩欎釜鑻遍泟锛屼絾鏄湪闃熶紞淇℃伅閲屾病鏈変簡 缃┖ 锛堣绉诲嚭闃熶紞锛�
-					team.RemoveHero(teamHero.positionNum);
-				}
-			}
-			//	鍘熸潵闃熶紞閲屾病杩欎釜鑻遍泟
-			else
-			{
-				//  濡傛灉褰撳墠闃熶紞绫诲瀷鍦ㄨ嫳闆勭殑鎵�鍦ㄩ樀瀹逛俊鎭垪琛ㄩ噷鏈夌殑璇�
-				//	灏辫鏄庨槦浼嶉噷鏂板浜嗚繖涓嫳闆� 锛堟柊澧炶繘闃熶紞锛�
-				if (teamTypeShapeTypePositionDict.ContainsKey(team.teamType))
-				{
-					KeyValuePair<int, int> shapeTypePosition = teamTypeShapeTypePositionDict[team.teamType];
-					team.RefreshServerData(shapeTypePosition.Key, shapeTypePosition.Value, heroInfo);
-				}
-			}
-		}
-
-
-		//  閬嶅巻鑻遍泟鎵�鍦ㄧ殑闃熶紞淇℃伅鍒楄〃 鏂板涓�涓嬪綋鍓嶅偍瀛樼殑闃熶紞閲屾病鏈夌殑闃熶紞
-		foreach (var teamTypeShapeTypePosition in teamTypeShapeTypePositionDict)
-		{
-			//  濡傛灉褰撳墠闃熶紞绫诲瀷鍦ㄩ槦浼嶅瓧鍏搁噷娌℃湁鐨勮瘽
-			if (!teamDict.ContainsKey(teamTypeShapeTypePosition.Key))
-			{
-				//  鏂板缓涓�涓槦浼�
-				TeamBase team = new TeamBase(teamTypeShapeTypePosition.Key);
-				team.RefreshServerData(teamTypeShapeTypePosition.Value.Key, teamTypeShapeTypePosition.Value.Value, heroInfo);
-				teamDict.Add(teamTypeShapeTypePosition.Key, team);
-			}
-		}
-
-    } 
-
-
-	protected void onHeroDeleteEvent(HeroInfo heroInfo)
-	{
-		List<int> heroTeams = heroInfo.itemHero.GetUseData(81);
-
-		foreach (int teamMsg in heroTeams)
-		{
-			// 鎵�鍦ㄩ樀瀹逛俊鎭垪琛� [闃靛绫诲瀷*10000+闃靛瀷绫诲瀷*100+浣嶇疆缂栧彿, ...] 
-			int teamType = teamMsg / 10000;
-			int shapeType = (teamMsg % 10000) / 100;
-			int positionIndex = teamMsg % 100 - 1; //甯冮樀浣嶇疆锛氭湇鍔$涓� 1  瀹㈡埛绔负0
-
-			TeamBase team = GetTeam((TeamType)teamType);
-
-			if (team != null)
-			{
-				team.RefreshServerData(shapeType, positionIndex, null);
-			}
-		}
-	}
 
 	public bool HasTeam(TeamType teamType)
 	{
diff --git a/Main/Utility/ComponentExtersion.cs b/Main/Utility/ComponentExtersion.cs
index 4418798..db697c9 100644
--- a/Main/Utility/ComponentExtersion.cs
+++ b/Main/Utility/ComponentExtersion.cs
@@ -270,7 +270,7 @@
         }
     }
 
-    
+    //閫氳繃ICON琛ㄥ姞杞�
     public static void SetSprite(this Image _image, string _id)
     {
         if (_image == null)
@@ -294,6 +294,17 @@
         _textImage.sprite = sprite;
     }
 
+    //閫氳繃鍥剧墖鍚嶅姞杞�
+    public static void SetOrgSprite(this Image _image, string iconName, string folderName = "icon")
+    {
+        if (_image == null)
+        {
+            return;
+        }
+
+        var sprite = UILoader.LoadSprite(folderName, iconName);
+        _image.overrideSprite = sprite;
+    }
 
     public static void SetActive(this Component compoent, bool active)
     {

--
Gitblit v1.8.0