Add crafting debug exec tools
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
|
||||
#include "AgrarianGamePlayerController.h"
|
||||
#include "AgrarianCraftingComponent.h"
|
||||
#include "AgrarianGameCharacter.h"
|
||||
#include "AgrarianInventoryComponent.h"
|
||||
#include "AgrarianItemPickup.h"
|
||||
@@ -194,6 +195,49 @@ void AAgrarianGamePlayerController::AgrarianUseItem(FName ItemId, int32 Quantity
|
||||
ServerAgrarianUseItem(ItemId, Quantity);
|
||||
}
|
||||
|
||||
void AAgrarianGamePlayerController::AgrarianCraft(FName RecipeId)
|
||||
{
|
||||
if (RecipeId == NAME_None)
|
||||
{
|
||||
ClientMessage(TEXT("Usage: AgrarianCraft <RecipeId>"));
|
||||
return;
|
||||
}
|
||||
|
||||
ServerAgrarianCraft(RecipeId);
|
||||
}
|
||||
|
||||
void AAgrarianGamePlayerController::AgrarianCraftStatus()
|
||||
{
|
||||
const AAgrarianGameCharacter* AgrarianCharacter = GetPawn<AAgrarianGameCharacter>();
|
||||
const UAgrarianCraftingComponent* CraftingComponent = AgrarianCharacter ? AgrarianCharacter->GetCraftingComponent() : nullptr;
|
||||
if (!CraftingComponent)
|
||||
{
|
||||
ClientMessage(TEXT("No Agrarian crafting component found."));
|
||||
return;
|
||||
}
|
||||
|
||||
TArray<FAgrarianRecipe> Recipes;
|
||||
CraftingComponent->GetKnownRecipes(Recipes);
|
||||
if (Recipes.IsEmpty())
|
||||
{
|
||||
ClientMessage(TEXT("No known Agrarian recipes."));
|
||||
return;
|
||||
}
|
||||
|
||||
ClientMessage(FString::Printf(TEXT("Known Agrarian recipes: %d"), Recipes.Num()));
|
||||
for (const FAgrarianRecipe& Recipe : Recipes)
|
||||
{
|
||||
FText FailureReason;
|
||||
const bool bCanCraft = CraftingComponent->CanCraft(Recipe.RecipeId, FailureReason);
|
||||
const FString RecipeName = Recipe.DisplayName.IsEmpty() ? Recipe.RecipeId.ToString() : Recipe.DisplayName.ToString();
|
||||
ClientMessage(FString::Printf(
|
||||
TEXT("- %s (%s): %s"),
|
||||
*RecipeName,
|
||||
*Recipe.RecipeId.ToString(),
|
||||
bCanCraft ? TEXT("ready") : *FailureReason.ToString()));
|
||||
}
|
||||
}
|
||||
|
||||
void AAgrarianGamePlayerController::AgrarianTravel(float X, float Y, float Z)
|
||||
{
|
||||
ServerAgrarianTravel(FVector(X, Y, Z));
|
||||
@@ -372,6 +416,33 @@ void AAgrarianGamePlayerController::ServerAgrarianUseItem_Implementation(FName I
|
||||
ClientMessage(FString::Printf(TEXT("Used %d x %s: %s."), UsedStack.Quantity, *ItemId.ToString(), *EffectSummary));
|
||||
}
|
||||
|
||||
void AAgrarianGamePlayerController::ServerAgrarianCraft_Implementation(FName RecipeId)
|
||||
{
|
||||
AAgrarianGameCharacter* AgrarianCharacter = GetPawn<AAgrarianGameCharacter>();
|
||||
UAgrarianCraftingComponent* CraftingComponent = AgrarianCharacter ? AgrarianCharacter->GetCraftingComponent() : nullptr;
|
||||
if (!CraftingComponent)
|
||||
{
|
||||
ClientMessage(TEXT("No Agrarian crafting component found."));
|
||||
return;
|
||||
}
|
||||
|
||||
FText FailureReason;
|
||||
if (!CraftingComponent->CanCraft(RecipeId, FailureReason))
|
||||
{
|
||||
ClientMessage(FString::Printf(TEXT("Cannot craft %s: %s"), *RecipeId.ToString(), *FailureReason.ToString()));
|
||||
return;
|
||||
}
|
||||
|
||||
if (CraftingComponent->Craft(RecipeId))
|
||||
{
|
||||
ClientMessage(FString::Printf(TEXT("Crafted %s."), *RecipeId.ToString()));
|
||||
}
|
||||
else
|
||||
{
|
||||
ClientMessage(FString::Printf(TEXT("Failed to craft %s."), *RecipeId.ToString()));
|
||||
}
|
||||
}
|
||||
|
||||
void AAgrarianGamePlayerController::ServerAgrarianTravel_Implementation(FVector Destination)
|
||||
{
|
||||
APawn* ControlledPawn = GetPawn();
|
||||
|
||||
@@ -75,6 +75,12 @@ public:
|
||||
UFUNCTION(Exec)
|
||||
void AgrarianUseItem(FName ItemId, int32 Quantity);
|
||||
|
||||
UFUNCTION(Exec)
|
||||
void AgrarianCraft(FName RecipeId);
|
||||
|
||||
UFUNCTION(Exec)
|
||||
void AgrarianCraftStatus();
|
||||
|
||||
UFUNCTION(Exec)
|
||||
void AgrarianTravel(float X, float Y, float Z);
|
||||
|
||||
@@ -103,6 +109,9 @@ protected:
|
||||
UFUNCTION(Server, Reliable)
|
||||
void ServerAgrarianUseItem(FName ItemId, int32 Quantity);
|
||||
|
||||
UFUNCTION(Server, Reliable)
|
||||
void ServerAgrarianCraft(FName RecipeId);
|
||||
|
||||
UFUNCTION(Server, Reliable)
|
||||
void ServerAgrarianTravel(FVector Destination);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user