Files
ZMMO/Source/ZMMO/Game/UI/FrontEnd/UIActivatableScreen_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

78 lines
2.6 KiB
C++

#pragma once
#include "CoreMinimal.h"
#include "CommonActivatableWidget.h"
#include "Engine/EngineBaseTypes.h"
#include "UIActivatableScreen_Base.generated.h"
/**
* Modo de input desejado pela tela (espelha o padrão do Lyra). O
* UUIActivatableScreen_Base converte isto num FUIInputConfig em
* GetDesiredInputConfig.
*/
UENUM(BlueprintType)
enum class EZeusScreenInputMode : uint8
{
Default, // não força nada (herda do CommonUI)
GameAndMenu, // jogo + UI (ex.: HUD com cursor)
Game, // só jogo
Menu // só UI (telas de front-end — default)
};
/**
* Base de TODAS as telas de front-end (Boot/Login/ServerSelect/Lobby/…).
*
* Fundação CommonUI (UCommonActivatableWidget) cuida de
* ativação/foco/voltar/stack. Camada Abstract; o WBP concreto herda DIRETO
* desta classe C++ (UMG não encadeia árvores — ARQUITETURA.md §3.3). Os WBPs
* gerados pelo Zeus UMG Forge são reparented para cá (§4.8).
*
* Reage à troca de tema via UZeusThemeSubsystem (mesmo padrão de
* UUIButton_Base) e encaminha o "voltar" ao UUIFrontEndFlowSubsystem.
*/
UCLASS(Abstract, Blueprintable)
class ZMMO_API UUIActivatableScreen_Base : public UCommonActivatableWidget
{
GENERATED_BODY()
public:
/** Re-resolve os tokens do tema ativo e reaplica. WBP/filho sobrescreve. */
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "UI Style")
void RefreshUIStyle();
virtual void RefreshUIStyle_Implementation();
protected:
// ---- Input config (desktop/gamepad) ----
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Input")
EZeusScreenInputMode InputConfig = EZeusScreenInputMode::Menu;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Input")
EMouseCaptureMode GameMouseCaptureMode = EMouseCaptureMode::CapturePermanently;
virtual TOptional<FUIInputConfig> GetDesiredInputConfig() const override;
// ---- Lifecycle (espelha o hook de tema de UUIButton_Base) ----
virtual void NativeConstruct() override;
virtual void NativeDestruct() override;
virtual void NativeOnActivated() override;
virtual void NativeOnDeactivated() override;
/** "Voltar" (Esc/B): encaminha ao UUIFrontEndFlowSubsystem::RequestBack. */
virtual bool NativeOnHandleBackAction() override;
/** Hooks Blueprint para o WBP refinado. */
UFUNCTION(BlueprintImplementableEvent, Category = "UI",
meta = (DisplayName = "On Screen Activated"))
void BP_OnScreenActivated();
UFUNCTION(BlueprintImplementableEvent, Category = "UI",
meta = (DisplayName = "On Screen Deactivated"))
void BP_OnScreenDeactivated();
private:
UFUNCTION()
void HandleThemeChanged(FName NewThemeId);
bool bThemeBound = false;
};