Add Ground Zero water source

This commit is contained in:
2026-05-14 07:20:32 -07:00
parent 8d20a90e02
commit 65d43839c8
10 changed files with 182 additions and 5 deletions
@@ -0,0 +1,41 @@
// Copyright Pacificao. All Rights Reserved.
#include "AgrarianWaterSource.h"
#include "AgrarianGameCharacter.h"
#include "AgrarianSurvivalComponent.h"
#include "Components/StaticMeshComponent.h"
AAgrarianWaterSource::AAgrarianWaterSource()
{
bReplicates = true;
Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
RootComponent = Mesh;
Mesh->SetCollisionProfileName(TEXT("BlockAll"));
DisplayName = FText::FromString(TEXT("Fresh Water"));
}
FText AAgrarianWaterSource::GetInteractionText_Implementation(const AAgrarianGameCharacter* Interactor) const
{
return FText::Format(NSLOCTEXT("AgrarianWaterSource", "DrinkFromWaterSource", "Drink from {0}"), DisplayName);
}
bool AAgrarianWaterSource::CanInteract_Implementation(const AAgrarianGameCharacter* Interactor) const
{
return Interactor != nullptr && Interactor->GetSurvivalComponent() != nullptr;
}
void AAgrarianWaterSource::Interact_Implementation(AAgrarianGameCharacter* Interactor)
{
if (!HasAuthority() || !Interactor)
{
return;
}
if (UAgrarianSurvivalComponent* SurvivalComponent = Interactor->GetSurvivalComponent())
{
SurvivalComponent->AddWater(WaterRestoreAmount);
}
}
+32
View File
@@ -0,0 +1,32 @@
// Copyright Pacificao. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "AgrarianInteractable.h"
#include "AgrarianWaterSource.generated.h"
class UStaticMeshComponent;
UCLASS(Blueprintable)
class AGRARIANGAME_API AAgrarianWaterSource : public AActor, public IAgrarianInteractable
{
GENERATED_BODY()
public:
AAgrarianWaterSource();
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Agrarian|Water")
TObjectPtr<UStaticMeshComponent> Mesh;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Water", meta = (ClampMin = "0"))
float WaterRestoreAmount = 45.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Water")
FText DisplayName;
virtual FText GetInteractionText_Implementation(const AAgrarianGameCharacter* Interactor) const override;
virtual bool CanInteract_Implementation(const AAgrarianGameCharacter* Interactor) const override;
virtual void Interact_Implementation(AAgrarianGameCharacter* Interactor) override;
};