Add replicated death feedback

This commit is contained in:
2026-05-18 13:37:11 -07:00
parent e8f4acb98d
commit dce4f77d93
5 changed files with 56 additions and 1 deletions
+4
View File
@@ -336,6 +336,10 @@ void AAgrarianDebugHUD::DrawSurvival(const UAgrarianSurvivalComponent* SurvivalC
DrawLine(FString::Printf(TEXT("Thirst: %.0f"), Survival.Thirst), X, Y);
DrawLine(FString::Printf(TEXT("Temp: %.1f C"), Survival.BodyTemperature), X, Y);
DrawLine(FString::Printf(TEXT("State: %s"), Survival.bIsDead ? TEXT("DEAD") : TEXT("ALIVE")), X, Y, Survival.bIsDead ? FColor::Red : FColor::Green);
if (Survival.bIsDead)
{
DrawLine(FString::Printf(TEXT("Death: %s"), *Survival.LastDeathReason.ToString()), X, Y, FColor::Red);
}
DrawLine(FString::Printf(TEXT("Shelter: %.0f%%"), SurvivalComponent->CurrentWeatherProtection * 100.0f), X, Y);
DrawLine(FString::Printf(TEXT("Expose: x%.2f %+3.1f C"), SurvivalComponent->CurrentWeatherExposureMultiplier, SurvivalComponent->CurrentWeatherTemperatureOffsetC), X, Y);
DrawLine(FString::Printf(TEXT("Injury: %.0f"), Survival.InjurySeverity), X, Y);
@@ -482,6 +482,13 @@ void UAgrarianSurvivalComponent::ClampCareHistory()
void UAgrarianSurvivalComponent::BroadcastSurvivalChanged()
{
OnSurvivalChanged.Broadcast(Survival);
if (bLastBroadcastDeathState != Survival.bIsDead || LastBroadcastDeathReason != Survival.LastDeathReason)
{
bLastBroadcastDeathState = Survival.bIsDead;
LastBroadcastDeathReason = Survival.LastDeathReason;
OnDeathStateChanged.Broadcast(Survival.bIsDead, Survival.LastDeathReason);
}
}
void UAgrarianSurvivalComponent::UpdateDeathState()
@@ -8,6 +8,7 @@
#include "AgrarianSurvivalComponent.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FAgrarianSurvivalChangedSignature, const FAgrarianSurvivalSnapshot&, Snapshot);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FAgrarianDeathStateChangedSignature, bool, bIsDead, FName, DeathReason);
UCLASS(ClassGroup = (Agrarian), BlueprintType, Blueprintable, meta = (BlueprintSpawnableComponent))
class UAgrarianSurvivalComponent : public UActorComponent
@@ -24,6 +25,9 @@ public:
UPROPERTY(BlueprintAssignable, Category = "Agrarian|Survival")
FAgrarianSurvivalChangedSignature OnSurvivalChanged;
UPROPERTY(BlueprintAssignable, Category = "Agrarian|Survival")
FAgrarianDeathStateChangedSignature OnDeathStateChanged;
UPROPERTY(EditAnywhere, BlueprintReadOnly, ReplicatedUsing = OnRep_Survival, Category = "Agrarian|Survival")
FAgrarianSurvivalSnapshot Survival;
@@ -164,4 +168,7 @@ protected:
void ClampCareHistory();
void UpdateDeathState();
void BroadcastSurvivalChanged();
bool bLastBroadcastDeathState = false;
FName LastBroadcastDeathReason = NAME_None;
};