#pragma once

#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "BPC_HealthSystem.generated.h"

DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnHealthChanged, float, CurrentHealth, float, MaxHealth);
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnDeath);

UCLASS(Blueprintable, ClassGroup=(Framework), meta=(BlueprintSpawnableComponent))
class PG_FRAMEWORK_API UBPC_HealthSystem : public UActorComponent
{
	GENERATED_BODY()

public:
	UBPC_HealthSystem();

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Framework|Health")
	float MaxHealth = 100.0f;

	UPROPERTY(BlueprintReadOnly, Category = "Framework|Health")
	float CurrentHealth = 100.0f;

	UPROPERTY(BlueprintAssignable, Category = "Framework|Events")
	FOnHealthChanged OnHealthChanged;

	UPROPERTY(BlueprintAssignable, Category = "Framework|Events")
	FOnDeath OnDeath;
};
