// Project Lab - NHTV Igad

#pragma once

#include "CharacterDependentSubMenus.h"
#include "MenuButton.h"
#include "SkillBrowserSubMenu.generated.h"

UCLASS()
class UNREALPROJECT_API USkillBrowserItemCategory : public UPanelUserWidget
{
	GENERATED_BODY()
public:
	void NativeConstruct() override;

	UFUNCTION(BlueprintImplementableEvent)
	void OnInit();

	UPROPERTY(BlueprintReadOnly)
	class UBaseSkillObject* skillObject;

	UPanelWidget* itemContainer;
};

UCLASS()
class UNREALPROJECT_API USkillBrowserItem : public UMenuButton
{
	GENERATED_BODY()
public:
	void NativeConstruct() override;
	void NativeTick(const FGeometry& MyGeometry, float InDeltaTime) override;
	void Init(UAbilityInfo* info);
	void NativeOnSelectionChanged(bool selected, bool controller) override;

	virtual void NativeOnPressed(bool controllerInput) override;

	UFUNCTION(BlueprintImplementableEvent)
	void OnInit();

	UPROPERTY(BlueprintReadOnly)
	class USkillBrowserItemCategory* category;
	UPROPERTY(BlueprintReadOnly)
	class USkillTreeWidget* skillTree;
	UPROPERTY(BlueprintReadOnly)
	class UAbilityInfo* ability;
	UPROPERTY(BlueprintReadOnly)
	class UBaseSkillObject* skillObject;

private:
};

UCLASS()
class UNREALPROJECT_API USkillBrowserSubMenu : public UCharacterDependentSubMenu
{
	GENERATED_BODY()
public:
	void NativeConstruct() override;

	UPROPERTY(EditDefaultsOnly)
	TSubclassOf<USkillBrowserItem> itemClass;

	UPROPERTY(EditDefaultsOnly)
	TSubclassOf<USkillBrowserItemCategory> itemCategoryClass;

private:
	UPanelWidget* m_skillItemContainer;
};
