From 0d9e5b647fbfcf3c262987d77d8ce80c087f1eea Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Wed, 6 Aug 2025 14:13:38 +0200 Subject: [PATCH] use SlotGuard --- include/server/IServerState.h | 3 ++- include/td/render/Renderer.h | 7 ++++--- src/server/IServerState.cpp | 14 ++++---------- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/include/server/IServerState.h b/include/server/IServerState.h index ff3365b..5f5f63d 100644 --- a/include/server/IServerState.h +++ b/include/server/IServerState.h @@ -1,13 +1,14 @@ #pragma once #include +#include namespace td { namespace server { class Server; -class IServerState { +class IServerState : public utils::SlotGuard { protected: void SendPacket(PlayerID a_Id, const protocol::PacketBase& a_Packet); void SetNewState(const std::shared_ptr& a_NewState); diff --git a/include/td/render/Renderer.h b/include/td/render/Renderer.h index cb5c23b..e39475d 100644 --- a/include/td/render/Renderer.h +++ b/include/td/render/Renderer.h @@ -4,6 +4,7 @@ #include #include #include +#include namespace td { namespace render { @@ -17,7 +18,7 @@ class BasicRenderer { }; template -class Renderer : public BasicRenderer { +class Renderer : public BasicRenderer, public utils::SlotGuard { protected: std::unique_ptr m_Shader; Camera& m_Camera; @@ -62,12 +63,12 @@ class RenderPipeline { template Renderer::Renderer(Camera& a_Camera) : m_Shader(std::make_unique()), m_Camera(a_Camera) { - a_Camera.OnPerspectiveChange.Connect([this]() { + Connect(a_Camera.OnPerspectiveChange, [this](){ m_Shader->Start(); m_Shader->SetProjectionMatrix(m_Camera.GetProjectionMatrix()); }); - a_Camera.OnViewChange.Connect([this]() { + Connect(a_Camera.OnViewChange, [this]() { m_Shader->Start(); m_Shader->SetViewMatrix(m_Camera.GetViewMatrix()); }); diff --git a/src/server/IServerState.cpp b/src/server/IServerState.cpp index f8c0f06..cdd9f04 100644 --- a/src/server/IServerState.cpp +++ b/src/server/IServerState.cpp @@ -7,20 +7,14 @@ namespace server { 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)); + Connect(m_Server->m_Socket->OnConnect, std::bind(&IServerState::OnPlayerJoin, this, std::placeholders::_1)); + Connect(m_Server->m_Socket->OnDisconnect, std::bind(&IServerState::OnPlayerLeave, this, std::placeholders::_1)); + Connect(m_Server->m_Socket->OnReceive, 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)); -} +IServerState::~IServerState() {} void IServerState::SendPacket(PlayerID a_Id, const protocol::PacketBase& a_Packet) { m_Server->m_Socket->Send(a_Id, a_Packet);