Add stack splitting

This commit is contained in:
2026-05-17 11:47:44 -07:00
parent b48595f70d
commit 555ad6df25
7 changed files with 155 additions and 1 deletions
@@ -115,6 +115,27 @@ bool UAgrarianInventoryComponent::ExtractItem(FName ItemId, int32 Quantity, FAgr
return true;
}
bool UAgrarianInventoryComponent::SplitStackByIndex(int32 StackIndex, int32 SplitQuantity)
{
if (!GetOwner() || !GetOwner()->HasAuthority() || SplitQuantity <= 0 || !Items.IsValidIndex(StackIndex) || Items.Num() >= MaxSlots)
{
return false;
}
FAgrarianItemStack& SourceStack = Items[StackIndex];
if (!SourceStack.IsValidStack() || SplitQuantity >= SourceStack.Quantity)
{
return false;
}
FAgrarianItemStack SplitStack = SourceStack;
SplitStack.Quantity = SplitQuantity;
SourceStack.Quantity -= SplitQuantity;
Items.Add(SplitStack);
BroadcastInventoryChanged();
return true;
}
void UAgrarianInventoryComponent::ServerAddItem_Implementation(const FAgrarianItemStack& Stack)
{
AddItem(Stack);
@@ -125,6 +146,11 @@ void UAgrarianInventoryComponent::ServerRemoveItem_Implementation(FName ItemId,
RemoveItem(ItemId, Quantity);
}
void UAgrarianInventoryComponent::ServerSplitStackByIndex_Implementation(int32 StackIndex, int32 SplitQuantity)
{
SplitStackByIndex(StackIndex, SplitQuantity);
}
void UAgrarianInventoryComponent::OnRep_Items()
{
BroadcastInventoryChanged();