Files
ZMMO/Source/ZMMO/Game/Modes/ZMMOGameInstance.cpp
Mateus Rodrigues f832c1a4df fix(log): remove HandleZeusNetworkLog forwarder (duplicava LogZMMO)
UZMMOGameInstance assinava OnNetworkLog do plugin e re-logava em LogZMMO
com prefix [Zeus]. Resultado: cada linha do plugin aparecia 2x no console
(LogZeusNetwork + LogZMMO). Era diagnostico inicial da fase de bring-up
(sessao 2026-05-07); agora so' polui o log.

Bind removido em BindZeusDelegates. Funcao HandleZeusNetworkLog mantida no
.h/.cpp (UFUNCTION dynamic delegate target) com comentario explicando como
reativar via descomentar a linha do AddDynamic.

Plugin continua logando em LogZeusNetwork (console) + Saved/Logs/ZeusNetwork/
(arquivo proprio) — diagnostico nao foi perdido, so' deduplicado.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 01:36:34 -03:00

98 lines
2.6 KiB
C++

#include "ZMMOGameInstance.h"
#include "ZMMO.h"
#include "ZeusNetworkSubsystem.h"
void UZMMOGameInstance::Init()
{
Super::Init();
UE_LOG(LogZMMO, Log, TEXT("ZMMOGameInstance::Init AutoConnect=%s Host=%s Port=%d"),
bAutoConnectOnStart ? TEXT("true") : TEXT("false"),
*ZeusServerHost,
ZeusServerPort);
UZeusNetworkSubsystem* ZeusNet = GetZeusNetwork();
if (!ZeusNet)
{
UE_LOG(LogZMMO, Warning, TEXT("ZMMOGameInstance: ZeusNetworkSubsystem unavailable; ZeusNetwork plugin enabled?"));
return;
}
BindZeusDelegates(ZeusNet);
if (!bAutoConnectOnStart)
{
return;
}
ZeusNet->ConnectToZeusServer(ZeusServerHost, ZeusServerPort);
}
void UZMMOGameInstance::Shutdown()
{
if (UZeusNetworkSubsystem* ZeusNet = GetZeusNetwork())
{
UnbindZeusDelegates(ZeusNet);
if (ZeusNet->IsConnected())
{
ZeusNet->DisconnectFromZeusServer();
}
}
Super::Shutdown();
}
UZeusNetworkSubsystem* UZMMOGameInstance::GetZeusNetwork() const
{
return GetSubsystem<UZeusNetworkSubsystem>();
}
void UZMMOGameInstance::BindZeusDelegates(UZeusNetworkSubsystem* Zeus)
{
if (!Zeus)
{
return;
}
Zeus->OnConnected.AddDynamic(this, &UZMMOGameInstance::HandleZeusConnected);
Zeus->OnConnectionFailed.AddDynamic(this, &UZMMOGameInstance::HandleZeusConnectionFailed);
Zeus->OnDisconnected.AddDynamic(this, &UZMMOGameInstance::HandleZeusDisconnected);
// OnNetworkLog: NAO assinamos. Plugin ja loga em LogZeusNetwork (console)
// + arquivo proprio em Saved/Logs/ZeusNetwork/. Forwarding em LogZMMO era
// diagnostico inicial (sessao 2026-05-07); agora gera duplicacao de cada
// linha. Remova esta nota e descomente abaixo se quiser ver no LogZMMO:
// Zeus->OnNetworkLog.AddDynamic(this, &UZMMOGameInstance::HandleZeusNetworkLog);
}
void UZMMOGameInstance::UnbindZeusDelegates(UZeusNetworkSubsystem* Zeus)
{
if (!Zeus)
{
return;
}
Zeus->OnConnected.RemoveDynamic(this, &UZMMOGameInstance::HandleZeusConnected);
Zeus->OnConnectionFailed.RemoveDynamic(this, &UZMMOGameInstance::HandleZeusConnectionFailed);
Zeus->OnDisconnected.RemoveDynamic(this, &UZMMOGameInstance::HandleZeusDisconnected);
// OnNetworkLog: nao foi assinado (ver BindZeusDelegates) — nada a remover.
}
void UZMMOGameInstance::HandleZeusConnected()
{
UE_LOG(LogZMMO, Log, TEXT("[Zeus] Connected to server %s:%d"), *ZeusServerHost, ZeusServerPort);
}
void UZMMOGameInstance::HandleZeusConnectionFailed(FString Reason)
{
UE_LOG(LogZMMO, Warning, TEXT("[Zeus] Connection failed: %s"), *Reason);
}
void UZMMOGameInstance::HandleZeusDisconnected()
{
UE_LOG(LogZMMO, Log, TEXT("[Zeus] Disconnected."));
}
void UZMMOGameInstance::HandleZeusNetworkLog(FString Message)
{
UE_LOG(LogZMMO, Log, TEXT("[Zeus] %s"), *Message);
}