#pragma once

#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "ELoadoutSlot.h"
#include "EPlayerRole.h"
#include "UObject/ScriptInterface.h"
#include "LoadoutViewInterface.generated.h"

class ULoadoutItemViewData;
class ISearchBarViewInterface;

UINTERFACE(Blueprintable)
class DBDUIVIEWINTERFACES_API ULoadoutViewInterface : public UInterface
{
	GENERATED_BODY()
};

class DBDUIVIEWINTERFACES_API ILoadoutViewInterface : public IInterface
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetSelectedSlot(const ELoadoutSlot slotSelected);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetLoadoutSlotData(const TArray<ULoadoutItemViewData*>& slotData);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetLoadoutEnabled(const bool isEnabled);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetLayout(const int32 loadoutLayoutMask, const EPlayerRole playerRole);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetIsBeginnerModeActive(const bool isBeginnerModeActive);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	TScriptInterface<ISearchBarViewInterface> GetSearchBarViewInterface() const;

};
