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