Add replicated death feedback
This commit is contained in:
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user