From 23c416e43615b956f9b685b2184e9b18bf9cb665 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期五, 31 十月 2025 00:01:58 +0800
Subject: [PATCH] 81 子 【常规】背包 / 【常规】背包-客户端

---
 Main/System/KnapSack/PackManager.cs |  159 ++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 109 insertions(+), 50 deletions(-)

diff --git a/Main/System/KnapSack/PackManager.cs b/Main/System/KnapSack/PackManager.cs
index 3de93fb..afefa1c 100644
--- a/Main/System/KnapSack/PackManager.cs
+++ b/Main/System/KnapSack/PackManager.cs
@@ -49,7 +49,8 @@
     string RoleEquipLocalSave = "";
     List<int> LocalSavePlaceArray { get; set; }
     Dictionary<int, List<int>> sharedUseCountItemDict { get; set; }
-    bool isUpdatePlayerLv = false;
+    // bool isUpdatePlayerLv = false;
+    bool isItemChange = false;  //寤惰繜澶勭悊鐗╁搧鍙樺寲
 
     public int[] gameCashShow;  //浠i噾鍒哥壒娈婃樉绀� 闄や互100
     public int[] autoUseItemIDs;
@@ -102,7 +103,7 @@
     public void OnBeforePlayerDataInitialize()
     {
         GlobalTimeEvent.Instance.secondEvent -= UpdateSecond;
-        PlayerDatas.Instance.playerDataRefreshEvent -= UpdatePlayerLv;
+        // PlayerDatas.Instance.playerDataRefreshEvent -= UpdatePlayerLv;
         LocalSave.DeleteKey(RecordKnapsackTitle);
         playerPackDict.Clear();
         itemDayUseCntDict.Clear();
@@ -127,8 +128,8 @@
             LocalSavePlaceArray = null;
         }
         GlobalTimeEvent.Instance.secondEvent += UpdateSecond;
-        PlayerDatas.Instance.playerDataRefreshEvent += UpdatePlayerLv;
-        isUpdatePlayerLv = true;
+        // PlayerDatas.Instance.playerDataRefreshEvent += UpdatePlayerLv;
+        // isUpdatePlayerLv = true;
         FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
     }
 
@@ -192,8 +193,8 @@
         {
             refrechPackEvent(packType);
         }
-
-        UpdatePackRedpoint(packType);
+        
+        DelayNotifyPackChange(packType);
     }
 
     public void UpdateItem(H0704_tagRolePackRefresh serverItem)
@@ -236,8 +237,8 @@
         //         ItemOperateUtility.Instance.ShowPutOnNewEquipRemind(itemInfo.itemId);
         //     }
         // }
-
-        UpdatePackRedpoint(type);
+        
+        DelayNotifyPackChange(type);
         //EquipDecomRedCtrl();
         AutoUseItem(itemInfo.itemId, serverItem.ItemGUID);
     }
@@ -302,7 +303,8 @@
             gridRefreshEvent(type);
         }
 
-        UpdatePackRedpoint(type);
+        
+        DelayNotifyPackChange(type);
     }
 
     
@@ -329,6 +331,7 @@
 
             }
         }
+        DelayNotifyPackChange(type);
 
     }
 
@@ -382,7 +385,7 @@
 
         }
 
-        UpdatePackRedpoint(type);
+        DelayNotifyPackChange(type);
 
         if (GetItemByGuid(guid) == null)
         {
@@ -562,18 +565,19 @@
 
     private void UpdateSecond()
     {
-        if (isUpdatePlayerLv)
+        if (isItemChange)
         {
-            isUpdatePlayerLv = false;
+            isItemChange = false;
+            DelayRefreshItemPackEvent();
         }
     }
 
-    private void UpdatePlayerLv(PlayerDataType type)
-    {
-        if (type != PlayerDataType.LV) return;
+    // private void UpdatePlayerLv(PlayerDataType type)
+    // {
+    //     if (type != PlayerDataType.LV) return;
 
-        isUpdatePlayerLv = true;
-    }
+    //     isUpdatePlayerLv = true;
+    // }
 
     #endregion
 
@@ -871,48 +875,103 @@
         return useCnt;
     }
 
-    public void GotoWashAttributePoint(string guid)
-    {
-        // ItemModel itemModel = GetItemByGuid(guid);
-        // if (itemModel == null) return;
-
-        // WashAttrPointWin.itemModel = itemModel;
-        // WindowCenter.Instance.Open<WashAttrPointWin>();
-    }
 
     #region 绾㈢偣閫昏緫鍒ゆ柇
 
-    const int ITEMPACK_REDKEY = 102011003;
-    Redpoint redpointItemPack = new Redpoint(MainRedDot.RedPoint_BagFuncKey, ITEMPACK_REDKEY);
+    Redpoint redpointItemPack = new Redpoint(MainRedDot.RedPoint_MainPackKey, MainRedDot.RedPoint_BagFuncKey);
+    Redpoint redpointComposePack = new Redpoint(MainRedDot.RedPoint_MainPackKey, MainRedDot.RedPoint_ComposeFuncKey);
 
-
-    private void UpdatePackRedpoint(PackType type)
+    //寤惰繜閫氱煡鑳屽寘鍙樺寲锛岄伩鍏嶅湪鍚屼竴甯у唴澶氭閫氱煡
+    private void DelayNotifyPackChange(PackType type)
     {
-        var singlePack = GetSinglePack(type);
-        if (singlePack == null)
+        if (type == PackType.Item)
         {
-            return;
-        }
-
-        switch (type)
-        {
-            case PackType.Item:
-                if (singlePack.GetEmptyGridCount() <= 0)
-                {
-                    redpointItemPack.state = RedPointState.Full;
-                    //SysNotifyMgr.Instance.ShowTip("BagFull");
-                }
-                else
-                {
-                    redpointItemPack.state = RedPointState.None;
-                }
-
-                break;
-
+            isItemChange = true;
         }
     }
 
-    
+
+    void DelayRefreshItemPackEvent()
+    {
+        //鍚堟垚绾㈢偣
+        SinglePack singlePack = GetSinglePack(PackType.Item);
+        var items = singlePack.GetAllItems();
+
+        foreach (var item in items.Values)
+        {
+            if (ItemCompoundConfig.IsCompoundItem(item.itemId))
+            {
+                var config = ItemCompoundConfig.GetItemCompoundConfig(item.itemId);
+                var targetID = config.itemID;
+                var targetCnt = config.itemCount;
+                if (GetItemCountByID(PackType.Item, targetID) >= targetCnt)
+                {
+                    redpointComposePack.state = RedPointState.Simple;
+                    break;
+                }
+            }
+        }
+
+
+        //鑳屽寘绾㈢偣
+        if (singlePack.GetEmptyGridCount() <= 0)
+        {
+            redpointItemPack.state = RedPointState.Full;
+            SysNotifyMgr.Instance.ShowTip("BagFull");
+        }
+        else
+        {
+            redpointItemPack.state = RedPointState.None;
+
+            //鏃犳潯浠跺紑鍚殑瀹濈绾㈢偣
+            foreach (var item in items.Values)
+            {
+                var chestConfig = ChestsConfig.Get(item.itemId);
+                if (chestConfig != null && chestConfig.ExpendItemID == 0 && chestConfig.OpenMoney == 0)
+                {
+                    redpointItemPack.state = RedPointState.Simple;
+                    break;
+                }
+            }
+        }
+
+
+    }
+
+    public void RefreshItemComposeList()
+    {
+        //鏀堕泦鍚堟垚鐗╁搧
+        composeItemGuidList.Clear();
+
+        SinglePack singlePack = GetSinglePack(PackType.Item);
+        var items = singlePack.GetAllItems();
+
+        foreach (var item in items.Values)
+        {
+            if (ItemCompoundConfig.IsCompoundItem(item.itemId))
+            {
+                composeItemGuidList.Add(item.guid);
+            }
+        }
+
+        composeItemGuidList.Sort(SortItemCompose);
+    }
+
+    int SortItemCompose(string guidA, string guidB)
+    {
+        var itemA = GetItemByGuid(guidA);
+        var itemB = GetItemByGuid(guidB);
+
+        var colorA = itemA.config.ItemColor;
+        var colorB = itemB.config.ItemColor;
+        if (colorA != colorB)
+        {
+            return colorB - colorA;
+        }
+
+        return itemA.itemId - itemB.itemId;
+    }
+
     #endregion
 
     #region 鏌ョ湅鏌愪釜浣嶇疆鐨勭墿鍝�

--
Gitblit v1.8.0