Files
godot-------/Script/Pawn/BagItemList.cs
m0_75251201 7700703099 初次提交
2025-07-12 11:30:22 +08:00

71 lines
1.8 KiB
C#

using Godot;
using System;
using System.Collections.Generic;
namespace Cosmobox
{
public partial class BagItemList
{
public List<BagItem> Items = new();
// 查找物品
public BagItem Find(string name)
{
foreach (var item in Items)
{
if (item.ItemName == name)
{
return item;
}
}
return null;
}
// 添加物品
public bool AddItem(ItemResource resource, int amount = 1)
{
if (resource == null || amount <= 0)
{
GD.PrintErr("Invalid item or amount.");
return false;
}
// 检查是否已有相同物品
var existingItem = Find(resource.ItemName);
if (existingItem != null && resource.Stackable)
{
existingItem.AddAmount(amount); // 堆叠物品
}
else
{
// 创建新物品条目
var newItem = new BagItem
{
itemResource = resource,
amount = amount
};
Items.Add(newItem);
}
return true;
}
// 移除物品
public bool RemoveItem(string name, int amount = 1)
{
var item = Find(name);
if (item == null)
{
GD.Print($"Item '{name}' not found in bag.");
return false;
}
if (amount >= item.amount)
{
Items.Remove(item); // 完全移除物品
return true;
}
item.RemoveAmount(amount); // 减少数量
return true;
}
}
}