update quantity inc, dec, max

This commit is contained in:
VuNgocHaiC7
2026-01-16 17:28:55 +07:00
parent 54a178ec75
commit 2f6e3c751d
3 changed files with 200 additions and 42 deletions
+40 -21
View File
@@ -2021,39 +2021,58 @@ namespace BrewMonster
{
// Parse cmd_produce_once struct data
cmd_produce_once produceCmd = GPDataTypeHelper.FromBytes<cmd_produce_once>(data);
int produceItemId = produceCmd.type;
int produceExpireDate = 0;
uint produceAmount = produceCmd.amount;
byte producePack = produceCmd.where;
byte produceSlot = produceCmd.index;
// Create new inventory item data
var produceNewItem = new EC_IvtrItem
{
Package = producePack,
Slot = produceSlot,
m_tid = produceItemId,
m_expire_date = produceExpireDate,
State = 0,
m_iCount = (int)produceAmount,
Crc = 0,
Content = null
};
Debug.Log($"[PRODUCE_ONCE] Received: itemId={produceItemId}, amount={produceAmount}, pack={producePack}, slot={produceSlot}");
// Add item to inventory
// Get inventory
var produce_ivt = GetInventory(producePack);
if (!produce_ivt.MergeItem(produceItemId, produceExpireDate, (int)produceAmount, out var produceLastSlot, out var produceSlotNum) ||
produceLastSlot != produceSlot || produceSlotNum != (int)produceCmd.slot_amount)
if (produce_ivt == null)
{
Debug.LogWarning($"[PRODUCE_ONCE] Failed to merge item {produceItemId} to package {producePack}, slot {produceSlot}");
Debug.LogWarning($"[PRODUCE_ONCE] Invalid inventory package {producePack}");
return;
}
produce_ivt.SetItem(produceSlot, produceNewItem);
Debug.Log($"[PRODUCE_ONCE] Successfully added produced item {produceItemId} to package {producePack}, slot {produceSlot} with count {produceAmount}");
// Check if the slot already has an item
var existingItem = produce_ivt.GetItem(produceSlot, false);
// Trigger UI refresh if an EC_InventoryUI is present in scene
if (existingItem != null)
{
if (existingItem.m_tid == produceItemId)
{
existingItem.m_iCount = (int)produceAmount;
Debug.Log($"[PRODUCE_ONCE] Updated existing item count at slot {produceSlot} to {produceAmount}");
}
else
{
Debug.LogWarning($"[PRODUCE_ONCE] Slot {produceSlot} already has different item (tid={existingItem.m_tid}), not overwriting with {produceItemId}");
return;
}
}
else
{
var produceNewItem = new EC_IvtrItem
{
Package = producePack,
Slot = produceSlot,
m_tid = produceItemId,
m_expire_date = produceExpireDate,
State = 0,
m_iCount = (int)produceAmount,
Crc = 0,
Content = null
};
produce_ivt.SetItem(produceSlot, produceNewItem);
Debug.Log($"[PRODUCE_ONCE] Created new item at slot {produceSlot} with count {produceAmount}");
}
// Trigger UI refresh
var produce_ui = GameObject.FindFirstObjectByType<EC_InventoryUI>();
if (produce_ui != null)
{
@@ -2062,7 +2081,7 @@ namespace BrewMonster
UpdateEquipSkins();
// Notify DlgProduce about successful produce (NOTIFY_PRODUCE_END_ONE)
// Notify DlgProduce
var dlgProduce = GameObject.FindFirstObjectByType<DlgProduce>();
if (dlgProduce != null)
{