Add MVP resource tool rules
This commit is contained in:
@@ -47,12 +47,27 @@ void AAgrarianResourceNode::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>
|
||||
|
||||
FText AAgrarianResourceNode::GetInteractionText_Implementation(const AAgrarianGameCharacter* Interactor) const
|
||||
{
|
||||
return RemainingHarvests > 0 ? FText::FromString(TEXT("Gather")) : FText::FromString(TEXT("Depleted"));
|
||||
if (RemainingHarvests <= 0)
|
||||
{
|
||||
return FText::FromString(TEXT("Depleted"));
|
||||
}
|
||||
|
||||
if (RequiredToolItemId != NAME_None && !HasRequiredTool(Interactor) && bAllowBareHandGathering)
|
||||
{
|
||||
return FText::FromString(TEXT("Gather by hand"));
|
||||
}
|
||||
|
||||
return FText::FromString(TEXT("Gather"));
|
||||
}
|
||||
|
||||
bool AAgrarianResourceNode::CanInteract_Implementation(const AAgrarianGameCharacter* Interactor) const
|
||||
{
|
||||
return RemainingHarvests > 0 && Interactor != nullptr;
|
||||
if (RemainingHarvests <= 0 || !Interactor)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return RequiredToolItemId == NAME_None || bAllowBareHandGathering || HasRequiredTool(Interactor);
|
||||
}
|
||||
|
||||
void AAgrarianResourceNode::Interact_Implementation(AAgrarianGameCharacter* Interactor)
|
||||
@@ -64,7 +79,7 @@ void AAgrarianResourceNode::Interact_Implementation(AAgrarianGameCharacter* Inte
|
||||
|
||||
if (UAgrarianInventoryComponent* Inventory = Interactor->GetInventoryComponent())
|
||||
{
|
||||
const FAgrarianItemStack Granted = MakeYieldStack();
|
||||
const FAgrarianItemStack Granted = MakeYieldStack(Interactor);
|
||||
if (Inventory->AddItem(Granted))
|
||||
{
|
||||
RemainingHarvests--;
|
||||
@@ -79,15 +94,33 @@ void AAgrarianResourceNode::OnRep_RemainingHarvests()
|
||||
UpdateDepletedState();
|
||||
}
|
||||
|
||||
FAgrarianItemStack AAgrarianResourceNode::MakeYieldStack() const
|
||||
bool AAgrarianResourceNode::HasRequiredTool(const AAgrarianGameCharacter* Interactor) const
|
||||
{
|
||||
if (RequiredToolItemId == NAME_None)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
const UAgrarianInventoryComponent* Inventory = Interactor ? Interactor->GetInventoryComponent() : nullptr;
|
||||
return Inventory && Inventory->HasItem(RequiredToolItemId, 1);
|
||||
}
|
||||
|
||||
int32 AAgrarianResourceNode::GetHarvestQuantityFor(const AAgrarianGameCharacter* Interactor) const
|
||||
{
|
||||
const int32 ToolBonus = HasRequiredTool(Interactor) ? FMath::Max(0, ToolQuantityBonus) : 0;
|
||||
return FMath::Max(1, QuantityPerHarvest + ToolBonus);
|
||||
}
|
||||
|
||||
FAgrarianItemStack AAgrarianResourceNode::MakeYieldStack(const AAgrarianGameCharacter* Interactor) const
|
||||
{
|
||||
const int32 HarvestQuantity = GetHarvestQuantityFor(Interactor);
|
||||
if (YieldItemDefinition)
|
||||
{
|
||||
return YieldItemDefinition->MakeStack(QuantityPerHarvest);
|
||||
return YieldItemDefinition->MakeStack(HarvestQuantity);
|
||||
}
|
||||
|
||||
FAgrarianItemStack Granted = YieldItem;
|
||||
Granted.Quantity = QuantityPerHarvest;
|
||||
Granted.Quantity = HarvestQuantity;
|
||||
return Granted;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user