Formatting, add base class for prefabs for the cookspot, add functionality to spawn the prefabs in predetermined places based on an actor ptr

This commit is contained in:
Stefan Stefanov 2023-11-12 18:21:31 +02:00
parent 873337dec5
commit 57543aa69f
23 changed files with 36 additions and 16 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -9,11 +9,14 @@ AOvenCookspot::AOvenCookspot()
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it. // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true; PrimaryActorTick.bCanEverTick = true;
RootComponent = CreateDefaultSubobject<USceneComponent>("Root");
FireMesh = CreateDefaultSubobject<UStaticMeshComponent>("FireSM"); FireMesh = CreateDefaultSubobject<UStaticMeshComponent>("FireSM");
FireMesh->SetupAttachment(RootComponent);
FireElementMesh = CreateDefaultSubobject<UStaticMeshComponent>("FireElementSM"); FireElementMesh = CreateDefaultSubobject<UStaticMeshComponent>("FireElementSM");
FireElementMesh->SetupAttachment(RootComponent);
CookpotMesh = CreateDefaultSubobject<UStaticMeshComponent>("CookpotSM"); CookpotMesh = CreateDefaultSubobject<UStaticMeshComponent>("CookpotSM");
FireElementMesh->SetupAttachment(RootComponent);
FireMesh->SetupAttachment(RootComponent);
CookpotMesh->SetupAttachment(RootComponent); CookpotMesh->SetupAttachment(RootComponent);
} }

View file

@ -24,12 +24,15 @@ public:
virtual void Tick(float DeltaTime) override; virtual void Tick(float DeltaTime) override;
public: public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Oven Settings") UPROPERTY(EditAnywhere, BlueprintReadWrite)
TObjectPtr<USceneComponent> RootComp;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TObjectPtr<UStaticMeshComponent> FireMesh; TObjectPtr<UStaticMeshComponent> FireMesh;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Oven Settings") UPROPERTY(EditAnywhere, BlueprintReadWrite)
TObjectPtr<UStaticMeshComponent> FireElementMesh; TObjectPtr<UStaticMeshComponent> FireElementMesh;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Oven Settings") UPROPERTY(EditAnywhere, BlueprintReadWrite)
TObjectPtr<UStaticMeshComponent> CookpotMesh; TObjectPtr<UStaticMeshComponent> CookpotMesh;
}; };

View file

@ -112,8 +112,19 @@ void AOvenPawn::BeginPlay()
{ {
Super::BeginPlay(); Super::BeginPlay();
for (const AActor *CookspotLoc : CookspotLocations)
{
FActorSpawnParameters SpawnParameters;
auto *OvenCookspotActor =
GetWorld()->SpawnActor<AOvenCookspot>(CookstovePrefab,
CookspotLoc->GetTransform(),
SpawnParameters);
OvenCookspotActor->SetActorLocation(CookspotLoc->GetActorLocation());
CookstoveObjects.Add(OvenCookspotActor);
}
// Setup the cookstove related items // Setup the cookstove related items
Cookstoves.AddDefaulted(CookstoveObjects.Num()); Cookstoves.AddDefaulted(CookspotLocations.Num());
checkf(Cookstoves.Num() == CookstoveObjects.Num(), TEXT("Cookstoves and CookstoveObjects have different sizes"))
} }
void AOvenPawn::Tick(float DeltaTime) void AOvenPawn::Tick(float DeltaTime)

View file

@ -7,6 +7,7 @@
#include "Misc/DateTime.h" #include "Misc/DateTime.h"
#include "Misc/Timespan.h" #include "Misc/Timespan.h"
#include "Engine/DataTable.h" #include "Engine/DataTable.h"
#include "OvenCookspot.h"
#include "OvenPawn.generated.h" #include "OvenPawn.generated.h"
@ -84,24 +85,24 @@ struct FCookstove
/** /**
* @brief Updates the cookstove for this tick, if a meal is cooking, updates the stats for it and if it finishes it calculates the score, etc... * @brief Updates the cookstove for this tick, if a meal is cooking, updates the stats for it and if it finishes it calculates the score, etc...
* @param DeltaTime Time between N-1 and N-2 frames in milliseconds * @param DeltaTime Time between N-1 and N-2 frames in milliseconds.
* @param PlayerScore Takes in the current player score in case a meal gets finished and the score must be returned * @param PlayerScore Takes in the current player score in case a meal gets finished and the score must be returned.
*/ */
auto Update(const float DeltaTime, int32 &PlayerScore) -> void; auto Update(const float DeltaTime, int32 &PlayerScore) -> void;
/** /**
* @brief Returns the remaining cooking time * @brief Returns the remaining cooking time.
*/ */
auto GetRemainingCookingTime() const -> FTimespan; auto GetRemainingCookingTime() const -> FTimespan;
/** /**
* @brief Check if the currently cooked meal is done cooking * @brief Check if the currently cooked meal is done cooking.
*/ */
auto IsMealDone() const -> bool; auto IsMealDone() const -> bool;
/** /**
* @brief Finishes up cooking the current meal, setting up the necessary stats and state * @brief Finishes up cooking the current meal, setting up the necessary stats and state.
* @return Returns the calculated score based on the stats of the cooked meal * @return Returns the calculated score based on the stats of the cooked meal.
*/ */
auto FinishMeal() -> int32; auto FinishMeal() -> int32;
}; };
@ -121,7 +122,6 @@ protected:
public: public:
virtual void Tick(float DeltaTime) override; virtual void Tick(float DeltaTime) override;
// Called to bind functionality to input
virtual void SetupPlayerInputComponent(class UInputComponent *PlayerInputComponent) override; virtual void SetupPlayerInputComponent(class UInputComponent *PlayerInputComponent) override;
auto TrySpawningNewRandomMeal() -> bool; auto TrySpawningNewRandomMeal() -> bool;
@ -140,14 +140,17 @@ public:
int32 CurrentPlayerScore{0}; int32 CurrentPlayerScore{0};
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Oven Settings") UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Oven Settings")
TObjectPtr<AActor> CookstovePrefab; TSubclassOf<AOvenCookspot> CookstovePrefab;
// ReSharper disable once CppUE4ProbableMemoryIssuesWithUObject // ReSharper disable once CppUE4ProbableMemoryIssuesWithUObject
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Oven Settings") UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Oven Settings")
TObjectPtr<UDataTable> RecipesDataTable; TObjectPtr<UDataTable> RecipesDataTable;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Oven Settings")
TArray<TObjectPtr<AActor>> CookspotLocations;
private: private:
// An array of all the cookstoves, from left to right on the screen // An array of all the cookstoves, from left to right on the screen.
TArray<TObjectPtr<AActor>> CookstoveObjects; TArray<TObjectPtr<AOvenCookspot>> CookstoveObjects;
TArray<FCookstove> Cookstoves; TArray<FCookstove> Cookstoves;
}; };