(Feat) Add Animation Fps Charater

This commit is contained in:
2026-08-13 22:07:08 +02:00
parent 176beab9fc
commit cca54a5e0d
157 changed files with 850 additions and 148 deletions
@@ -0,0 +1,73 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "SurvivalStatsWidget.generated.h"
class UProgressBar;
class USurvivalStatsComponent;
/**
* Les trois jauges de survie : vie, faim, soif.
*
* Aucun Tick : le widget s'abonne a OnStatsChanged, qui ne se declenche
* qu'une fois par seconde ou lors d'une consommation.
*/
UCLASS(Abstract)
class EMBERWILD_API USurvivalStatsWidget : public UUserWidget
{
GENERATED_BODY()
public:
virtual void NativeConstruct() override;
virtual void NativeDestruct() override;
UFUNCTION(BlueprintCallable, Category = "Survie")
void Refresh();
/** (Re)branche sur les stats du pawn possede. Voir UInventoryWidget. */
void BindToOwningPawn();
protected:
/** A nommer exactement "HealthBar", "HungerBar" et "ThirstBar". */
UPROPERTY(meta = (BindWidget))
TObjectPtr<UProgressBar> HealthBar;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UProgressBar> HungerBar;
UPROPERTY(meta = (BindWidget))
TObjectPtr<UProgressBar> ThirstBar;
/** En dessous de ce ratio, la barre passe en couleur d'alerte. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Survie", meta = (ClampMin = "0", ClampMax = "1"))
float CriticalThreshold = 0.2f;
/** Couleur d'alerte, commune aux trois jauges. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Survie")
FLinearColor CriticalColor = FLinearColor(0.9f, 0.1f, 0.1f, 1.f);
private:
UFUNCTION()
void HandleStatsChanged();
USurvivalStatsComponent* ResolveStats() const;
/** Applique le remplissage et la couleur d'une barre. */
void ApplyBar(UProgressBar* Bar, float Percent, const FLinearColor& BaseColor) const;
TWeakObjectPtr<USurvivalStatsComponent> BoundStats;
/**
* Couleurs d'origine relevees au NativeConstruct.
*
* On les capture depuis les widgets eux-memes plutot que de les redeclarer
* en C++ : la palette reste entierement dans le Designer, et le code ne
* fait que basculer vers l'alerte puis revenir.
*/
FLinearColor HealthBaseColor = FLinearColor::White;
FLinearColor HungerBaseColor = FLinearColor::White;
FLinearColor ThirstBaseColor = FLinearColor::White;
};