#pragma once

#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "ETallyTabState.h"
#include "UObject/ScriptInterface.h"
#include "TallyMenuViewInterface.generated.h"

class ITallyScoreboardViewInterface;
class IChatViewInterface;

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

class DBDUIVIEWINTERFACES_API ITallyMenuViewInterface : public IInterface
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetTabSelected(const ETallyTabState& tabState);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetSpectateButtonVisibility(const bool isVisible);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetSpectateButtonEnabled(const bool Enabled);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetSettingsButton(const bool isUsingGamePad);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetLeaveButtonEnabled(const bool Enabled);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetButtonBetaFeatureVisibility(bool isVisible);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetBackgroundVisibility(bool isVisible);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	TScriptInterface<ITallyScoreboardViewInterface> GetTallyScoreboardInterface() const;

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	TScriptInterface<IChatViewInterface> GetChatInterface() const;

};
