server state test

This commit is contained in:
2025-08-06 13:55:22 +02:00
parent 599dfa0cee
commit 990c6f078d
12 changed files with 183 additions and 22 deletions

View File

@@ -4,21 +4,26 @@
namespace td {
namespace server {
IServerState::IServerState(IServerSocket& a_Socket) : m_Socket(a_Socket) {
// TODO: don't do it like this
m_Socket.OnConnect.Connect([this](PlayerID a_Player){
OnPlayerJoin(a_Player);
});
m_Socket.OnDisconnect.Connect([this](PlayerID a_Player){
OnPlayerLeave(a_Player);
});
m_Socket.OnReceive.Connect([this](PlayerID a_Player, const protocol::PacketBase& a_Packet){
HandlePacket(a_Player, a_Packet);
});
void IServerState::SetServer(Server* a_Server) {
assert(a_Server);
m_Server = a_Server;
m_Server->m_Socket->OnConnect.Connect(std::bind(&IServerState::OnPlayerJoin, this, std::placeholders::_1));
m_Server->m_Socket->OnDisconnect.Connect(std::bind(&IServerState::OnPlayerLeave, this, std::placeholders::_1));
m_Server->m_Socket->OnReceive.Connect(std::bind(&IServerState::HandlePacket, this, std::placeholders::_1, std::placeholders::_2));
}
IServerState::IServerState() : m_Server(nullptr) {}
IServerState::~IServerState() {
if (!m_Server)
return;
m_Server->m_Socket->OnConnect.Disconnect(std::bind(&IServerState::OnPlayerJoin, this, std::placeholders::_1));
m_Server->m_Socket->OnDisconnect.Disconnect(std::bind(&IServerState::OnPlayerLeave, this, std::placeholders::_1));
m_Server->m_Socket->OnReceive.Disconnect(std::bind(&IServerState::HandlePacket, this, std::placeholders::_1, std::placeholders::_2));
}
void IServerState::SendPacket(PlayerID a_Id, const protocol::PacketBase& a_Packet) {
m_Socket.Send(a_Id, a_Packet);
m_Server->m_Socket->Send(a_Id, a_Packet);
}
void IServerState::SetNewState(const std::shared_ptr<IServerState>& a_NewState) {