Die Sprint-Funktionalität wurde in `AKingshearthLegacyCharacter` implementiert, einschließlich neuer Methoden (`StartSprint`, `StopSprint`, `Tick`) und Eigenschaften (`SprintSpeedMultiplier`, `SprintStaminaDrainRate`, etc.). Die Eingabeverarbeitung wurde entsprechend erweitert. Eine neue `UStaminaComponent` wurde hinzugefügt, die Ausdauer, Fatigue und Regeneration verwaltet. Ereignisse wie `OnStaminaChanged` und `OnExhausted` ermöglichen die Überwachung von Änderungen. Die Benutzeroberfläche wurde angepasst: `UPlayerHUDWidget` und `UStaminaBarWidget` unterstützen nun die Anzeige der Ausdauer. Alte, fest codierte Werte wurden entfernt, und die Widgets sind nun dynamisch an die `StaminaComponent` gebunden. Zusätzlich wurden Änderungen an `.uasset`-Dateien vorgenommen, um die neuen Mechaniken in Unreal Engine zu unterstützen.
47 lines
1.3 KiB
C++
47 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "UI/StatBarWidget.h"
|
|
#include "StaminaBarWidget.generated.h"
|
|
|
|
class UStaminaComponent;
|
|
|
|
/**
|
|
* Stat bar bound to a live UStaminaComponent. Call InitializeStaminaBar once the
|
|
* component is known (typically from the owning PlayerController on possession),
|
|
* mirroring UHealthBarWidget::InitializeHealthBar.
|
|
*/
|
|
UCLASS(abstract)
|
|
class UStaminaBarWidget : public UStatBarWidget
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
UFUNCTION(BlueprintCallable, Category = "Stamina")
|
|
void InitializeStaminaBar(UStaminaComponent* InStaminaComponent);
|
|
|
|
UFUNCTION(BlueprintCallable, Category = "Fatigue")
|
|
void SetFatigue(float NewFatigue);
|
|
|
|
UFUNCTION(BlueprintPure, Category = "Fatigue")
|
|
float GetFatigue() const { return Fatigue; }
|
|
|
|
protected:
|
|
UFUNCTION()
|
|
void HandleStaminaChanged(float NewStamina);
|
|
|
|
UFUNCTION()
|
|
void HandleFatigueChanged(float NewFatigue);
|
|
|
|
/** Hook for Blueprint-side fatigue visuals (e.g. a darkened "locked" portion of the bar). */
|
|
UFUNCTION(BlueprintImplementableEvent, Category = "Fatigue")
|
|
void OnFatigueChanged(float NewFatigue);
|
|
|
|
UPROPERTY(BlueprintReadOnly, Category = "Stamina")
|
|
TObjectPtr<UStaminaComponent> StaminaComponent;
|
|
|
|
/** 0-1 exhaustion amount. Drives the bar's penalty segment via SetPenaltyPercent. */
|
|
UPROPERTY(BlueprintReadOnly, Category = "Fatigue")
|
|
float Fatigue = 0.0f;
|
|
};
|