- Renomeia ~50 classes UCLASS/USTRUCT/UENUM/UINTERFACE pra Zeus* (AZeusGameMode, AZeusCharacter, UZeusGameInstance, IZeusEntityInterface, UZeusWorldSubsystem, FZeusEntitySnapshot, etc.) - Encurta AZMMOPlayerCharacter -> AZeusCharacter - Renomeia módulos satélite ZMMOAttributes -> ZeusAttributes e ZMMOJobs -> ZeusJobs (pasta + .Build.cs + .uproject) - Mantém módulo principal ZMMO (renomeia depois quando jogo ganhar nome) - DefaultEngine.ini: ActiveClassRedirects ZMMOX -> ZeusX (preserva BPs/assets) - DefaultGame.ini: sections atualizadas pra ZeusThemeSubsystem/ZeusPlayerState - Category="ZMMO|..." -> "Zeus|..." em UPROPERTYs - Preserva LogZMMO, ZMMO_API, /Script/ZMMO., /Game/ZMMO/, classes Target Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
77 lines
2.8 KiB
C++
77 lines
2.8 KiB
C++
#pragma once
|
|
|
|
#include "Blueprint/UserWidget.h"
|
|
#include "CoreMinimal.h"
|
|
#include "ZeusAttributeTypes.h"
|
|
#include "ZeusHudHpSpWidget.generated.h"
|
|
|
|
class UProgressBar;
|
|
class UTextBlock;
|
|
|
|
/**
|
|
* Sub-widget do HUD: barras de HP/SP + label de level. Sem auto-bind no
|
|
* AttributeComponent — o parent (`UZeusHudWidget`) propaga snapshots via
|
|
* `ApplySnapshot` / `ApplyHpSpDelta` quando o player local recebe updates.
|
|
*
|
|
* Composicao do HUD (ver `UZeusHudWidget`):
|
|
* WBP_HUD (UZeusHudWidget root)
|
|
* |-- HpSpBar (UZeusHudHpSpWidget — este)
|
|
* |-- PlayerInfo (futuro — nome/job/level)
|
|
* |-- Minimap (futuro)
|
|
* |-- QuickBar (futuro — hotkeys)
|
|
* |-- Buffs (futuro — icones SC)
|
|
* |-- Chat (futuro)
|
|
* |-- TargetInfo (futuro — mob/player targetado)
|
|
*
|
|
* Cada sub-widget tem responsabilidade unica (SRP). O parent (UZeusHudWidget)
|
|
* faz binding com AttributeComponent e propaga deltas.
|
|
*
|
|
* Convencao `meta=(BindWidget)`: o WBP filho deve ter widgets com nomes
|
|
* exatos (HpBar, SpBar). `BindWidgetOptional` permite omitir.
|
|
*/
|
|
UCLASS(Abstract, Blueprintable, BlueprintType)
|
|
class ZEUSATTRIBUTES_API UZeusHudHpSpWidget : public UUserWidget
|
|
{
|
|
GENERATED_BODY()
|
|
|
|
public:
|
|
/** Atualiza todos os campos a partir do snapshot. Chamado pelo UZeusHudWidget. */
|
|
UFUNCTION(BlueprintCallable, Category = "Zeus|HUD")
|
|
void ApplySnapshot(const FZeusAttributesSnapshot& Snapshot);
|
|
|
|
/** Atualiza apenas HP/SP (sem mexer no level/text). Otimizacao do tick. */
|
|
UFUNCTION(BlueprintCallable, Category = "Zeus|HUD")
|
|
void ApplyHpSp(int32 Hp, int32 MaxHp, int32 Sp, int32 MaxSp);
|
|
|
|
protected:
|
|
/**
|
|
* Hook BlueprintNativeEvent para skin visual reagir a um snapshot novo
|
|
* (cores, animacao de level up, etc.). Impl default em C++ apenas
|
|
* atualiza progress bars + textos via BindWidget/BindWidgetOptional.
|
|
*/
|
|
UFUNCTION(BlueprintNativeEvent, Category = "Zeus|HUD")
|
|
void OnSnapshotApplied(const FZeusAttributesSnapshot& Snapshot);
|
|
virtual void OnSnapshotApplied_Implementation(const FZeusAttributesSnapshot& Snapshot);
|
|
|
|
// === BindWidget — devem existir no WBP com EXATAMENTE estes nomes ===
|
|
UPROPERTY(BlueprintReadOnly, meta = (BindWidget), Category = "Zeus|HUD")
|
|
UProgressBar* HpBar = nullptr;
|
|
|
|
UPROPERTY(BlueprintReadOnly, meta = (BindWidget), Category = "Zeus|HUD")
|
|
UProgressBar* SpBar = nullptr;
|
|
|
|
UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional), Category = "Zeus|HUD")
|
|
UTextBlock* HpText = nullptr;
|
|
|
|
UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional), Category = "Zeus|HUD")
|
|
UTextBlock* SpText = nullptr;
|
|
|
|
UPROPERTY(BlueprintReadOnly, meta = (BindWidgetOptional), Category = "Zeus|HUD")
|
|
UTextBlock* LevelText = nullptr;
|
|
|
|
private:
|
|
/// Ultimo snapshot recebido (cache pra ApplyHpSp manter MaxHp/MaxSp). */
|
|
UPROPERTY(Transient)
|
|
FZeusAttributesSnapshot LastSnapshot;
|
|
};
|