Files
ZMMO/Source/ZMMO/Game/Modes/ZeusGameInstance.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

70 lines
2.2 KiB
C++

#pragma once
#include "CoreMinimal.h"
#include "Engine/GameInstance.h"
#include "ZeusGameInstance.generated.h"
class UZeusNetworkSubsystem;
/**
* UZeusGameInstance
*
* Game instance do cliente Zeus MMO. O `UZeusNetworkSubsystem` (do plugin
* `ZeusNetwork`) e um `UGameInstanceSubsystem` e portanto e criado
* automaticamente em qualquer `UGameInstance`; esta classe existe sobretudo
* como ponto de extensao para:
*
* - Auto-connect ao servidor Zeus em `Init()` (`bAutoConnectOnStart`).
* - Expor a configuracao default (`Host`, `Port`) ao Project Settings.
* - Hooks de logout / shutdown limpos em `Shutdown()`.
*
* Marcada `Blueprintable, BlueprintType` para permitir um BP filho com
* overrides de configuracao por build (dev / staging / prod).
*/
UCLASS(Blueprintable, BlueprintType)
class ZMMO_API UZeusGameInstance : public UGameInstance
{
GENERATED_BODY()
public:
virtual void Init() override;
virtual void Shutdown() override;
/**
* Se `true`, tenta ligar ao servidor Zeus em `Init()` usando
* `ZeusServerHost`/`ZeusServerPort`. Default `false`: a conexao agora e
* dirigida pelo `UUIFrontEndFlowSubsystem` (fluxo Boot→Connecting→Login).
* Pôr `true` apenas para smoke test legado sem front-end.
*/
UPROPERTY(EditAnywhere, BlueprintReadWrite, Config, Category = "Zeus|Network")
bool bAutoConnectOnStart = false;
/** Host (IPv4 ou hostname) do servidor Zeus. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Config, Category = "Zeus|Network")
FString ZeusServerHost = TEXT("127.0.0.1");
/** Porta UDP do servidor Zeus (1..65535). */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Config, Category = "Zeus|Network", meta = (ClampMin = "1", ClampMax = "65535"))
int32 ZeusServerPort = 27777;
protected:
/** Devolve o subsystem Zeus desta game instance (criado automaticamente pelo plugin). */
UFUNCTION(BlueprintPure, Category = "Zeus|Network")
UZeusNetworkSubsystem* GetZeusNetwork() const;
void BindZeusDelegates(UZeusNetworkSubsystem* Zeus);
void UnbindZeusDelegates(UZeusNetworkSubsystem* Zeus);
UFUNCTION()
void HandleZeusConnected();
UFUNCTION()
void HandleZeusConnectionFailed(FString Reason);
UFUNCTION()
void HandleZeusDisconnected();
UFUNCTION()
void HandleZeusNetworkLog(FString Message);
};