#pragma once

#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "PlayerSocialOptionViewData.h"
#include "TallyPlayerStatusViewData.h"
#include "EGameType.h"
#include "EPlayerCardAnimationMode.h"
#include "TallyScoreboardViewInterface.generated.h"

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

class DBDUIVIEWINTERFACES_API ITallyScoreboardViewInterface : public IInterface
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void UpdateReportedPlayer(const FString& mirrorsId);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void ShowOptionsMenu(const TArray<FPlayerSocialOptionViewData>& playerOptionsData);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetTallyScoreboardData(const TArray<FTallyPlayerStatusViewData>& tallyPlayerStatus, EGameType gameType, bool isUsingCharacterClass);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetTallyPlayerStatusWidgets(const EGameType gameType);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetPlayerCardAnimationMode(const EPlayerCardAnimationMode playerCardAnimationMode);

	UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
	void SetKillerLoadoutBlocked(const bool isBlocked);

};
