From 21adb62fbffeb0c6f07ae6fe6ddc78763876c7df Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 09 一月 2026 03:47:10 +0800
Subject: [PATCH] 266 【内政】古宝系统

---
 Main/System/Gubao/GubaoBaseWin.cs                           |    2 
 Main/System/Gubao/GubaoDetailWin.cs                         |   72 +++-
 Main/System/Gubao/GubaoManager.cs                           |   74 +++++
 Main/System/Gubao/GubaoSuiteItemCell.cs.meta                |   11 
 Main/System/Gubao/GubaoSuiteListWin.cs.meta                 |   11 
 Main/System/Gubao/GubaoSuiteListCell.cs                     |   82 +++++
 Main/System/Gubao/GubaoTipWin.cs                            |  245 ++++++++++++++--
 Main/Config/PartialConfigs/GubaoResonanceConfig.cs.meta     |   11 
 Main/System/KnapSack/BackpackData.cs                        |    2 
 Main/System/ItemTip/BoxGetItemModel.cs                      |    8 
 Main/System/Gubao/GubaoCell.cs                              |   27 +
 Main/System/Gubao/GubaoSuiteListCell.cs.meta                |   11 
 Main/System/ItemTip/ChooseItemsCell.cs                      |   11 
 Main/Config/PartialConfigs/GubaoResonanceAttrConfig.cs      |   75 +++++
 Main/System/KnapSack/Logic/CommonGetItem.cs                 |    4 
 Main/Config/PartialConfigs/GubaoResonanceAttrConfig.cs.meta |   11 
 Main/Config/PartialConfigs/GubaoResonanceConfig.cs          |   22 +
 Main/System/Gubao/GubaoActiveWin.cs                         |   10 
 Main/System/Gubao/GubaoSuiteItemCell.cs                     |   82 +++++
 Main/Config/PartialConfigs/PlayerPropertyConfig.cs          |    3 
 Main/System/Gubao/GubaoSuiteListWin.cs                      |   55 +++
 21 files changed, 752 insertions(+), 77 deletions(-)

diff --git a/Main/Config/PartialConfigs/GubaoResonanceAttrConfig.cs b/Main/Config/PartialConfigs/GubaoResonanceAttrConfig.cs
new file mode 100644
index 0000000..7dfaf5c
--- /dev/null
+++ b/Main/Config/PartialConfigs/GubaoResonanceAttrConfig.cs
@@ -0,0 +1,75 @@
+using System.Collections.Generic;
+using System.Linq;
+
+public partial class GubaoResonanceAttrConfig : ConfigBase<int, GubaoResonanceAttrConfig>
+{
+    static Dictionary<int, Dictionary<int, GubaoResonanceAttrConfig>> suiteCfgDict = new Dictionary<int, Dictionary<int, GubaoResonanceAttrConfig>>();
+    
+    protected override void OnConfigParseCompleted()
+    {
+        if (!suiteCfgDict.ContainsKey(ResonanceID))
+        {
+            suiteCfgDict[ResonanceID] = new Dictionary<int, GubaoResonanceAttrConfig>();
+        }
+        suiteCfgDict[ResonanceID][ResonanceStar] = this;
+    }
+
+
+    public static GubaoResonanceAttrConfig GetConfig(int ResonanceID, int ResonanceStar)
+    {
+        if (suiteCfgDict.ContainsKey(ResonanceID))
+        {
+            if (suiteCfgDict[ResonanceID].ContainsKey(ResonanceStar))
+            {
+                return suiteCfgDict[ResonanceID][ResonanceStar];
+            }
+        }
+        return null;
+    }
+
+
+    // 鑾峰彇褰撳墠婵�娲荤殑鏄熺骇锛�-1 浠h〃娌℃湁婵�娲�
+    //_star 鏄瑁呴噷鐨勬渶灏忔槦绾�
+    public static int GetActiveStar(int ResonanceID, int _star)
+    {
+        int activeStar = -1;
+        if (suiteCfgDict.ContainsKey(ResonanceID))
+        {
+            // 鎵句笉鍒板綋鍓嶆槦绾э紝鎵炬渶鎺ヨ繎鐨勬槦绾�
+            var keys = suiteCfgDict[ResonanceID].Keys.ToList();
+            keys.Sort();
+            foreach (var star in keys)
+            {
+                if (_star >= star)
+                {
+                    activeStar = star;
+                }
+            }
+
+        }
+        return activeStar;
+    }
+
+    // 鑾峰彇涓磋繎鐨勬槦绾э紝鍏堝彇涓嬩竴涓縺娲荤殑鏄熺骇, 鏈�澶х殑灏卞彇鍓嶄竴鏄� 
+    public static int GetNearStar(int ResonanceID, int _Star)
+    {
+        var keys = suiteCfgDict[ResonanceID].Keys.ToList();
+        keys.Sort();
+        foreach (var star in keys)
+        {
+            if (_Star < star)
+            {
+                return star;
+            }
+        }
+        return keys[keys.Count - 2];
+    }
+
+    public static List<int> GetStarList(int ResonanceID)
+    {
+        var keys = suiteCfgDict[ResonanceID].Keys.ToList();
+        keys.Sort();
+        return keys;
+    }
+
+}
diff --git a/Main/Config/PartialConfigs/GubaoResonanceAttrConfig.cs.meta b/Main/Config/PartialConfigs/GubaoResonanceAttrConfig.cs.meta
new file mode 100644
index 0000000..9497f70
--- /dev/null
+++ b/Main/Config/PartialConfigs/GubaoResonanceAttrConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5c38487f61edd9b4b894c98d224f1108
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Config/PartialConfigs/GubaoResonanceConfig.cs b/Main/Config/PartialConfigs/GubaoResonanceConfig.cs
new file mode 100644
index 0000000..930e967
--- /dev/null
+++ b/Main/Config/PartialConfigs/GubaoResonanceConfig.cs
@@ -0,0 +1,22 @@
+using System.Collections.Generic;
+public partial class GubaoResonanceConfig : ConfigBase<int, GubaoResonanceConfig>
+{
+    static Dictionary<int, int> gbIDToSuiteIDDict = new Dictionary<int, int>();
+    
+    protected override void OnConfigParseCompleted()
+    {
+        for (int i = 0; i < GubaoIDList.Length; i++)
+        {
+            gbIDToSuiteIDDict[GubaoIDList[i]] = ResonanceID;
+        }
+    }
+
+    public static int GetSuiteIDByGubaoID(int gbID)
+    {
+        if (gbIDToSuiteIDDict.ContainsKey(gbID))
+        {
+            return gbIDToSuiteIDDict[gbID];
+        }
+        return 0;
+    }
+}
diff --git a/Main/Config/PartialConfigs/GubaoResonanceConfig.cs.meta b/Main/Config/PartialConfigs/GubaoResonanceConfig.cs.meta
new file mode 100644
index 0000000..3f51269
--- /dev/null
+++ b/Main/Config/PartialConfigs/GubaoResonanceConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: aa382e59e7d53d445a14104e4d7d2e3d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Config/PartialConfigs/PlayerPropertyConfig.cs b/Main/Config/PartialConfigs/PlayerPropertyConfig.cs
index c2bca13..ba9ba53 100644
--- a/Main/Config/PartialConfigs/PlayerPropertyConfig.cs
+++ b/Main/Config/PartialConfigs/PlayerPropertyConfig.cs
@@ -107,7 +107,8 @@
         }
     }
 
-    public static string GetBaseFullDescription(int id, long value, string format="{0}+{1}")
+    //鍩虹灞炴�ф弿杩�
+    public static string GetBaseFullDescription(int id, long value, string format = "{0}+{1}")
     {
         var config = Get(id);
         if (config == null)
diff --git a/Main/System/Gubao/GubaoActiveWin.cs b/Main/System/Gubao/GubaoActiveWin.cs
index da60dde..6e53097 100644
--- a/Main/System/Gubao/GubaoActiveWin.cs
+++ b/Main/System/Gubao/GubaoActiveWin.cs
@@ -3,8 +3,6 @@
 
 /// <summary>
 /// 鍙ゅ疂婵�娲绘垚鍔�
-/// 澶栭儴鏌ョ湅绫诲瀷 0瀹屾暣tip锛堝彲鍒囨弧绾э級 1 鍙湁鍩虹婊$骇涓嶅彲鍒囨崲 2 鍙湁濂楄
-/// 鍐呴儴鍙垏鎹㈠綋鍓�0 鍜� 瀹屾暣1
 /// </summary>
 public class GubaoActiveWin : UIBase
 {
@@ -71,12 +69,18 @@
         //鏈夌壒娈婂眰绾х殑锛氬鏋滀负0锛屽垯绗竴琛屽彧鏄剧ず鍗曡鐨勫睘鎬у拰鎻愬崌锛岀浜岃鏄剧ず鏁板��0锛涘鏋滀笉涓�0锛屽垯绗竴琛屾樉绀哄崟琛屽睘鎬у拰鎻愬崌锛岀浜岃鏄剧ず鏁板��
         //鏈夌壒鏉冩晥鏋滅殑浜﹀悓
         var specAttrDict = GubaoManager.Instance.GetSpecialAttrByGBID(gubaoID, true);
-        if (config.SpecEffType == 0)
+        if (config.SpecEffType == 0 && config.SpecAttrID == 0)
         {
+            attrSpecialText.SetActive(false);
+        }
+        else if (config.SpecEffType == 0)
+        {
+            attrSpecialText.SetActive(true);
             attrSpecialText.text = PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, specAttrDict[config.SpecAttrID]);
         }
         else
         {
+            attrSpecialText.SetActive(true);
             //鏈夌壒娈婃晥鏋滅殑
             var singleLayerAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID);
             attrSpecialText.text = Language.Get("Gubao22_" + config.SpecEffType) + PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, singleLayerAttrDict[config.SpecAttrID]);
diff --git a/Main/System/Gubao/GubaoBaseWin.cs b/Main/System/Gubao/GubaoBaseWin.cs
index 33d3670..eb93451 100644
--- a/Main/System/Gubao/GubaoBaseWin.cs
+++ b/Main/System/Gubao/GubaoBaseWin.cs
@@ -22,7 +22,7 @@
                 bg.SetActive(false);
                 break;
             case 2:
-                currentSubUI = UIManager.Instance.OpenWindow<GubaoListWin>();
+                currentSubUI = UIManager.Instance.OpenWindow<GubaoSuiteListWin>();
                 jbbg.SetActive(false);
                 bg.SetActive(true);
                 break;
diff --git a/Main/System/Gubao/GubaoCell.cs b/Main/System/Gubao/GubaoCell.cs
index eff34fd..276924d 100644
--- a/Main/System/Gubao/GubaoCell.cs
+++ b/Main/System/Gubao/GubaoCell.cs
@@ -24,12 +24,37 @@
     public void Display(int quality, int index)
     {
         var gubaoID = GubaoManager.Instance.gubaoCollectDict[quality][index];
+        DisplayByGBID(gubaoID);
+        redImg.SetActive(GubaoManager.Instance.IsRedTip(gubaoID));
+    }
+
+    public void Display(int gubaoID)
+    {
+        DisplayByGBID(gubaoID);
+
+        var gbData = GubaoManager.Instance.TryGetGubaoInfo(gubaoID);
+        int star = 0;
+        if (gbData != null)
+        {
+            star = gbData.GubaoStar;
+        }
+        redImg.SetActive(star < 5 && GubaoManager.Instance.CanStarUpGubao(gubaoID));
+    }
+
+    void DisplayByGBID(int gubaoID)
+    {
         gbBtn.AddListener(() =>
         {
             UIManager.Instance.OpenWindow<GubaoDetailWin>(gubaoID);
         });
 
         var config = GubaoConfig.Get(gubaoID);
+        if (config == null)
+        {
+            Debug.LogError($"鎵句笉鍒板彜瀹滻D: {gubaoID}");
+            return;
+        }
+        int quality = config.GubaoQuality;
         gbImg.SetOrgSprite(config.Icon, "gbicon");
         gbImg.SetNativeSize();
         gbBGImg.SetSprite($"GubaoBG{quality}");
@@ -90,6 +115,4 @@
         lvText.text = lv == 0 ? "" : Language.Get("L1113", lv);
         redImg.SetActive(GubaoManager.Instance.IsRedTip(gubaoID));
     }
-
-
 }
diff --git a/Main/System/Gubao/GubaoDetailWin.cs b/Main/System/Gubao/GubaoDetailWin.cs
index 92634f1..3cb9b18 100644
--- a/Main/System/Gubao/GubaoDetailWin.cs
+++ b/Main/System/Gubao/GubaoDetailWin.cs
@@ -78,12 +78,12 @@
     {
         seeSuiteBtn.AddListener(() =>
         {
-            GubaoManager.Instance.ShowTip(gubaoID, 3);
+            GubaoManager.Instance.ShowTip(gubaoID, 2);
         });
 
         seeFullBtn.AddListener(() =>
         {
-            GubaoManager.Instance.ShowTip(gubaoID, 2);
+            GubaoManager.Instance.ShowTip(gubaoID, 1);
         });
         lvupTabBtn.AddListener(() =>
         {
@@ -123,6 +123,15 @@
     public void Display()
     {
         var config = GubaoConfig.Get(gubaoID);
+        Debug.Log($"鍙ゅ疂ID: {gubaoID}");
+        if (config == null)
+        {
+            Debug.LogError($"鎵句笉鍒板彜瀹滻D: {gubaoID}");
+            return;
+        }
+
+        seeSuiteBtn.SetActive(GubaoResonanceConfig.GetSuiteIDByGubaoID(gubaoID) != 0);
+
         var quality = config.GubaoQuality;
 
         gbImg.SetOrgSprite(config.Icon, "gbicon");
@@ -381,45 +390,54 @@
         var specAttrDict = GubaoManager.Instance.GetSpecialAttrByGBID(gubaoID, true);
         if (config.SpecEffType == 0)
         {
-            attrSpecialTexts[0].text = PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, specAttrDict[config.SpecAttrID]);
-            if (tabIndex == 0)
+            if (config.SpecAttrID != 0)
             {
-                //鍚堟垚鏃朵笉鏄剧ず
-                addAttrSpecialRects[0].SetActive(false);
-            }
-            else if (tabIndex == 1)
-            {
-                //婊$骇涓嶆樉绀�
-                if (GubaoManager.Instance.IsMaxLV(gubaoID))
+                attrSpecialRects[0].SetActive(true);
+                attrSpecialTexts[0].text = PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, specAttrDict[config.SpecAttrID]);
+                if (tabIndex == 0)
                 {
+                    //鍚堟垚鏃朵笉鏄剧ず
                     addAttrSpecialRects[0].SetActive(false);
                 }
-                else
+                else if (tabIndex == 1)
                 {
-                    var nextAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID, lv + 1);
-                    addAttrSpecialRects[0].SetActive(true);
-                    addAttrSpecialTexts[0].text = PlayerPropertyConfig.GetValueDescriptionFormat(config.SpecAttrID, nextAttrDict[config.SpecAttrID]);
+                    //婊$骇涓嶆樉绀�
+                    if (GubaoManager.Instance.IsMaxLV(gubaoID))
+                    {
+                        addAttrSpecialRects[0].SetActive(false);
+                    }
+                    else
+                    {
+                        var nextAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID, lv + 1);
+                        addAttrSpecialRects[0].SetActive(true);
+                        addAttrSpecialTexts[0].text = PlayerPropertyConfig.GetValueDescriptionFormat(config.SpecAttrID, nextAttrDict[config.SpecAttrID]);
+                    }
+                }
+                else if (tabIndex == 2)
+                {
+                    //婊℃槦涓嶆樉绀�
+                    if (GubaoManager.Instance.IsMaxStar(gubaoID))
+                    {
+                        addAttrSpecialRects[0].SetActive(false);
+                    }
+                    else
+                    {
+                        var nextAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID, 0, star + 1);
+                        addAttrSpecialRects[0].SetActive(true);
+                        addAttrSpecialTexts[0].text = PlayerPropertyConfig.GetValueDescriptionFormat(config.SpecAttrID, nextAttrDict[config.SpecAttrID]);
+                    }
                 }
             }
-            else if (tabIndex == 2)
+            else
             {
-                //婊℃槦涓嶆樉绀�
-                if (GubaoManager.Instance.IsMaxStar(gubaoID))
-                {
-                    addAttrSpecialRects[0].SetActive(false);
-                }
-                else
-                {
-                    var nextAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID, 0, star + 1);
-                    addAttrSpecialRects[0].SetActive(true);
-                    addAttrSpecialTexts[0].text = PlayerPropertyConfig.GetValueDescriptionFormat(config.SpecAttrID, nextAttrDict[config.SpecAttrID]);
-                }
+                attrSpecialRects[0].SetActive(false);
             }
         }
         else
         {
             //鏈夌壒娈婃晥鏋滅殑
             var singleLayerAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID);
+            attrSpecialRects[0].SetActive(true);
             attrSpecialTexts[0].text = Language.Get("Gubao22_" + config.SpecEffType) + PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, singleLayerAttrDict[config.SpecAttrID]);
             attrSpecialTexts[1].text = Language.Get("Gubao21", layer, config.SpecEffLayerMax, PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, layer == 0 ? 0 : specAttrDict[config.SpecAttrID]));
             if (tabIndex == 0)
diff --git a/Main/System/Gubao/GubaoManager.cs b/Main/System/Gubao/GubaoManager.cs
index 3fd4ba1..03cfc0b 100644
--- a/Main/System/Gubao/GubaoManager.cs
+++ b/Main/System/Gubao/GubaoManager.cs
@@ -416,6 +416,20 @@
         return attrDict;
     }
 
+    public Dictionary<int, long> GetBaseMaxAttrByGBID(int gubaoID)
+    {
+        Dictionary<int, long> attrDict = new Dictionary<int, long>();
+        var config = GubaoConfig.Get(gubaoID);
+        var maxStar = GubaoStarConfig.GetMaxStar(config.GubaoQuality);
+        for (int i = 0; i < config.BaseAttrIDList.Length; i++)
+        {
+            attrDict[config.BaseAttrIDList[i]] = config.BaseAttrValueList[i] + config.BaseAttrPerStarAddList[i] * maxStar;
+        }
+        return attrDict;
+    }
+
+
+
     public Dictionary<int, long> GetSpecialAttrByGBID(int gubaoID, bool isPreview = false)
     {
         Dictionary<int, long> attrDict = new Dictionary<int, long>();
@@ -443,6 +457,25 @@
         return attrDict;
     }
 
+    public Dictionary<int, long> GetSpecialMaxAttrByGBID(int gubaoID)
+    {
+        Dictionary<int, long> attrDict = new Dictionary<int, long>();
+        var config = GubaoConfig.Get(gubaoID);
+        int quality = config.GubaoQuality;
+        var maxStar = GubaoStarConfig.GetMaxStar(config.GubaoQuality);
+        var maxLV = GubaoLVAttrConfig.GetMaxLV(quality);
+
+
+        attrDict[config.SpecAttrID] = config.SpecAttrValue + config.SpecAttrPerStarAdd * maxStar
+            + GubaoLVAttrConfig.GetSpecLVAttrValue(quality, maxLV, config.SpecAttrID);
+
+        if (config.SpecEffType != 0)
+        {
+            attrDict[config.SpecAttrID] *= config.SpecEffLayerMax;
+        }
+
+        return attrDict;
+    }
 
 
     //鍗曞眰鐨勫睘鎬э紝鎴栬�呬笉闇�瑕佸眰鐨�
@@ -492,6 +525,15 @@
         return attrDict;
     }
 
+    public Dictionary<int, int> GetPrivilegeMaxValueByGBID(int gubaoID)
+    {
+        Dictionary<int, int> attrDict = new Dictionary<int, int>();
+        var config = GubaoConfig.Get(gubaoID);
+        var maxStar = GubaoStarConfig.GetMaxStar(config.GubaoQuality);
+        attrDict[config.PowerType] = config.PowerValue + config.PowerPerStarAdd * maxStar;
+        return attrDict;
+    }
+
     public bool IsMaxLV(int gubaoID)
     {
         var config = GubaoConfig.Get(gubaoID);
@@ -515,6 +557,38 @@
         return gubaoInfo.GubaoStar >= GubaoStarConfig.GetMaxStar(config.GubaoQuality);
     }
 
+    //濂楄鏄熺骇 -1娌℃縺娲�
+    public int GetSuiteStar(int suiteID)
+    {
+        var suiteCfg = GubaoResonanceConfig.Get(suiteID);
+        int minStar = 999999;   //鍙栨渶灏忔槦绾�
+        foreach (var gubaoID in suiteCfg.GubaoIDList)
+        {
+            var gubaoInfo = TryGetGubaoInfo(gubaoID);
+            if (gubaoInfo == null)
+            {
+                return -1;
+            }
+            minStar = Math.Min(minStar, gubaoInfo.GubaoStar);
+        }
+        return GubaoResonanceAttrConfig.GetActiveStar(suiteID, minStar);
+    }
+
+    public int GetSuiteActiveGBCnt(int suiteID)
+    {
+        var suiteCfg = GubaoResonanceConfig.Get(suiteID);
+        int cnt = 0;
+        foreach (var gubaoID in suiteCfg.GubaoIDList)
+        {
+            var gubaoInfo = TryGetGubaoInfo(gubaoID);
+            if (gubaoInfo != null)
+            {
+                cnt++;
+            }
+        }
+        return cnt;
+    }
+
     #endregion
 
     #region 閴村疂
diff --git a/Main/System/Gubao/GubaoSuiteItemCell.cs b/Main/System/Gubao/GubaoSuiteItemCell.cs
new file mode 100644
index 0000000..122e389
--- /dev/null
+++ b/Main/System/Gubao/GubaoSuiteItemCell.cs
@@ -0,0 +1,82 @@
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+public class GubaoSuiteItemCell : MonoBehaviour
+{
+    [SerializeField] ItemCell mainItemCell;
+    [SerializeField] Image[] starImgs;
+    [SerializeField] Transform processRect;
+    [SerializeField] Image processImg;
+    [SerializeField] Text processText;
+    [SerializeField] Image fullProcessImg;
+
+
+
+    public void DisplayByGBID(int gubaoID)
+    {
+        var config = GubaoConfig.Get(gubaoID);
+        if (config == null)
+        {
+            Debug.LogError($"鎵句笉鍒板彜瀹滻D: {gubaoID}");
+            return;
+        }
+        var gbData = GubaoManager.Instance.TryGetGubaoInfo(gubaoID);
+        int lv = 0;
+        int star = 0;
+        if (gbData != null)
+        {
+            lv = gbData.GubaoLV;
+            star = gbData.GubaoStar;
+        }
+        mainItemCell.Init(new ItemCellModel(config.UnlockItemID, false, 1));
+        mainItemCell.pieceIcon.SetActive(false);
+        mainItemCell.countText.text = lv == 0 ? "" : Language.Get("L1113", lv);
+        mainItemCell.button.AddListener(()=>
+        {
+            GubaoManager.Instance.ShowTip(gubaoID, 1);
+        });
+
+        for (int i = 0; i < starImgs.Length; i++)
+        {
+            if (i < star)
+            {
+                starImgs[i].SetActive(true);
+                //寰幆涓嶅悓鍥�
+                int starIndex = star / starImgs.Length * starImgs.Length + i + 1;
+                if (starIndex > star)
+                {
+                    starIndex -= starImgs.Length;
+                }
+                starImgs[i].SetSprite($"GubaoStar{starIndex}");
+            }
+            else
+            {
+                starImgs[i].SetActive(false);
+            }
+        }
+
+        if (GubaoManager.Instance.IsMaxStar(gubaoID))
+        {
+            processRect.SetActive(false);
+        }
+        else
+        {
+            var starConfig = GubaoStarConfig.GetConfig(config.GubaoQuality, star + 1);
+            if (starConfig.StarUPNeedSelfCnt > 0)
+            {
+                processRect.SetActive(true);
+                var cnt = VirtualPackManager.Instance.GetNoPackItemCount(config.UnlockItemID);
+                float value = cnt * 1.0f / starConfig.StarUPNeedSelfCnt;
+                processImg.fillAmount = value;
+                fullProcessImg.SetActive(value >= 1);
+                processText.text = $"{cnt}/{starConfig.StarUPNeedSelfCnt}";
+            }
+            else
+            {
+                processRect.SetActive(false);
+            }
+        }
+
+    }
+}
diff --git a/Main/System/Gubao/GubaoSuiteItemCell.cs.meta b/Main/System/Gubao/GubaoSuiteItemCell.cs.meta
new file mode 100644
index 0000000..1bdcfa0
--- /dev/null
+++ b/Main/System/Gubao/GubaoSuiteItemCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9e8abe6412cf2a747b9a3ed7b94c2db8
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/Gubao/GubaoSuiteListCell.cs b/Main/System/Gubao/GubaoSuiteListCell.cs
new file mode 100644
index 0000000..024d06b6
--- /dev/null
+++ b/Main/System/Gubao/GubaoSuiteListCell.cs
@@ -0,0 +1,82 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+using UnityEngine.UI;
+
+
+public class GubaoSuiteListCell : CellView
+{
+    [SerializeField] GubaoCell[] gubaoCells;
+
+    [SerializeField] Text suiteNameText;
+    [SerializeField] Text[] suiteAttrTexts;
+    [SerializeField] Image[] activeImgs;
+    [SerializeField] Image[] lockImgs;
+    [SerializeField] Button seeSuiteBtn;
+    public void Display(int id)
+    {
+        var suiteCfg = GubaoResonanceConfig.Get(id);
+        suiteNameText.text = suiteCfg.ResonanceName;
+        seeSuiteBtn.AddListener(() =>
+        {
+            GubaoManager.Instance.ShowTip(suiteCfg.GubaoIDList[0], 2);
+        });
+
+        var config = GubaoResonanceConfig.Get(id);
+        for (int i = 0; i < gubaoCells.Length; i++)
+        {
+            if (i < config.GubaoIDList.Length)
+            {
+                gubaoCells[i].SetActive(true);
+                gubaoCells[i].Display(config.GubaoIDList[i]);
+            }
+            else
+            {
+                gubaoCells[i].SetActive(false);
+            }
+        }
+
+        var curSuiteStar = GubaoManager.Instance.GetSuiteStar(id);
+        var tmpStar = curSuiteStar == -1 ? 0 : curSuiteStar;
+        var nearSuiteStar = GubaoResonanceAttrConfig.GetNearStar(id, tmpStar);
+        var starList = new List<int>() { tmpStar, nearSuiteStar };
+        starList.Sort();
+
+        for (int i = 0; i < suiteAttrTexts.Length; i++)
+        {
+            string preStr;
+            var star = starList[i];
+            var attrCfg = GubaoResonanceAttrConfig.GetConfig(id, star);
+            if (star == 0)
+            {
+                preStr = Language.Get("Gubao27");
+            }
+            else
+            {
+                preStr = Language.Get("Gubao28", star);
+            }
+
+
+            if (star <= curSuiteStar)
+            {
+                //婵�娲�
+                string format = "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}", false);
+                suiteAttrTexts[i].text = Language.Get("L1100", preStr, PlayerPropertyConfig.GetFullDescription(attrCfg.ResonanceAttrIDList[0], attrCfg.ResonanceAttrValueList[0], format));
+                activeImgs[i].SetActive(true);
+                lockImgs[i].SetActive(false);
+            }
+            else
+            {
+                //閿佸畾
+                suiteAttrTexts[i].text = UIHelper.AppendColor(TextColType.NavyGray, Language.Get("L1100", preStr, PlayerPropertyConfig.GetFullDescription(attrCfg.ResonanceAttrIDList[0], attrCfg.ResonanceAttrValueList[0])));
+                activeImgs[i].SetActive(false);
+                lockImgs[i].SetActive(true);
+            }
+        }
+    }
+
+
+}
+
+
diff --git a/Main/System/Gubao/GubaoSuiteListCell.cs.meta b/Main/System/Gubao/GubaoSuiteListCell.cs.meta
new file mode 100644
index 0000000..8da195d
--- /dev/null
+++ b/Main/System/Gubao/GubaoSuiteListCell.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 71612a00de9ad6b4285b2f7ce1a0d3e0
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/Gubao/GubaoSuiteListWin.cs b/Main/System/Gubao/GubaoSuiteListWin.cs
new file mode 100644
index 0000000..6ddc541
--- /dev/null
+++ b/Main/System/Gubao/GubaoSuiteListWin.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Linq;
+using System.Text;
+using UnityEngine;
+using UnityEngine.UI;
+
+/// <summary>
+/// 鍙ゅ疂濂楄鍒楄〃
+/// </summary>
+public class GubaoSuiteListWin : UIBase
+{
+    [SerializeField] ScrollerController scroller;
+
+
+    protected override void OnPreOpen()
+    {
+        scroller.OnRefreshCell += OnRefreshCell;
+        UIManager.Instance.OnCloseWindow += OnCloseWindow;
+        Display();
+    }
+
+    protected override void OnPreClose()
+    {
+        scroller.OnRefreshCell -= OnRefreshCell;
+        UIManager.Instance.OnCloseWindow -= OnCloseWindow;
+    }
+
+    void OnCloseWindow(UIBase ui)
+    {
+        if (ui is GubaoDetailWin)
+        {
+            scroller.m_Scorller.RefreshActiveCellViews();
+        }
+    }
+
+
+    void Display()
+    {
+        scroller.Refresh();
+        var keys = GubaoResonanceConfig.GetKeys();
+        for (int i = 0; i < keys.Count; i++)
+        {
+            scroller.AddCell(ScrollerDataType.Header, keys[i]);
+            
+        }
+
+        scroller.Restart();
+    }
+
+    void OnRefreshCell(ScrollerDataType type, CellView cell)
+    {
+        var _cell = cell as GubaoSuiteListCell;
+        _cell.Display(cell.index);
+    }
+}
\ No newline at end of file
diff --git a/Main/System/Gubao/GubaoSuiteListWin.cs.meta b/Main/System/Gubao/GubaoSuiteListWin.cs.meta
new file mode 100644
index 0000000..a8a3eb1
--- /dev/null
+++ b/Main/System/Gubao/GubaoSuiteListWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4cea86c782acca946a4c90aa92236f81
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/System/Gubao/GubaoTipWin.cs b/Main/System/Gubao/GubaoTipWin.cs
index 421ca92..d1885fc 100644
--- a/Main/System/Gubao/GubaoTipWin.cs
+++ b/Main/System/Gubao/GubaoTipWin.cs
@@ -4,60 +4,177 @@
 using UnityEngine.UI;
 
 /// <summary>
-/// 鍙ゅ疂TIP
+/// 鍙ゅ疂TIP  
+/// 澶栭儴鏌ョ湅绫诲瀷 0瀹屾暣tip锛堝彲鍒囨弧绾э級 1 鍙湁鍩虹婊$骇涓嶅彲鍒囨崲 2 鍙湁濂楄
+/// 鍐呴儴鍙垏鎹㈠綋鍓�0 鍜� 瀹屾暣1
 /// </summary>
 public class GubaoTipWin : UIBase
 {
-    [SerializeField] ImageEx gbImg;
-    [SerializeField] UIEffectPlayer gbBGEffect;
-    [SerializeField] UIEffectPlayer gbEffect;
+    [SerializeField] ItemCell mainItemCell;
     [SerializeField] Text nameText;
+    [SerializeField] Image[] starImgs;
+    [SerializeField] Transform processRect;
+    [SerializeField] Image processImg;
+    [SerializeField] Text processText;
+    [SerializeField] Image fullProcessImg;
+
+
     //鍩虹灞炴��
     [SerializeField] Text[] attrBaseTexts;
-    [SerializeField] Text attrSpecialText;
-    [SerializeField] Transform attrPrivilegeRect;
-    [SerializeField] Text attrPrivilegeText;
+    [SerializeField] Text specialText;  //鐗规畩灞炴�у拰鐗规潈鏁堟灉
 
-    [SerializeField] Button okBtn;
+    [SerializeField] Button changeBtn;
+    [SerializeField] Text changeText;
+    [SerializeField] Transform fullRect;
+
+    [SerializeField] GubaoSuiteItemCell[] suiteItemCells;
+    [SerializeField] Text suiteNameText;
+    [SerializeField] Text[] suiteAttrTexts;
+
+    [SerializeField] Transform basePanel;
+    [SerializeField] Transform linePanel;
+    [SerializeField] Transform suitePanel;
 
     int gubaoID = 0;
-
+    bool isFull = false;    //  鏄惁鏄剧ず婊$骇
+    int lv = 0;
+    int star = 0;
+    int quality = 0;
+    GubaoConfig config;
     protected override void InitComponent()
     {
-        okBtn.AddListener(CloseWindow);
+        changeBtn.AddListener(()=>
+        {
+            isFull = !isFull;
+            ShowAttr();
+        });
     }
 
     protected override void OnPreOpen()
     {
         gubaoID = functionOrder;
+        if (GubaoManager.Instance.tipType == 0)
+        {
+            isFull = false;
+        }
+        else if (GubaoManager.Instance.tipType == 1)
+        {
+            isFull = true;
+        }
         Display();
     }
 
 
     public void Display()
     {
-        var config = GubaoConfig.Get(gubaoID);
-        gbImg.SetOrgSprite(config.Icon, "gbicon");
-        gbImg.SetNativeSize();
-
+        config = GubaoConfig.Get(gubaoID);
         var gbData = GubaoManager.Instance.TryGetGubaoInfo(gubaoID);
-        gbBGEffect.PlayByArrIndex(gbData.Quality - 2);
-        gbEffect.PlayByArrIndex(gbData.Quality - 2);
-        nameText.text = config.Name;
-        nameText.color = UIHelper.GetFuncQualityColor(gbData.Quality);
-        ShowAttr(config);
+        lv = 0;
+        star = 0;
+        quality = config.GubaoQuality;
+        if (gbData != null)
+        {
+            lv = gbData.GubaoLV;
+            star = gbData.GubaoStar;
+        }
+
+        /// 澶栭儴鏌ョ湅绫诲瀷 0瀹屾暣tip锛堝彲鍒囨弧绾э級 1 鍙湁鍩虹婊$骇涓嶅彲鍒囨崲 2 鍙湁濂楄
+        if (GubaoManager.Instance.tipType == 0)
+        {
+            basePanel.SetActive(true);
+            fullRect.SetActive(false);
+            changeBtn.SetActive(true);
+            linePanel.SetActive(true);
+            ShowBase();
+            ShowSuite();
+        }
+        else if (GubaoManager.Instance.tipType == 1)
+        {
+            basePanel.SetActive(true);
+            linePanel.SetActive(false);
+            suitePanel.SetActive(false);
+            fullRect.SetActive(true);
+            changeBtn.SetActive(false);
+            ShowBase();
+
+        }
+        else if (GubaoManager.Instance.tipType == 2)
+        {
+            basePanel.SetActive(false);
+            linePanel.SetActive(false);
+            ShowSuite();
+        }
+
+
+
     }
 
-    void ShowAttr(GubaoConfig config)
+    void ShowBase()
     {
+        nameText.text = Language.Get("L1039", Language.Get($"FuncQuality{quality}")) + config.Name;
+        nameText.color = UIHelper.GetFuncQualityColor(quality);
+        ShowAttr();
+    }
+
+    void ShowAttr()
+    {
+        changeText.text = isFull ? Language.Get("Gubao8") : Language.Get("Gubao9");
+        mainItemCell.Init(new ItemCellModel(config.UnlockItemID, false, 1));
+        mainItemCell.pieceIcon.SetActive(false);
+        mainItemCell.countText.text = lv == 0 ? "" : Language.Get("L1113", isFull ? GubaoLVAttrConfig.GetMaxLV(quality) : lv);
+
+        if (GubaoManager.Instance.IsMaxStar(gubaoID))
+        {
+            processRect.SetActive(false);
+        }
+        else
+        {
+            var starConfig = GubaoStarConfig.GetConfig(config.GubaoQuality, star + 1);
+            if (starConfig.StarUPNeedSelfCnt > 0)
+            {
+                processRect.SetActive(true);
+                var cnt = VirtualPackManager.Instance.GetNoPackItemCount(config.UnlockItemID);
+                float value = cnt * 1.0f / starConfig.StarUPNeedSelfCnt;
+                processImg.fillAmount = value;
+                fullProcessImg.SetActive(value >= 1);
+                processText.text = $"{cnt}/{starConfig.StarUPNeedSelfCnt}";
+            }
+            else
+            {
+                processRect.SetActive(false);
+            }
+        }
+
+        int showStar = isFull ? GubaoStarConfig.GetMaxStar(quality) : star;
+        for (int i = 0; i < starImgs.Length; i++)
+        {
+            if (i < showStar)
+            {
+                starImgs[i].SetActive(true);
+                //寰幆涓嶅悓鍥�
+                int starIndex = showStar / starImgs.Length * starImgs.Length + i + 1;
+                if (starIndex > showStar)
+                {
+                    starIndex -= starImgs.Length;
+                }
+                starImgs[i].SetSprite($"GubaoStar{starIndex}");
+            }
+            else
+            {
+                starImgs[i].SetActive(false);
+            }
+        }
+
+        string format = "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}", false);
         //鍩虹灞炴��
-        var attrDict = GubaoManager.Instance.GetBaseAttrByGBID(gubaoID);
+        var attrDict = !isFull ? GubaoManager.Instance.GetBaseAttrByGBID(gubaoID, true) : GubaoManager.Instance.GetBaseMaxAttrByGBID(gubaoID);
         for (int i = 0; i < attrBaseTexts.Length; i++)
         {
             if (i < config.BaseAttrIDList.Length)
             {
                 attrBaseTexts[i].SetActive(true);
-                attrBaseTexts[i].text = PlayerPropertyConfig.GetFullDescription(config.BaseAttrIDList[i], attrDict[config.BaseAttrIDList[i]]);
+
+                attrBaseTexts[i].text = PlayerPropertyConfig.GetFullDescription(config.BaseAttrIDList[i], attrDict[config.BaseAttrIDList[i]], format);
             }
             else
             {
@@ -65,43 +182,91 @@
             }
         }
 
-        //鐗规畩灞炴�э細鍙湁涓�涓睘鎬э紝绗竴琛屽崟灞傚睘鎬э紝绗簩琛屼负鐗规晥鏁堟灉灞傜骇鍔犳垚姹囨��
-        //鍒嗕袱绉嶆儏鍐�
-        //鏃犱换浣曟晥鏋滅殑姝e父鍗囨槦鍗囩骇鏄剧ず绗竴琛岋紝绗簩琛岄殣钘�
-        //鏈夌壒娈婂眰绾х殑锛氬鏋滀负0锛屽垯绗竴琛屽彧鏄剧ず鍗曡鐨勫睘鎬у拰鎻愬崌锛岀浜岃鏄剧ず鏁板��0锛涘鏋滀笉涓�0锛屽垯绗竴琛屾樉绀哄崟琛屽睘鎬у拰鎻愬崌锛岀浜岃鏄剧ず鏁板��
-        //鏈夌壒鏉冩晥鏋滅殑浜﹀悓
-        var specAttrDict = GubaoManager.Instance.GetSpecialAttrByGBID(gubaoID, true);
-        if (config.SpecEffType == 0)
+        //鐗规畩灞炴�у拰鐗规潈鍙樉绀轰竴涓� 
+        var specAttrDict = !isFull ? GubaoManager.Instance.GetSpecialAttrByGBID(gubaoID, true) : GubaoManager.Instance.GetSpecialMaxAttrByGBID(gubaoID);
+        if (config.SpecEffType == 0 && config.SpecAttrID != 0)
         {
-            attrSpecialText.text = PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, specAttrDict[config.SpecAttrID]);
+            specialText.text = PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, specAttrDict[config.SpecAttrID], format);
         }
-        else
+        else if (config.SpecEffType != 0 && config.SpecAttrID != 0)
         {
             //鏈夌壒娈婃晥鏋滅殑
-            var singleLayerAttrDict = GubaoManager.Instance.GetSpecialAttrSingleLayerByGBID(gubaoID);
-            attrSpecialText.text = Language.Get("Gubao22_" + config.SpecEffType) + PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, singleLayerAttrDict[config.SpecAttrID]);
+            specialText.text = Language.Get("Gubao22_" + config.SpecEffType) + PlayerPropertyConfig.GetFullDescription(config.SpecAttrID, specAttrDict[config.SpecAttrID], format);
         }
-        if (config.PowerType != 0)
+        else
         {
             // 1	娓稿巻鍙屽�嶅鍔辨鐜�	鏃�	澧炲姞涓囧垎鐜�	涓囧垎鐜�
             // 2	鏈堝崱棰嗗彇棰濆濂栧姳	鐗╁搧ID	鎻愬崌鐧惧垎姣�	鐧惧垎姣�
 
             //鏈夌壒鏉冩晥鏋滅殑 闈炲睘鎬х被
-            attrPrivilegeRect.SetActive(true);
-            var valueDict = GubaoManager.Instance.GetPrivilegeValueByGBID(gubaoID, true);
+            var valueDict = !isFull ? GubaoManager.Instance.GetPrivilegeValueByGBID(gubaoID, true) : GubaoManager.Instance.GetPrivilegeMaxValueByGBID(gubaoID);
             if (config.PowerType == 1)
             {
-                attrPrivilegeText.text = Language.Get("Gubao23_" + config.PowerType, valueDict[config.PowerType] / 100.0);
+                specialText.text = Language.Get("Gubao23_" + config.PowerType, valueDict[config.PowerType] / 100.0);
             }
             else if (config.PowerType == 2)
             {
-                attrPrivilegeText.text = Language.Get("Gubao23_" + config.PowerType, ItemConfig.Get(config.PowerTypeValue).ItemName, valueDict[config.PowerType]);
+                specialText.text = Language.Get("Gubao23_" + config.PowerType, ItemConfig.Get(config.PowerTypeValue).ItemName, valueDict[config.PowerType]);
             }
         }
-        else
+
+
+    }
+
+    void ShowSuite()
+    {
+        var suitID = GubaoResonanceConfig.GetSuiteIDByGubaoID(gubaoID);
+        if (suitID == 0)
         {
-            attrPrivilegeRect.SetActive(false);
+            suitePanel.SetActive(false);
+            linePanel.SetActive(false);
+            return;
+        }
+        suitePanel.SetActive(true);
+        var suitConfig = GubaoResonanceConfig.Get(suitID);
+        suiteNameText.text = suitConfig.ResonanceName + Language.Get("HeroFates11", GubaoManager.Instance.GetSuiteActiveGBCnt(suitID), suitConfig.GubaoIDList.Length);
+        for (int i = 0; i < suiteItemCells.Length; i++)
+        {
+            if (i < suitConfig.GubaoIDList.Length)
+            {
+                suiteItemCells[i].SetActive(true);
+                suiteItemCells[i].DisplayByGBID(suitConfig.GubaoIDList[i]);
+            }
+            else
+            {
+                suiteItemCells[i].SetActive(false);
+            }
         }
 
+        var curSuiteStar = GubaoManager.Instance.GetSuiteStar(suitID);
+        var starList = GubaoResonanceAttrConfig.GetStarList(suitID);
+
+        for (int i = 0; i < suiteAttrTexts.Length; i++)
+        {
+            string preStr;
+            var star = starList[i];
+            var attrCfg = GubaoResonanceAttrConfig.GetConfig(suitID, star);
+            if (star == 0)
+            {
+                preStr = Language.Get("Gubao27");
+            }
+            else
+            {
+                preStr = Language.Get("Gubao28", star);
+            }
+
+
+            if (star <= curSuiteStar)
+            {
+                //婵�娲�
+                string format = "{0}" + UIHelper.AppendColor(TextColType.Green, "+{1}", false);
+                suiteAttrTexts[i].text = Language.Get("L1100", preStr, PlayerPropertyConfig.GetFullDescription(attrCfg.ResonanceAttrIDList[0], attrCfg.ResonanceAttrValueList[0], format));
+            }
+            else
+            {
+                //閿佸畾
+                suiteAttrTexts[i].text = UIHelper.AppendColor(TextColType.NavyGray, Language.Get("L1100", preStr, PlayerPropertyConfig.GetFullDescription(attrCfg.ResonanceAttrIDList[0], attrCfg.ResonanceAttrValueList[0])));
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/Main/System/ItemTip/BoxGetItemModel.cs b/Main/System/ItemTip/BoxGetItemModel.cs
index 407c53f..a508a9f 100644
--- a/Main/System/ItemTip/BoxGetItemModel.cs
+++ b/Main/System/ItemTip/BoxGetItemModel.cs
@@ -105,6 +105,8 @@
             }
         }
 
+        bool isMergeItem = true;
+        //绾﹀畾IsBind=10 涓哄彜瀹濋澶栧鍔�
         if (netPack.ItemList.Length != 0)
         {
             for (int i = 0; i < netPack.ItemLen; i++)
@@ -112,6 +114,10 @@
                 showItems.Add(new Item((int)netPack.ItemList[i].ItemID,
                 netPack.ItemList[i].Count + netPack.ItemList[i].CountEx * Constants.ExpPointValue,
                 netPack.ItemList[i].IsBind));
+                if (isMergeItem && netPack.ItemList[i].IsBind >= 10)
+                {
+                    isMergeItem = false;
+                }
             }
         }
 
@@ -123,7 +129,7 @@
         if (showItems.Count == 0)
             return;
 
-        ItemLogicUtility.Instance.ShowGetItem(showItems, eventName);
+        ItemLogicUtility.Instance.ShowGetItem(showItems, eventName, isMergeItem:isMergeItem);
     }
 
     // public int GetUseCntByID(int itemId)
diff --git a/Main/System/ItemTip/ChooseItemsCell.cs b/Main/System/ItemTip/ChooseItemsCell.cs
index eca485b..df2bff6 100644
--- a/Main/System/ItemTip/ChooseItemsCell.cs
+++ b/Main/System/ItemTip/ChooseItemsCell.cs
@@ -10,6 +10,7 @@
     [SerializeField] LongPressButton btnReduce;
     [SerializeField] LongPressButton btnPlus;
     [SerializeField] Transform numForm;
+    [SerializeField] Transform unHaveRect;
 
     int itemId;
     string guid;
@@ -42,6 +43,16 @@
             btnReduce.SetListener(OnClickReduce);
             btnReduce.onPress.AddListener(OnClickReduce);
         }
+
+        var gbCfg = GubaoConfig.Get(itemId);
+        if (gbCfg != null && !GubaoManager.Instance.IsActive(itemId))
+        {
+            unHaveRect.SetActive(true);
+        }
+        else
+        {
+            unHaveRect.SetActive(false);
+        }
     }
 
     void OnClickPlus()
diff --git a/Main/System/KnapSack/BackpackData.cs b/Main/System/KnapSack/BackpackData.cs
index 464b65c..a0c062e 100644
--- a/Main/System/KnapSack/BackpackData.cs
+++ b/Main/System/KnapSack/BackpackData.cs
@@ -11,7 +11,7 @@
     public int id;
     public long countEx;   
     public int quality;
-    public int useType;    //鐢ㄩ�斿畾涔夛細0 鏃� 1 棰勭暀 2 绾㈤澧炲姞
+    public int useType;    //鐢ㄩ�斿畾涔夛細0 鏃� 1 棰勭暀 2 绾㈤澧炲姞 10 鍙ゅ疂澧炲姞
 
     public Item(int _id, long _count)
     {
diff --git a/Main/System/KnapSack/Logic/CommonGetItem.cs b/Main/System/KnapSack/Logic/CommonGetItem.cs
index 1f2dfb5..f5cca48 100644
--- a/Main/System/KnapSack/Logic/CommonGetItem.cs
+++ b/Main/System/KnapSack/Logic/CommonGetItem.cs
@@ -25,6 +25,8 @@
             ItemTipUtility.Show(itemID);
         });
 
-        beautyExImg.SetActive(item.useType == 2);
+        beautyExImg.SetActive(item.useType != 0);
+        beautyExImg.SetSprite($"AwardMark{item.useType}");
+        beautyExImg.SetNativeSize();
     }
 }

--
Gitblit v1.8.0