Files
ZMMO/Source/ZMMO/Game/UI/Widgets/UISpinner_Base.h
Mateus Rodrigues 6a6a28a086 refactor: prefixo ZMMO -> Zeus em classes/módulos C++ do cliente
- 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>
2026-06-02 17:24:38 -03:00

61 lines
1.9 KiB
C++

#pragma once
#include "CoreMinimal.h"
#include "CommonUserWidget.h"
#include "UI/UIStyleTokens.h"
#include "UISpinner_Base.generated.h"
class UCircularThrobber;
/**
* Spinner/throbber indeterminado do ZMMO — mesmo padrão de UUIPanel_Base.
* Fundação CommonUI (UCommonUserWidget). Camada Abstract; o WBP concreto
* (UI_Spinner_Master) herda DIRETO desta classe C++ (UMG não encadeia
* árvores — ARQUITETURA.md §3.3).
*
* Visual data-driven por FUIStyle.Spinner (UZeusThemeSubsystem). C++ aplica
* NumberOfPieces/Period/Radius no UCircularThrobber; cor/brush vão pelo hook
* BP_ApplySpinnerStyle (o WBP tinge a imagem do throbber).
*/
UCLASS(Abstract, Blueprintable)
class ZMMO_API UUISpinner_Base : public UCommonUserWidget
{
GENERATED_BODY()
public:
/** Re-resolve os tokens do tema ativo e reaplica no throbber. */
UFUNCTION(BlueprintCallable, Category = "UI Style")
void RefreshUIStyle();
/**
* Variante visual do spinner (dropdown vem de FUIStyle.Spinner.Colors/
* Layouts no DT_UI_Styles). Data-driven, sem enum fixo.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Spinner",
meta = (GetOptions = "GetVariantOptions"))
FName Variant = TEXT("Default");
UFUNCTION()
TArray<FString> GetVariantOptions() const;
protected:
virtual void NativePreConstruct() override;
virtual void NativeConstruct() override;
virtual void NativeDestruct() override;
/** Hook opcional: o WBP aplica cor/brush do spinner (variante composta). */
UFUNCTION(BlueprintImplementableEvent, Category = "UI Style",
meta = (DisplayName = "Apply Spinner Style"))
void BP_ApplySpinnerStyle(const FUIStyleSpinnerVariant& VariantStyle);
/** Throbber circular (nome esperado no WBP: "Throbber"). */
UPROPERTY(meta = (BindWidgetOptional))
TObjectPtr<UCircularThrobber> Throbber;
private:
UFUNCTION()
void HandleThemeChanged(FName NewThemeId);
bool bThemeBound = false;
};