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:
67
Source/ZeusJobs/Private/ZeusJobChangeNetworkHandler.cpp
Normal file
67
Source/ZeusJobs/Private/ZeusJobChangeNetworkHandler.cpp
Normal file
@@ -0,0 +1,67 @@
|
||||
#include "ZeusJobChangeNetworkHandler.h"
|
||||
|
||||
#include "Engine/GameInstance.h"
|
||||
#include "Engine/World.h"
|
||||
#include "ZeusNetworkSubsystem.h"
|
||||
|
||||
DEFINE_LOG_CATEGORY_STATIC(LogZeusJobChange, Log, All);
|
||||
|
||||
bool UZeusJobChangeNetworkHandler::ShouldCreateSubsystem(UObject* Outer) const
|
||||
{
|
||||
// Mesmo criterio do AttributeNetworkHandler — so' em mundos de gameplay
|
||||
// (PIE / standalone in-game). Editor preview / front-end menu nao precisa.
|
||||
const UWorld* World = Cast<UWorld>(Outer);
|
||||
if (World == nullptr) { return false; }
|
||||
return World->WorldType == EWorldType::Game
|
||||
|| World->WorldType == EWorldType::PIE;
|
||||
}
|
||||
|
||||
void UZeusJobChangeNetworkHandler::Initialize(FSubsystemCollectionBase& Collection)
|
||||
{
|
||||
Super::Initialize(Collection);
|
||||
|
||||
if (UZeusNetworkSubsystem* Net = GetZeusNetSubsystem())
|
||||
{
|
||||
JobChangeResultHandle = Net->OnJobChangeResult.AddUObject(
|
||||
this, &UZeusJobChangeNetworkHandler::HandleJobChangeResult);
|
||||
UE_LOG(LogZeusJobChange, Log,
|
||||
TEXT("[ZeusJobChangeNetworkHandler] Bind OnJobChangeResult OK"));
|
||||
}
|
||||
else
|
||||
{
|
||||
UE_LOG(LogZeusJobChange, Warning,
|
||||
TEXT("[ZeusJobChangeNetworkHandler] ZeusNetworkSubsystem indisponivel — bind pulado"));
|
||||
}
|
||||
}
|
||||
|
||||
void UZeusJobChangeNetworkHandler::Deinitialize()
|
||||
{
|
||||
if (UZeusNetworkSubsystem* Net = GetZeusNetSubsystem())
|
||||
{
|
||||
if (JobChangeResultHandle.IsValid())
|
||||
{
|
||||
Net->OnJobChangeResult.Remove(JobChangeResultHandle);
|
||||
JobChangeResultHandle.Reset();
|
||||
}
|
||||
}
|
||||
OnJobChangeResult.Clear();
|
||||
Super::Deinitialize();
|
||||
}
|
||||
|
||||
void UZeusJobChangeNetworkHandler::HandleJobChangeResult(
|
||||
bool bAccepted, int32 Reason, int32 NewClassId)
|
||||
{
|
||||
UE_LOG(LogZeusJobChange, Log,
|
||||
TEXT("[ZeusJobChangeNetworkHandler] S_JOB_CHANGE_RESULT accepted=%d reason=%d newClassId=%d"),
|
||||
bAccepted ? 1 : 0, Reason, NewClassId);
|
||||
OnJobChangeResult.Broadcast(bAccepted, Reason, NewClassId);
|
||||
}
|
||||
|
||||
UZeusNetworkSubsystem* UZeusJobChangeNetworkHandler::GetZeusNetSubsystem() const
|
||||
{
|
||||
const UWorld* World = GetWorld();
|
||||
if (World == nullptr) { return nullptr; }
|
||||
UGameInstance* GI = World->GetGameInstance();
|
||||
if (GI == nullptr) { return nullptr; }
|
||||
return GI->GetSubsystem<UZeusNetworkSubsystem>();
|
||||
}
|
||||
Reference in New Issue
Block a user