DRG-Femboy-Voice/Source/FSD/Public/PlayerTemperatureComponent.h
2025-04-15 12:39:31 -07:00

125 lines
4.7 KiB
C++
Executable file

#pragma once
#include "CoreMinimal.h"
#include "EPlayerTemperatureState.h"
#include "PlayerDefrostingSignatureDelegate.h"
#include "PlayerTemperatureChangeRateSignatureDelegate.h"
#include "PlayerTemperatureChangedSignatureDelegate.h"
#include "PlayerTemperatureShowBarDelegate.h"
#include "PlayerTemperatureStateChangedSignatureDelegate.h"
#include "TemperatureComponent.h"
#include "Templates/SubclassOf.h"
#include "PlayerTemperatureComponent.generated.h"
class APlayerCharacter;
class UHealthComponentBase;
class UStatusEffect;
UCLASS(Blueprintable, ClassGroup=Custom, meta=(BlueprintSpawnableComponent))
class UPlayerTemperatureComponent : public UTemperatureComponent {
GENERATED_BODY()
public:
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FPlayerTemperatureChangedSignature OnTemperatureChanged;
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FPlayerTemperatureStateChangedSignature OnTemperatureStateChanged;
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FPlayerTemperatureChangeRateSignature OnTemperatureChangeRate;
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FPlayerDefrostingSignature OnDefrosting;
UPROPERTY(BlueprintAssignable, BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
FPlayerTemperatureShowBar OnBarVisibilityChanged;
protected:
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float MinimumTemperature;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float MaximumTemperature;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float DefrostTemperature;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float BurnTemperature;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float DouseFireTemperature;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float TemperaturRegainSpeed;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
float DefrostingRequired;
UPROPERTY(BlueprintReadWrite, EditAnywhere, meta=(AllowPrivateAccess=true))
TSubclassOf<UStatusEffect> OnDefrostedStatusEffect;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
float NormalTemperature;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnRep_CurrentTemperature, meta=(AllowPrivateAccess=true))
float CurrentTemperature;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Replicated, Transient, meta=(AllowPrivateAccess=true))
float TargetTemperature;
UPROPERTY(EditAnywhere, Transient, ReplicatedUsing=OnRep_TemperatureChangeSpeed, meta=(AllowPrivateAccess=true))
int8 TemperatureChangeSpeed;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnRep_DefrostProgress, meta=(AllowPrivateAccess=true))
float DefrostProgress;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
bool barVisible;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, meta=(AllowPrivateAccess=true))
APlayerCharacter* Character;
UPROPERTY(BlueprintReadWrite, EditAnywhere, Transient, ReplicatedUsing=OnRep_TemperatureState, meta=(AllowPrivateAccess=true))
EPlayerTemperatureState TemperatureState;
public:
UPlayerTemperatureComponent();
virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
UFUNCTION(BlueprintAuthorityOnly, BlueprintCallable)
void SetNormalTemperature();
UFUNCTION(BlueprintAuthorityOnly, BlueprintCallable)
void SetFrozenTemperature();
protected:
UFUNCTION(BlueprintCallable)
void OnRep_TemperatureState(EPlayerTemperatureState oldState);
UFUNCTION()
void OnRep_TemperatureChangeSpeed(int8 OldSpeed);
UFUNCTION(BlueprintCallable)
void OnRep_DefrostProgress();
UFUNCTION(BlueprintCallable)
void OnRep_CurrentTemperature(float OldTemperature);
UFUNCTION(BlueprintCallable)
void OnDeath(UHealthComponentBase* Health);
UFUNCTION(BlueprintCallable, BlueprintPure)
int32 GetTemperatureChangedSpeed() const;
public:
UFUNCTION(BlueprintCallable, BlueprintPure)
float GetDefrostProgress() const;
UFUNCTION(BlueprintCallable, BlueprintPure)
float GetCurrentTemperatureNormalized() const;
UFUNCTION(BlueprintAuthorityOnly, BlueprintCallable)
void Defrost(float Amount);
};