#pragma once

#include "CoreMinimal.h"
#include "LobbyCharactersSubTabSubPresenter.h"
#include "ESortingOption.h"
#include "ESortingOrder.h"
#include "StoreCharactersFiltersData.h"
#include "LobbyCharactersListSubPresenter.generated.h"

class UCharacterSelectionManager;

UCLASS(Blueprintable)
class ULobbyCharactersListSubPresenter : public ULobbyCharactersSubTabSubPresenter
{
	GENERATED_BODY()

private:
	UPROPERTY(EditInstanceOnly, BlueprintReadWrite, Transient, meta=(AllowPrivateAccess=true))
	UCharacterSelectionManager* _characterSelectionManager;

private:
	UFUNCTION()
	void OnSortingChanged(const ESortingOption sortingType, const ESortingOrder sortingOrder);

	UFUNCTION(BlueprintCallable)
	void OnSearchBarTextChanged(const FString& enteredText);

	UFUNCTION(BlueprintCallable)
	void OnFiltersChanged(const FStoreCharactersFiltersData& filtersData);

	UFUNCTION(BlueprintCallable)
	void OnClearFiltersClicked();

	UFUNCTION(BlueprintCallable)
	void OnCharacterSelected(const int32 characterIndex);

public:
	ULobbyCharactersListSubPresenter();
};

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