#pragma once

#include "CoreMinimal.h"
#include "PlayersInRangePerk.h"
#include "Templates/SubclassOf.h"
#include "S36P03.generated.h"

class UStatusEffect;
class ASurvivor;

UCLASS(Blueprintable, meta=(BlueprintSpawnableComponent))
class US36P03 : public UPlayersInRangePerk
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, ReplicatedUsing=OnRep_IsStatusEffectActiveOnOwningSurvivor, meta=(AllowPrivateAccess=true))
	bool _isStatusEffectActiveOnOwningSurvivor;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	TSubclassOf<UStatusEffect> _affectedHealerEffectClass;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	TSubclassOf<UStatusEffect> _perkOwnerEffectClass;

	UPROPERTY(Transient, Instanced)
	TMap<TWeakObjectPtr<ASurvivor>, UStatusEffect*> _authority_statusEffects;

	UPROPERTY(BlueprintReadWrite, Transient, Instanced, meta=(AllowPrivateAccess=true))
	UStatusEffect* _ownerStatusEffect;

private:
	UFUNCTION(BlueprintCallable)
	void OnRep_IsStatusEffectActiveOnOwningSurvivor();

public:
	virtual void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;

public:
	US36P03();
};

FORCEINLINE uint32 GetTypeHash(const US36P03) { return 0; }
