diff --git a/include/Engine/Network/EPlayerDisconnected.h b/include/Engine/Network/EPlayerDisconnected.h new file mode 100644 index 00000000..278a7b1f --- /dev/null +++ b/include/Engine/Network/EPlayerDisconnected.h @@ -0,0 +1,18 @@ +#ifndef Events_PlayerDisconnected +#define Events_PlayerDisconnected + +#include "Core/EventBroker.h" +#include "Core/Entity.h" + +namespace Events +{ + +struct PlayerDisconnected : public Event +{ + unsigned int PlayerID; + EntityID Entity; +}; + +} + +#endif diff --git a/include/Engine/Network/Server.h b/include/Engine/Network/Server.h index c4f1bf16..cdbcd357 100644 --- a/include/Engine/Network/Server.h +++ b/include/Engine/Network/Server.h @@ -14,6 +14,7 @@ #include "../Network/Network.h" #include "Input/EInputCommand.h" #include "Core/EPlayerDamage.h" +#include "Network/EPlayerDisconnected.h" class Server : public Network { diff --git a/src/Engine/Network/Server.cpp b/src/Engine/Network/Server.cpp index a8c6ced9..4ccc6a7d 100644 --- a/src/Engine/Network/Server.cpp +++ b/src/Engine/Network/Server.cpp @@ -223,6 +223,11 @@ void Server::disconnect(int i) //broadcast("A player disconnected"); LOG_INFO("User %s disconnected/timed out", m_PlayerDefinitions[i].Name.c_str()); // Remove enteties and stuff (When we can remove entity, remove it and tell clients to remove the copy they have) + Events::PlayerDisconnected e; + e.Entity = m_PlayerDefinitions[i].EntityID; + e.PlayerID = i; + m_EventBroker->Publish(e); + m_PlayerDefinitions[i].Endpoint = boost::asio::ip::udp::endpoint(); m_PlayerDefinitions[i].EntityID = -1; m_PlayerDefinitions[i].Name = "";