2025-07-07 09:33:56 +08:00

54 lines
1.3 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#include "Widget/CharacterWindow.h"
#include "AIGC.h"
#include "WebSocketManager.h"
void SCharacterWindow::Construct(const FArguments& InArgs)
{
// 注册绘制后回调
RegisterActiveTimer(0.f,
FWidgetActiveTimerDelegate::CreateSP(
this,
&SCharacterWindow::OnPostPaint
)
);
}
EActiveTimerReturnType SCharacterWindow::OnPostPaint(double X, float Arg)
{
//init websocket
FAIGCModule* ModulePtr = FModuleManager::GetModulePtr<FAIGCModule>("AIGC");
if (ModulePtr)
{
UWebSocketManager* WebSocketManager = ModulePtr->GetWebSocketManager();
if (!WebSocketManager)
{
ModulePtr->InitWebSocketManager();
WebSocketManager = ModulePtr->GetWebSocketManager();
}
else
{
WebSocketManager->SendData(FNetCommand::CharacterList, TEXT(""));
}
WebSocketManager->OnDataReceiveDelaget.AddRaw(this, &SCharacterWindow::HandleReceiveData);
WebSocketManager->OnConnectDelegate.AddLambda([this, WebSocketManager](bool bSuccess)
{
WebSocketManager->SendData(FNetCommand::CharacterList, TEXT(""));
});
}
return EActiveTimerReturnType::Stop;
}
void SCharacterWindow::HandleReceiveData(FNetProtocol protocol)
{
if (protocol.cmd == FNetCommand::CharacterList)
{
//刷新角色列表
}
}