#pragma once

#include "CoreMinimal.h"
#include "CoreBaseUserWidget.h"
#include "SettingsItemPowerAddonsDisplayWidget.generated.h"

class UCoreMenuPowerWidget;
class UCoreMenuItemWidget;
class UCoreMenuAddonWidget;
class UBaseMenuLoadoutItemViewData;
class UMenuAddonViewData;
class UCoreButtonWidget;

UCLASS(Blueprintable, EditInlineNew)
class USettingsItemPowerAddonsDisplayWidget : public UCoreBaseUserWidget
{
	GENERATED_BODY()

protected:
	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreMenuPowerWidget* Power;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreMenuItemWidget* Item;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreMenuAddonWidget* Addon1;

	UPROPERTY(BlueprintReadWrite, meta=(BindWidgetOptional))
	UCoreMenuAddonWidget* Addon2;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced)
	TArray<UCoreMenuAddonWidget*> _addonWidgets;

public:
	UFUNCTION(BlueprintCallable)
	void SetData(const UBaseMenuLoadoutItemViewData* itemPowerViewData, const TArray<UMenuAddonViewData*>& addonsViewData, const bool isKiller);

protected:
	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void OnLoadoutPartUnhovered(UCoreButtonWidget* hoveredLoadoutPart);

	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
	void OnLoadoutPartHovered(UCoreButtonWidget* hoveredLoadoutPart);

public:
	USettingsItemPowerAddonsDisplayWidget();
};

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