#pragma once

#include "CoreMinimal.h"
#include "Skill.h"
#include "Templates/SubclassOf.h"
#include "SelfRecoverSkill.generated.h"

class UStatusEffect;
class AActor;

UCLASS(Blueprintable, meta=(BlueprintSpawnableComponent))
class USelfRecoverSkill : public USkill
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	TSubclassOf<UStatusEffect> _enduranceStatusEffect;

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

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _enduranceDuration;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _hasteDuration;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _hasteAmount;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _soloRecoveryBonusThreshold;

private:
	UFUNCTION(BlueprintCallable)
	void Authority_OnHealProgress(float individualChargeAmount, float totalChargeAmount, AActor* chargeInstigator, bool wasCoop, float deltaTime);

public:
	USelfRecoverSkill();
};

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