// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "PlayerNameplateWidget.generated.h"

class UTextBlock;

/**
 * L'etiquette flottante au-dessus d'un joueur : son pseudo Steam.
 *
 * Volontairement passive -- elle ne va chercher aucune donnee et ne s'abonne a
 * rien. C'est UPlayerNameplateComponent qui la nourrit, parce que lui seul sait
 * DE QUEL joueur il s'agit : un widget pose sur le pawn d'autrui n'a aucun moyen
 * fiable de remonter jusqu'a son PlayerState sans supposer une hierarchie.
 *
 * Classe Abstract comme les autres widgets du projet : on cree un
 * WBP_PlayerNameplate qui en herite, le C++ porte la logique et le Blueprint la
 * mise en page.
 */
UCLASS(Abstract)
class EMBERWILD_API UPlayerNameplateWidget : public UUserWidget
{
	GENERATED_BODY()

public:
	/** Ecrit le pseudo affiche. Sans effet si le Text Block n'existe pas. */
	UFUNCTION(BlueprintCallable, Category = "Nameplate")
	void SetPlayerName(const FText& InName);

protected:
	/** A nommer exactement "PlayerNameText" dans le WBP. */
	UPROPERTY(meta = (BindWidget))
	TObjectPtr<UTextBlock> PlayerNameText;
};
