// © 2025 Naked People Team. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "CommonUserWidget.h"
#include "EquipmentPanelWidget.generated.h"

class UEquipmentSlotWidget;

UCLASS(Abstract)
class NAKEDDESIRE_API UEquipmentPanelWidget : public UCommonUserWidget
{
	GENERATED_BODY()

public:
	DECLARE_DELEGATE_OneParam(FOnSlotClicked, UEquipmentSlotWidget*);
	FOnSlotClicked OnSlotClicked;

protected:
	virtual void NativeConstruct() override;
	virtual void NativePreConstruct() override;

private:
	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> NipplesSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> AnalSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> VaginaSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> HeadSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> NeckSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> FaceSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> EyesSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> BodysuitSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> TopSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> BottomSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> UnderwearTopSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> UnderwearBottomSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> SocksSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> FootwearSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> OuterwearSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> WristRestraintSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> AnkleRestraintSlot;

	UPROPERTY(meta = (BindWidgetOptional))
	TObjectPtr<UEquipmentSlotWidget> NeckRestraintSlot;

	void HandleSlotClicked(UEquipmentSlotWidget* SlotWidget);
	void InitSlotTypes();
};