54 lines
1.3 KiB
C++
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)
|
|
{
|
|
//刷新角色列表
|
|
}
|
|
}
|