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>
This commit is contained in:
2026-06-02 17:24:38 -03:00
parent bd1dab25ca
commit 6a6a28a086
128 changed files with 1224 additions and 1210 deletions

View File

@@ -0,0 +1,89 @@
#include "ZeusJobsLibrary.h"
#include "Engine/GameInstance.h"
#include "Engine/World.h"
#include "ZeusJobDataAsset.h"
#include "ZeusJobsSubsystem.h"
#include "ZeusNetworkSubsystem.h"
namespace
{
/// Resolve Subsystem via WorldContextObject. Retorna nullptr em contextos
/// invalidos (CDO em editor, world em destruicao).
UZeusJobsSubsystem* ResolveSubsystem(const UObject* WorldContextObject)
{
if (WorldContextObject == nullptr) { return nullptr; }
const UWorld* World = WorldContextObject->GetWorld();
if (World == nullptr) { return nullptr; }
UGameInstance* GI = World->GetGameInstance();
if (GI == nullptr) { return nullptr; }
return GI->GetSubsystem<UZeusJobsSubsystem>();
}
} // namespace
FText UZeusJobsLibrary::GetJobDisplayName(const UObject* WorldContextObject, int32 ClassId)
{
if (UZeusJobsSubsystem* Sub = ResolveSubsystem(WorldContextObject))
{
if (UZeusJobDataAsset* Job = Sub->GetJobData(ClassId))
{
return Job->DisplayName.IsEmpty()
? FText::FromString(Job->TechnicalName)
: Job->DisplayName;
}
}
// Fallback: nao crasha UI se ClassId desconhecido.
return FText::FromString(FString::Printf(TEXT("Classe %d"), ClassId));
}
UZeusJobDataAsset* UZeusJobsLibrary::GetJobData(const UObject* WorldContextObject, int32 ClassId)
{
if (UZeusJobsSubsystem* Sub = ResolveSubsystem(WorldContextObject))
{
return Sub->GetJobData(ClassId);
}
return nullptr;
}
bool UZeusJobsLibrary::IsJobRegistered(const UObject* WorldContextObject, int32 ClassId)
{
if (UZeusJobsSubsystem* Sub = ResolveSubsystem(WorldContextObject))
{
return Sub->GetJobData(ClassId) != nullptr;
}
return false;
}
TArray<UZeusJobDataAsset*> UZeusJobsLibrary::GetJobsByTier(
const UObject* WorldContextObject, EZeusJobTier Tier)
{
if (UZeusJobsSubsystem* Sub = ResolveSubsystem(WorldContextObject))
{
return Sub->GetJobsByTier(Tier);
}
return {};
}
TArray<UZeusJobDataAsset*> UZeusJobsLibrary::GetEligibleNextJobs(
const UObject* WorldContextObject, int32 CurrentClassId)
{
if (UZeusJobsSubsystem* Sub = ResolveSubsystem(WorldContextObject))
{
return Sub->GetEligibleNextJobs(CurrentClassId);
}
return {};
}
void UZeusJobsLibrary::SendJobChangeRequest(
const UObject* WorldContextObject, int32 TargetClassId)
{
if (WorldContextObject == nullptr) { return; }
const UWorld* World = WorldContextObject->GetWorld();
if (World == nullptr) { return; }
UGameInstance* GI = World->GetGameInstance();
if (GI == nullptr) { return; }
if (UZeusNetworkSubsystem* Net = GI->GetSubsystem<UZeusNetworkSubsystem>())
{
Net->SendJobChangeRequest(TargetClassId);
}
}