(Feat) Add Build
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
namespace Ashwild.Inventory
|
||||
{
|
||||
/// <summary>
|
||||
/// A container-agnostic snapshot of what a slot holds: the item, how many, and the remaining uses
|
||||
/// of this concrete instance (-1 when the item does not track uses). It is the common currency
|
||||
/// between every container — the player's inventory, a chest, or a stack in flight over the network —
|
||||
/// so the transfer rules can be written once without knowing where a slot lives.
|
||||
///
|
||||
/// Carrying <see cref="Uses"/> is what keeps a half-worn tool half-worn when it changes slot: writing
|
||||
/// a slot back without it silently repairs the item to full.
|
||||
/// </summary>
|
||||
public struct SlotContent
|
||||
{
|
||||
public ItemData Item;
|
||||
public int Quantity;
|
||||
public int Uses;
|
||||
|
||||
/// <summary>
|
||||
/// True when this snapshot holds nothing — no item, or a quantity that ran out.
|
||||
/// </summary>
|
||||
public bool IsEmpty => Item == null || Quantity <= 0;
|
||||
|
||||
/// <summary>
|
||||
/// The empty snapshot, used to clear a slot.
|
||||
/// </summary>
|
||||
public static SlotContent Empty => new SlotContent { Item = null, Quantity = 0, Uses = -1 };
|
||||
|
||||
/// <summary>
|
||||
/// Builds a snapshot, normalising the uses of an item that does not track them to -1.
|
||||
/// </summary>
|
||||
public static SlotContent Of(ItemData item, int quantity, int uses)
|
||||
{
|
||||
if (item == null || quantity <= 0) return Empty;
|
||||
return new SlotContent
|
||||
{
|
||||
Item = item,
|
||||
Quantity = quantity,
|
||||
Uses = item.HasUses ? uses : -1
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user