#pragma once

#include "WidgetController.h"
#include "HostWidgetController.generated.h"
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam( FAttributeFloatChangedSig, float, NewValue );

UCLASS( Blueprintable, BlueprintType )
class GASA_API UHostWidgetController : public UWidgetController
{
	GENERATED_BODY()
public:
#pragma region Attribute Events
	// Attribute Events are generated by GasaGen/GasaGen_HostWidgetController.cpp

	UPROPERTY( BlueprintAssignable, Category = "Attributes" )
	FAttributeFloatChangedSig Event_OnHealthChanged;

	UPROPERTY( BlueprintAssignable, Category = "Attributes" )
	FAttributeFloatChangedSig Event_OnMaxHealthChanged;

	UPROPERTY( BlueprintAssignable, Category = "Attributes" )
	FAttributeFloatChangedSig Event_OnManaChanged;

	UPROPERTY( BlueprintAssignable, Category = "Attributes" )
	FAttributeFloatChangedSig Event_OnMaxManaChanged;

	void HealthChanged( FOnAttributeChangeData const& Data );
	void MaxHealthChanged( FOnAttributeChangeData const& Data );
	void ManaChanged( FOnAttributeChangeData const& Data );
	void MaxManaChanged( FOnAttributeChangeData const& Data );
#pragma endregion Attribute Events

#pragma region WidgetController
	void BroadcastInitialValues() override;
	void BindCallbacksToDependencies() override;
#pragma endregion WidgetController
};
