#pragma once
#include "AbilityFilter.h"
#include "ScalingGraph.h"
#include "DealDamageProxy.Generated.h"

UCLASS()
class ADealDamageProxy : public AActor
{
	GENERATED_BODY()
	
public:
	UFUNCTION(BlueprintCallable, Category = "Damage Scaling")
	float GetAbilityPowerScale() const;

	// Scales samples the input curve anywhere from 0-1 based on the currently cast ability's power(or level for basic attacks)
	UFUNCTION(BlueprintCallable, Category = "Scaling Graph")
	float ScaleGraphCurve(const UCurveFloat* val);
	// Same as ScaleGraphCurve but this one scales with the player level
	UFUNCTION(BlueprintCallable, Category = "Scaling Graph")
	float ScaleGraphCurveByLevel(const UCurveFloat* val);

	// The character that started this sequence of proxies and the dealer of the damage
	UPROPERTY(BlueprintReadOnly, Category="Damage Proxy")
	class ANetworkCharacter* character;
	// The ability that was cast to spawn this object
	UPROPERTY(BlueprintReadOnly, Category="Damage Proxy")
	class UAbilityInfo* abilityInfo;
};