#pragma once

#include "CoreMinimal.h"
#include "CompetenceContainerViewInterface.h"
#include "CoreBaseHudWidget.h"
#include "UObject/ScriptInterface.h"
#include "CompetenceContainerWidget.generated.h"

class UCorePerkWidget;
class UCoreSkillWidget;
class IPerkViewInterface;
class ISkillViewInterface;

UCLASS(Blueprintable, EditInlineNew)
class DBDUIVIEWSCORE_API UCompetenceContainerWidget : public UCoreBaseHudWidget, public ICompetenceContainerViewInterface
{
	GENERATED_BODY()

protected:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Export)
	TArray<UCorePerkWidget*> PerkWidgets;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Export)
	TArray<UCoreSkillWidget*> SkillWidgets;

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	TArray<TScriptInterface<IPerkViewInterface>> _perkViewInterfaces;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	TArray<TScriptInterface<ISkillViewInterface>> _skillViewInterfaces;

private:
	UFUNCTION(BlueprintCallable)
	void OnPerkRevealed();

public:
	UCompetenceContainerWidget();
};

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