Files
Unreal_EmberWild/Source/Survival_projet/Public/InteractionPromptWidget.h
T
Mathew ed7c7fd991 Import initial du projet Survival (UE 5.8)
Boucle de jeu complète : récolte, inventaire, consommation, stats de survie,
mort et respawn. Gameplay en C++, Blueprints réservés au câblage d'assets.

Assets binaires (.uasset, .umap, textures, audio) suivis via Git LFS.
Binaries/, Intermediate/, Saved/ et DerivedDataCache/ sont ignorés :
régénérés au build, ils pèsent 3 Go pour 1,3 Go de contenu utile.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 11:29:07 +02:00

70 lines
2.3 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "InteractionPromptWidget.generated.h"
class UInteractionComponent;
class UTextBlock;
/**
* Affiche "Appuyez sur E pour Ramasser Objet" quand le joueur vise quelque
* chose d'interactif, et se cache sinon.
*
* La classe est Abstract : on ne l'instancie jamais directement, on cree un
* Widget Blueprint (WBP_InteractionPrompt) qui en herite. Le C++ porte la
* logique, le Blueprint porte la mise en page. C'est la separation standard
* en UMG, l'equivalent d'un prefab d'UI avec son script en Unity.
*
* Le widget ne fait AUCUN travail par frame : il s'abonne au delegue
* OnFocusChanged du composant d'interaction et ne se met a jour que lorsque
* la cible change reellement.
*/
UCLASS(Abstract)
class SURVIVAL_PROJET_API UInteractionPromptWidget : public UUserWidget
{
GENERATED_BODY()
public:
virtual void NativeConstruct() override;
virtual void NativeDestruct() override;
/** (Re)branche sur le composant d'interaction du pawn possede. */
void BindToOwningPawn();
protected:
/**
* meta = (BindWidget) : Unreal relie automatiquement ce pointeur au widget
* nomme exactement "PromptText" dans le Widget Blueprint enfant. Si tu
* oublies de le creer ou que tu le renommes, le Blueprint refuse de
* compiler avec un message clair -- pas de crash silencieux au runtime.
*/
UPROPERTY(meta = (BindWidget))
TObjectPtr<UTextBlock> PromptText;
/**
* Texte affiche. {0} sera remplace par la touche, {1} par l'action.
* Editable dans le Widget Blueprint pour ajuster la formulation.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Interaction")
FText PromptFormat;
UInteractionPromptWidget(const FObjectInitializer& ObjectInitializer);
private:
/** Appele par le composant d'interaction a chaque changement de cible. */
UFUNCTION()
void HandleFocusChanged(AActor* NewFocus, AActor* OldFocus);
/** Recalcule le texte et la visibilite. */
void Refresh();
/** Nom lisible de la touche actuellement mappee sur l'action Interagir. */
FText GetInteractKeyDisplayName() const;
/** Le composant auquel on est abonne, pour pouvoir se desabonner proprement. */
TWeakObjectPtr<UInteractionComponent> BoundComponent;
};