We are now using udp again

This commit is contained in:
Jocke
2016-03-07 16:06:10 +01:00
parent 078d6eb712
commit 68a88ed756
4 changed files with 60 additions and 58 deletions
+42 -42
View File
@@ -47,19 +47,19 @@ void Server::Update()
}
}
//PlayerDefinition pd;
//while (m_Unreliable.IsSocketAvailable()) {
// // Packet will get real data in receive
// Packet packet(MessageType::Invalid);
// m_Unreliable.Receive(packet, pd);
// m_Address = pd.Endpoint.address();
// m_Port = pd.Endpoint.port();
// if (packet.GetMessageType() == MessageType::Connect) {
// parseUDPConnect(packet);
// } else {
// parseMessageType(packet);
// }
//}
PlayerDefinition pd;
while (m_Unreliable.IsSocketAvailable()) {
// Packet will get real data in receive
Packet packet(MessageType::Invalid);
m_Unreliable.Receive(packet, pd);
m_Address = pd.Endpoint.address();
m_Port = pd.Endpoint.port();
if (packet.GetMessageType() == MessageType::Connect) {
parseUDPConnect(packet);
} else {
parseMessageType(packet);
}
}
while (m_ServerlistRequest.IsSocketAvailable()) {
Packet packet(MessageType::Invalid);
@@ -164,7 +164,7 @@ void Server::unreliableBroadcast(Packet& packet)
{
for (auto& kv : m_ConnectedPlayers) {
packet.ChangePacketID(kv.second.PacketID);
// m_Unreliable.Send(packet, kv.second);
m_Unreliable.Send(packet, kv.second);
}
}
@@ -174,7 +174,7 @@ void Server::sendSnapshot()
Packet packet(MessageType::Snapshot);
addInputCommandsToPacket(packet);
addPlayersToPacket(packet, EntityID_Invalid);
reliableBroadcast(packet);
unreliableBroadcast(packet);
}
void Server::addInputCommandsToPacket(Packet& packet)
@@ -322,30 +322,30 @@ void Server::checkForTimeOuts()
}
}
//void Server::parseUDPConnect(Packet & packet)
//{
// Pop packetSize, sequenceNumber and packetsInSequence.
//packet.ReadPrimitive<int>();
//packet.ReadPrimitive<int>();
//packet.ReadPrimitive<int>();
// int messageType = packet.ReadPrimitive<int>();
// // Read packet ID
// m_PreviousPacketID = m_PacketID; // Set previous packet id
// m_PacketID = packet.ReadPrimitive<int>(); //Read new packet id
// // parse player id and other stuff
// PlayerID playerID = packet.ReadPrimitive<int>();
// if (!EntityWrapper(m_World, playerID).Valid()) {
//
// }
// // Do something here?
// boost::asio::ip::udp::endpoint endpoint(m_Address, m_Port);
// m_ConnectedPlayers.at(playerID).Endpoint = endpoint;
// LOG_INFO("parseUDPConnect: Spectator \"%s\" connected on IP: %s", m_ConnectedPlayers.at(playerID).Name.c_str(), m_ConnectedPlayers.at(playerID).Endpoint.address().to_string().c_str());
// // Send a message to the player that connected
// Packet connnectPacket(MessageType::Connect, m_ConnectedPlayers.at(playerID).PacketID);
// m_Unreliable.Send(connnectPacket);
// LOG_INFO("UDP Connect sent to client");
//}
void Server::parseUDPConnect(Packet & packet)
{
//Pop packetSize, sequenceNumber and packetsInSequence.
packet.ReadPrimitive<int>();
packet.ReadPrimitive<int>();
packet.ReadPrimitive<int>();
int messageType = packet.ReadPrimitive<int>();
// Read packet ID
m_PreviousPacketID = m_PacketID; // Set previous packet id
m_PacketID = packet.ReadPrimitive<int>(); //Read new packet id
// parse player id and other stuff
PlayerID playerID = packet.ReadPrimitive<int>();
if (!EntityWrapper(m_World, playerID).Valid()) {
}
// Do something here?
boost::asio::ip::udp::endpoint endpoint(m_Address, m_Port);
m_ConnectedPlayers.at(playerID).Endpoint = endpoint;
LOG_INFO("parseUDPConnect: Spectator \"%s\" connected on IP: %s", m_ConnectedPlayers.at(playerID).Name.c_str(), m_ConnectedPlayers.at(playerID).Endpoint.address().to_string().c_str());
// Send a message to the player that connected
Packet connnectPacket(MessageType::Connect, m_ConnectedPlayers.at(playerID).PacketID);
m_Unreliable.Send(connnectPacket);
LOG_INFO("UDP Connect sent to client");
}
void Server::parseTCPConnect(Packet & packet)
{
@@ -656,9 +656,9 @@ bool Server::shouldSendToClient(EntityWrapper childEntity)
return true;
}
}
return childEntity.HasComponent("Player")
return childEntity.HasComponent("Player")
|| childEntity.FirstParentWithComponent("Player").Valid()
|| childEntity.HasComponent("CapturePoint")
|| childEntity.HasComponent("CapturePoint")
|| childEntity.HasComponent("HealthPickup")
|| childEntity.HasComponent("AmmoPickup")
|| childEntity.HasComponent("ScoreScreen")
@@ -681,7 +681,7 @@ PlayerID Server::getPlayerIDFromEndpoint()
PlayerID Server::getPlayerIDFromEntityID(EntityID entityID)
{
for(auto& kv : m_ConnectedPlayers) {
for (auto& kv : m_ConnectedPlayers) {
if (entityID == kv.second.EntityID) {
return kv.first;
}