????
This commit is contained in:
@@ -49,16 +49,16 @@ void Client::Connect(std::string address, int port)
|
||||
void Client::Update()
|
||||
{
|
||||
m_EventBroker->Process<Client>();
|
||||
while (m_Unreliable.IsSocketAvailable()) {
|
||||
// Packet will get real data in receive
|
||||
Packet packet(MessageType::Invalid);
|
||||
m_Unreliable.Receive(packet);
|
||||
if (packet.GetMessageType() == MessageType::Connect) {
|
||||
parseUDPConnect(packet);
|
||||
} else {
|
||||
parseMessageType(packet);
|
||||
}
|
||||
}
|
||||
//while (m_Unreliable.IsSocketAvailable()) {
|
||||
// // Packet will get real data in receive
|
||||
// Packet packet(MessageType::Invalid);
|
||||
// m_Unreliable.Receive(packet);
|
||||
// if (packet.GetMessageType() == MessageType::Connect) {
|
||||
// parseUDPConnect(packet);
|
||||
// } else {
|
||||
// parseMessageType(packet);
|
||||
// }
|
||||
//}
|
||||
while (m_Reliable.IsSocketAvailable()) {
|
||||
// Packet will get real data in receive
|
||||
Packet packet(MessageType::Invalid);
|
||||
@@ -177,8 +177,8 @@ void Client::parseTCPConnect(Packet& packet)
|
||||
Packet UnreliablePacket(MessageType::Connect, m_SendPacketID);
|
||||
// Add player id and other stuff
|
||||
packet.WritePrimitive(m_PlayerID);
|
||||
m_Unreliable.Send(packet);
|
||||
LOG_INFO("Sent UDP Connect Server");
|
||||
// m_Unreliable.Send(packet);
|
||||
// LOG_INFO("Sent UDP Connect Server");
|
||||
}
|
||||
|
||||
void Client::parsePlayerConnected(Packet & packet)
|
||||
@@ -476,7 +476,7 @@ bool Client::OnInputCommand(const Events::InputCommand & e)
|
||||
if (e.Command == "ConnectToServer") { // Connect for now
|
||||
if (e.Value > 0) {
|
||||
m_Reliable.Connect(m_PlayerName, m_Address, m_Port);
|
||||
m_Unreliable.Connect(m_PlayerName, m_Address, m_Port);
|
||||
// m_Unreliable.Connect(m_PlayerName, m_Address, m_Port);
|
||||
}
|
||||
//LOG_DEBUG("Client::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID);
|
||||
return true;
|
||||
@@ -613,7 +613,7 @@ void Client::sendLocalPlayerTransform()
|
||||
packet.WritePrimitive((int)cAssaultWeapon["Ammo"]);
|
||||
}
|
||||
|
||||
m_Unreliable.Send(packet);
|
||||
m_Reliable.Send(packet);
|
||||
}
|
||||
|
||||
void Client::identifyPacketLoss()
|
||||
|
||||
@@ -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);
|
||||
@@ -162,7 +162,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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ void Server::sendSnapshot()
|
||||
Packet packet(MessageType::Snapshot);
|
||||
addInputCommandsToPacket(packet);
|
||||
addPlayersToPacket(packet, EntityID_Invalid);
|
||||
unreliableBroadcast(packet);
|
||||
reliableBroadcast(packet);
|
||||
}
|
||||
|
||||
void Server::addInputCommandsToPacket(Packet& packet)
|
||||
@@ -320,25 +320,28 @@ void Server::checkForTimeOuts()
|
||||
}
|
||||
}
|
||||
|
||||
void Server::parseUDPConnect(Packet & packet)
|
||||
{
|
||||
// Pop size of message 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>();
|
||||
// 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 size of message 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)
|
||||
{
|
||||
|
||||
@@ -21,33 +21,38 @@ void UDPServer::Send(Packet& packet, PlayerDefinition & playerDefinition)
|
||||
boost::asio::buffer(packet.Data(), packet.Size()),
|
||||
playerDefinition.Endpoint,
|
||||
0);
|
||||
LOG_INFO("Size of packet is %i", bytesSent);
|
||||
} catch (const boost::system::system_error& e) {
|
||||
LOG_INFO(e.what());
|
||||
// TODO: Clean up invalid endpoints out of m_ConnectedPlayers later
|
||||
playerDefinition.Endpoint = boost::asio::ip::udp::endpoint();
|
||||
}
|
||||
|
||||
}
|
||||
// Send back to endpoint of received packet
|
||||
void UDPServer::Send(Packet & packet)
|
||||
{
|
||||
packet.UpdateSize();
|
||||
m_Socket->send_to(
|
||||
size_t bytesSent = m_Socket->send_to(
|
||||
boost::asio::buffer(
|
||||
packet.Data(),
|
||||
packet.Size()),
|
||||
m_ReceiverEndpoint,
|
||||
0);
|
||||
LOG_INFO("Size of packet is %i", bytesSent);
|
||||
}
|
||||
|
||||
// Broadcasting respond specific logic
|
||||
void UDPServer::Send(Packet & packet, boost::asio::ip::udp::endpoint endpoint)
|
||||
{
|
||||
packet.UpdateSize();
|
||||
m_Socket->send_to(
|
||||
size_t bytesSent = m_Socket->send_to(
|
||||
boost::asio::buffer(
|
||||
packet.Data(),
|
||||
packet.Size()),
|
||||
endpoint,
|
||||
0);
|
||||
LOG_INFO("Size of packet is %i", bytesSent);
|
||||
}
|
||||
|
||||
// Broadcasting
|
||||
@@ -55,7 +60,7 @@ void UDPServer::Broadcast(Packet & packet, int port)
|
||||
{
|
||||
packet.UpdateSize();
|
||||
m_Socket->set_option(boost::asio::socket_base::broadcast(true));
|
||||
m_Socket->send_to(
|
||||
size_t bytesSent = m_Socket->send_to(
|
||||
boost::asio::buffer(
|
||||
packet.Data(),
|
||||
packet.Size()),
|
||||
|
||||
Reference in New Issue
Block a user