From 09bc892c7283df8757a07b646d5af21ddaa263d1 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期四, 06 十一月 2025 18:22:34 +0800
Subject: [PATCH] 164 天子的考验-客户端
---
Main/System/KnapSack/PackManager.cs | 185 +++++++++++++++++++++++++++++++++-------------
1 files changed, 133 insertions(+), 52 deletions(-)
diff --git a/Main/System/KnapSack/PackManager.cs b/Main/System/KnapSack/PackManager.cs
index d60e762..a66d931 100644
--- a/Main/System/KnapSack/PackManager.cs
+++ b/Main/System/KnapSack/PackManager.cs
@@ -36,7 +36,8 @@
public Dictionary<int, int> PackMaxCountDict = 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 List<int> composeItemIDList = new List<int>(); //鍚堟垚鍒楄〃鐗╁搧ID
+ List<int> canComposeItemIDList = new List<int>(); //鏁伴噺瓒冲鍚堟垚鍒楄〃鐗╁搧ID 鎺掑簭鍒ゆ柇鐢�
//寮�鏍煎瓙
public Dictionary<int, int> openGirdMoneyDict = new Dictionary<int, int>(); //鑳屽寘绫诲瀷锛氭秷鑰楄揣甯佺被鍨�
@@ -49,7 +50,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 +104,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 +129,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 +194,8 @@
{
refrechPackEvent(packType);
}
-
- UpdatePackRedpoint(packType);
+
+ DelayNotifyPackChange(packType);
}
public void UpdateItem(H0704_tagRolePackRefresh serverItem)
@@ -236,8 +238,8 @@
// ItemOperateUtility.Instance.ShowPutOnNewEquipRemind(itemInfo.itemId);
// }
// }
-
- UpdatePackRedpoint(type);
+
+ DelayNotifyPackChange(type);
//EquipDecomRedCtrl();
AutoUseItem(itemInfo.itemId, serverItem.ItemGUID);
}
@@ -302,7 +304,8 @@
gridRefreshEvent(type);
}
- UpdatePackRedpoint(type);
+
+ DelayNotifyPackChange(type);
}
@@ -329,6 +332,7 @@
}
}
+ DelayNotifyPackChange(type);
}
@@ -382,7 +386,7 @@
}
- UpdatePackRedpoint(type);
+ DelayNotifyPackChange(type);
if (GetItemByGuid(guid) == null)
{
@@ -543,7 +547,8 @@
else
#endif
{
- path = AssetVersionUtility.GetAssetFilePath($"Config/{name}.ini");
+ //浠庢湇鍔$鎷疯礉鏄痠ni锛屾墦鍖呯敤txt缁熶竴澶勭悊
+ path = AssetVersionUtility.GetAssetFilePath($"Config/{name}.txt");
}
return File.ReadAllLines(path);
@@ -561,18 +566,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
@@ -870,48 +876,123 @@
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();
+
+ redpointComposePack.state = RedPointState.None;
+ foreach (var item in items.Values)
+ {
+ int makeID = ItemCompoundConfig.GetMakeIDByMaterial(item.itemId);
+ if (makeID != 0)
+ {
+ var config = ItemCompoundConfig.GetItemCompoundConfig(makeID);
+ 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()
+ {
+ //鏀堕泦鍚堟垚鐗╁搧
+ composeItemIDList.Clear();
+ canComposeItemIDList.Clear();
+
+ SinglePack singlePack = GetSinglePack(PackType.Item);
+ var items = singlePack.GetAllItems();
+
+ foreach (var item in items.Values)
+ {
+ var makeID = ItemCompoundConfig.GetMakeIDByMaterial(item.itemId);
+ if (makeID != 0)
+ {
+ composeItemIDList.Add(makeID);
+
+ var config = ItemCompoundConfig.GetItemCompoundConfig(makeID);
+ var targetID = config.itemID;
+ var targetCnt = config.itemCount;
+ if (GetItemCountByID(PackType.Item, targetID) >= targetCnt)
+ {
+ canComposeItemIDList.Add(makeID);
+ }
+ }
+ }
+
+ composeItemIDList.Sort(SortItemCompose);
+ }
+
+ int SortItemCompose(int itemIDA, int itemIDB)
+ {
+ // 鍚堟垚鏉愭枡澶熶笉澶�
+ var isEnoughA = canComposeItemIDList.Contains(itemIDA);
+ var isEnoughB = canComposeItemIDList.Contains(itemIDB);
+ if (isEnoughA != isEnoughB)
+ {
+ return isEnoughA ? -1 : 1;
+ }
+
+ var itemA = ItemConfig.Get(itemIDA);
+ var itemB = ItemConfig.Get(itemIDB);
+
+ var colorA = itemA.ItemColor;
+ var colorB = itemB.ItemColor;
+ if (colorA != colorB)
+ {
+ return colorB - colorA;
+ }
+
+ return itemA.ID - itemB.ID;
+ }
+
#endregion
#region 鏌ョ湅鏌愪釜浣嶇疆鐨勭墿鍝�
--
Gitblit v1.8.0