mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-04 15:23:58 +00:00
Add consumable items
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using MikuSB.Data;
|
||||
using MikuSB.Data.Excel;
|
||||
using MikuSB.Database;
|
||||
using MikuSB.Database.Inventory;
|
||||
using MikuSB.Enums.Item;
|
||||
@@ -136,4 +137,29 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
var templateId = GameResourceTemplateId.FromGdpl((uint)genre, detail, particular, level);
|
||||
return InventoryData.Items.Values.FirstOrDefault(x => x.TemplateId == templateId);
|
||||
}
|
||||
|
||||
public async ValueTask<BaseGameItemInfo?> AddSuppliesItem(SuppliesExcel suppliesData, uint count)
|
||||
{
|
||||
var templateId = GameResourceTemplateId.FromGdpl(suppliesData.Genre, suppliesData.Detail, suppliesData.Particular, suppliesData.Level);
|
||||
|
||||
uint maxCount = suppliesData.GMnum > 0 ? suppliesData.GMnum : 99999;
|
||||
uint giveCount = Math.Min(count, maxCount);
|
||||
|
||||
var existing = InventoryData.Items.Values.FirstOrDefault(x => x.TemplateId == templateId);
|
||||
if (existing != null)
|
||||
{
|
||||
existing.ItemCount = Math.Min(existing.ItemCount + giveCount, maxCount);
|
||||
return existing;
|
||||
}
|
||||
|
||||
var itemInfo = new BaseGameItemInfo
|
||||
{
|
||||
TemplateId = templateId,
|
||||
UniqueId = InventoryData.NextUniqueUid++,
|
||||
Flag = ItemFlagEnum.FLAG_READED,
|
||||
ItemCount = giveCount
|
||||
};
|
||||
InventoryData.Items[itemInfo.UniqueId] = itemInfo;
|
||||
return itemInfo;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user