Added logic for mapping between ServerEntityIDs and LocalEntityIDs removed old code that wasn't used.

Added 1 map to Client and renamed m_ServerToClientMap to m_ServerIDToClientID.

// Good to know
To keep this structure please use insertIntoServerClientMaps() when adding items to them.
m_ServerIDToClientID and m_ClientIDToServerID maps between server EntityIDs and local EntityIDs.
To see if a local EntityID exist in m_ClientIDToServerID use clientServerMapsHasEntity(EntityID clientEntityID);
To see if server EntityID exist in m_ServerIDToClientID use serverClientMapsHasEntity(EntityID serverEntityID);
This commit is contained in:
Jocke
2016-01-14 17:11:54 +01:00
parent db18a45368
commit 696f44a673
5 changed files with 56 additions and 131 deletions
+8 -26
View File
@@ -50,7 +50,7 @@ void Server::readFromClients()
// Time out logic
if (checkTimeOutInterval < (1000 * (currentTime - timOutTimer) / (double)CLOCKS_PER_SEC)) {
//checkForTimeOuts();
checkForTimeOuts();
timOutTimer = currentTime;
}
}
@@ -80,8 +80,6 @@ void Server::parseMessageType(Packet& packet)
case MessageType::Disconnect:
parseDisconnect();
break;
case MessageType::Event:
break;
case MessageType::OnInputCommand:
parseOnInputCommand(packet);
break;
@@ -120,23 +118,6 @@ void Server::send(Packet & packet)
0);
}
void Server::moveMessageHead(char *& data, size_t & length, size_t stepSize)
{
data += stepSize;
length -= stepSize;
}
void Server::broadcast(std::string message)
{
Packet packet(MessageType::Event, m_SendPacketID);
packet.WriteString(message);
for (int i = 0; i < MAXCONNECTIONS; i++) {
if (m_PlayerDefinitions[i].Endpoint.address() != boost::asio::ip::address()) {
send(packet, i);
}
}
}
void Server::broadcast(Packet& packet)
{
for (int i = 0; i < MAXCONNECTIONS; ++i) {
@@ -214,7 +195,7 @@ void Server::checkForTimeOuts()
void Server::disconnect(int i)
{
broadcast("A player disconnected");
//broadcast("A player disconnected");
LOG_INFO("Player %i disconnected/timed out", i);
// Remove enteties and stuff
@@ -234,7 +215,7 @@ void Server::parseOnInputCommand(Packet& packet)
}
void Server::parseOnPlayerDamage(Packet & packet)
{
{
Events::PlayerDamage e;
e.DamageAmount = packet.ReadPrimitive<double>();
e.PlayerDamagedID = packet.ReadPrimitive<EntityID>();
@@ -264,15 +245,16 @@ void Server::parseConnect(Packet& packet)
LOG_INFO("Player \"%s\" connected on IP: %s", m_PlayerDefinitions[i].Name.c_str(), m_PlayerDefinitions[i].Endpoint.address().to_string().c_str());
// Send a message to the player that connected
Packet packet(MessageType::Connect, m_SendPacketID);
packet.WritePrimitive<int>(i); // Player ID
packet.WritePrimitive<EntityID>(m_PlayerDefinitions[i].EntityID); // Entity ID
send(packet, i);
// Send notification that a player has connected
std::string str = m_PacketID + "Player " + m_PlayerDefinitions[i].Name + " connected on: "
+ m_PlayerDefinitions[i].Endpoint.address().to_string();
broadcast(str);
Packet notificationPacket(MessageType::PlayerConnected, m_PacketID);
broadcast(notificationPacket);
break;
}
}