diff --git a/src/Network/ClientHandler.cpp b/src/Network/ClientHandler.cpp index 7ee38d6..2f00025 100644 --- a/src/Network/ClientHandler.cpp +++ b/src/Network/ClientHandler.cpp @@ -14,8 +14,8 @@ void Respond(const std::string& MSG, ENetPeer*peer){ enet_peer_send(peer, 0, enet_packet_create(MSG.c_str(), MSG.length() + 1, ENET_PACKET_FLAG_RELIABLE)); } -void SendToAll(ENetHost *server, ENetPeer*peer, const std::string& Data, bool All, bool Reliable){ - std::cout << "Sending to all with the self switch : " << All << std::endl; +void SendToAll(ENetHost *server, ENetPeer*peer,const std::string& Data, bool All, bool Reliable){ + std::cout << "Sending Code " << Data.at(0) << " length:" << Data.length() << " to all with the self switch : " << All << std::endl; for (int i = 0; i < server->connectedPeers; i++) { if (All || &server->peers[i] != peer) { //reliable is 1 unreliable is 8 @@ -30,5 +30,5 @@ void OnConnect(ENetHost *server,ENetPeer*peer){ peer->serverVehicleID[0] = FindID(server,peer); ///TODO: WHAT IF IT IS THE SECOND VEHICLE? std::string ID = "P" + std::to_string(peer->serverVehicleID[0]); enet_peer_send(peer, 0, enet_packet_create (ID.c_str(), ID.length()+1, ENET_PACKET_FLAG_RELIABLE)); - if(Debug)debug("ID : " + std::to_string(peer->serverVehicleID[0])); + if(Debug)debug(peer->Name + " ID : " + std::to_string(peer->serverVehicleID[0])); } diff --git a/src/Network/DataParser.cpp b/src/Network/DataParser.cpp index cf7dc86..a28004d 100644 --- a/src/Network/DataParser.cpp +++ b/src/Network/DataParser.cpp @@ -9,7 +9,7 @@ #include "../logger.h" #include "../Settings.hpp" -void SendToAll(ENetHost *server, ENetPeer*peer, const std::string& Data,bool All, bool Reliable); +void SendToAll(ENetHost *server, ENetPeer*peer,const std::string& Data,bool All, bool Reliable); void Respond(const std::string& MSG, ENetPeer*peer); void VehicleParser(std::string Packet,ENetPeer*peer,ENetHost*server){ @@ -18,7 +18,8 @@ void VehicleParser(std::string Packet,ENetPeer*peer,ENetHost*server){ switch(Code){ //Spawned Destroyed Switched/Moved Reset case 's': if(Data.at(0) == '0'){ - Packet = "Os:"+ peer->Name +":"+std::to_string(peer->serverVehicleID[0])+Packet.substr(4); + Packet = "Os:"+peer->Name+":"+std::to_string(peer->serverVehicleID[0])+Packet.substr(4); + peer->VehicleData = Packet; } SendToAll(server,peer,Packet,true,true); break; @@ -28,13 +29,26 @@ void VehicleParser(std::string Packet,ENetPeer*peer,ENetHost*server){ case 'm': break; case 'r': - SendToAll(server,peer,Packet,true,true); + SendToAll(server,peer,Packet,false,true); break; } } +void SyncVehicles(ENetHost*server,ENetPeer*peer){ + ENetPeer*ENetClient; + for (int i = 0; i < server->connectedPeers; i++) { + ENetClient = &server->peers[i]; + if (ENetClient != peer) { + if(!ENetClient->VehicleData.empty()){ + enet_peer_send(peer, 0, enet_packet_create(ENetClient->VehicleData.c_str(),ENetClient->VehicleData.length()+1,1)); + enet_host_flush(server); + } + } + } +} void ParseData(ENetPacket*packet, ENetPeer*peer, ENetHost*server){ std::string Packet = (char*)packet->data; + if(Packet == "TEST")SyncVehicles(server,peer); char Code = Packet.at(0),SubCode = 0; if(Packet.length() > 1)SubCode = Packet.at(1); switch (Code) { diff --git a/src/Network/Server.cpp b/src/Network/Server.cpp index f757db2..7d543d0 100644 --- a/src/Network/Server.cpp +++ b/src/Network/Server.cpp @@ -61,11 +61,13 @@ void host_server(ENetHost *server) { std::cout << event.peer->Name << " disconnected." << std::endl; // Reset the peer's client information. event.peer->Name.clear(); + event.peer->VehicleData.clear(); break; case ENET_EVENT_TYPE_DISCONNECT_TIMEOUT: std::cout << event.peer->Name << " timed out." << std::endl; event.peer->Name.clear(); + event.peer->VehicleData.clear(); break; case ENET_EVENT_TYPE_NONE: break; } diff --git a/src/Network/enet.hpp b/src/Network/enet.hpp index 36c4344..f4c60db 100644 --- a/src/Network/enet.hpp +++ b/src/Network/enet.hpp @@ -637,6 +637,7 @@ typedef struct _ENetPeer { enet_uint8 incomingSessionID; ENetAddress address; /**< Internet address of the peer */ std::string Name; /**< Application private data, may be freely modified */ + std::string VehicleData; int gameVehicleID[10] = {0}; //added By Anonymous275 int serverVehicleID[10] = {0}; //added By Anonymous275 ENetPeerState state;