diff --git a/include/client/game/WorldClient.h b/include/client/game/WorldClient.h index 3f6814e..41375fe 100644 --- a/include/client/game/WorldClient.h +++ b/include/client/game/WorldClient.h @@ -13,6 +13,7 @@ private: ClientGame* m_Game; public: WorldClient(ClientGame* game); + virtual ~WorldClient(); virtual void HandlePacket(const protocol::WorldBeginDataPacket* packet) override; virtual void HandlePacket(const protocol::WorldDataPacket* packet) override; diff --git a/src/client/Client.cpp b/src/client/Client.cpp index 25b38e8..9e5ea70 100644 --- a/src/client/Client.cpp +++ b/src/client/Client.cpp @@ -41,9 +41,7 @@ void Client::CloseConnection() { m_Game->SetGameState(game::GameState::Disconnected); m_Connexion.CloseConnection(); - - m_Game->Reset(); - m_Game->GetPlayers().clear(); + Reset(); } void Client::Tick(std::uint64_t delta) { diff --git a/src/client/game/WorldClient.cpp b/src/client/game/WorldClient.cpp index 58182e1..03b4e7d 100644 --- a/src/client/game/WorldClient.cpp +++ b/src/client/game/WorldClient.cpp @@ -26,6 +26,10 @@ WorldClient::WorldClient(ClientGame* game) : game::World(game), protocol::Packet GetDispatcher()->RegisterHandler(protocol::PacketType::UpdateMobStates, this); } +WorldClient::~WorldClient() { + GetDispatcher()->UnregisterHandler(this); +} + void WorldClient::HandlePacket(const protocol::WorldBeginDataPacket* packet) { LoadMap(packet); if (m_Game->GetGameState() == game::GameState::Game) { diff --git a/src/server/ServerConnexion.cpp b/src/server/ServerConnexion.cpp index 3a159cd..131245b 100644 --- a/src/server/ServerConnexion.cpp +++ b/src/server/ServerConnexion.cpp @@ -120,7 +120,7 @@ void ServerConnexion::HandlePacket(const protocol::PlayerLoginPacket* packet) { SendPacket(&statePacket); protocol::WorldBeginDataPacket headerDataPacket(m_Server->GetGame().GetWorld()); - protocol::WorldBeginDataPacket dataPacket(m_Server->GetGame().GetWorld()); + protocol::WorldDataPacket dataPacket(m_Server->GetGame().GetWorld()); SendPacket(&headerDataPacket); SendPacket(&dataPacket);