diff --git a/include/Engine/Network/Client.h b/include/Engine/Network/Client.h index 6b73c95c..3027ad87 100644 --- a/include/Engine/Network/Client.h +++ b/include/Engine/Network/Client.h @@ -16,6 +16,7 @@ #include "Core/EventBroker.h" #include "Core/ConfigFile.h" #include "Input/EInputCommand.h" +#include "Core/EPlayerDamage.h" class Client : public Network { @@ -79,11 +80,13 @@ private: bool isConnected(); EntityID createPlayer(); bool hasMappedEntity(EntityID entityID); + // Events EventBroker* m_EventBroker; - EventRelay m_EInputCommand; bool OnInputCommand(const Events::InputCommand& e); + EventRelay m_EPlayeDamage; + bool OnPlayerDamage(const Events::PlayerDamage& e); }; #endif diff --git a/include/Engine/Network/MessageType.h b/include/Engine/Network/MessageType.h index 68bda9b0..42b049e8 100644 --- a/include/Engine/Network/MessageType.h +++ b/include/Engine/Network/MessageType.h @@ -12,7 +12,8 @@ enum class MessageType Message, Snapshot, Event, - OnInputCommand + OnInputCommand, + OnPlayerDamage }; #endif diff --git a/include/Engine/Network/Server.h b/include/Engine/Network/Server.h index ec2560b5..dc7b25cd 100644 --- a/include/Engine/Network/Server.h +++ b/include/Engine/Network/Server.h @@ -13,6 +13,7 @@ #include "Core/EventBroker.h" #include "Network/Network.h" #include "Input/EInputCommand.h" +#include "Core/EPlayerDamage.h" class Server : public Network { @@ -69,6 +70,7 @@ private: void disconnect(int i); void parseMessageType(Packet& packet); void parseOnInputCommand(Packet& packet); + void parseOnPlayerDamage(Packet& packet); void parseConnect(Packet& packet); void parseDisconnect(); void parseClientPing(); diff --git a/src/Engine/Network/Client.cpp b/src/Engine/Network/Client.cpp index 37ee35d9..c073e79a 100644 --- a/src/Engine/Network/Client.cpp +++ b/src/Engine/Network/Client.cpp @@ -298,7 +298,7 @@ bool Client::OnInputCommand(const Events::InputCommand & e) { if (e.Command == "ConnectToServer") { // Connect for now connect(); - LOG_INFO("Client::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID); + LOG_DEBUG("Client::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID); return true; } else { Packet packet(MessageType::OnInputCommand, m_SendPacketID); @@ -306,12 +306,22 @@ bool Client::OnInputCommand(const Events::InputCommand & e) packet.WritePrimitive(e.PlayerID); packet.WritePrimitive(e.Value); send(packet); - LOG_INFO("Client::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID); + LOG_DEBUG("Client::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID); return true; } return false; } +bool Client::OnPlayerDamage(const Events::PlayerDamage & e) +{ + Packet packet(MessageType::OnInputCommand, m_SendPacketID); + packet.WritePrimitive(e.DamageAmount); + packet.WritePrimitive(e.PlayerDamagedID); + packet.WriteString(e.TypeOfDamage); + send(packet); + return false; +} + void Client::identifyPacketLoss() { // if no packets lost, difference should be equal to 1 diff --git a/src/Engine/Network/Server.cpp b/src/Engine/Network/Server.cpp index 6b59a31a..1a915863 100644 --- a/src/Engine/Network/Server.cpp +++ b/src/Engine/Network/Server.cpp @@ -84,7 +84,10 @@ void Server::parseMessageType(Packet& packet) break; case MessageType::OnInputCommand: parseOnInputCommand(packet); - break;; + break; + case MessageType::OnPlayerDamage: + parseOnPlayerDamage(packet); + break; default: break; } @@ -222,21 +225,22 @@ void Server::disconnect(int i) void Server::parseOnInputCommand(Packet& packet) { - size_t i; - for (i = 0; i < MAXCONNECTIONS; i++) { - if (m_PlayerDefinitions[i].Endpoint.address() == m_ReceiverEndpoint.address()) { - break; - } - } - // If no player matches the address return. - if (i >= 8) - return; Events::InputCommand e; e.Command = packet.ReadString(); e.PlayerID = packet.ReadPrimitive(); e.Value = packet.ReadPrimitive(); m_EventBroker->Publish(e); - LOG_INFO("Client::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID); + LOG_DEBUG("Server::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID); +} + +void Server::parseOnPlayerDamage(Packet & packet) +{ + Events::PlayerDamage e; + e.DamageAmount = packet.ReadPrimitive(); + e.PlayerDamagedID = packet.ReadPrimitive(); + e.TypeOfDamage = packet.ReadString(); + m_EventBroker->Publish(e); + LOG_DEBUG("Server::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.DamageAmount, e.PlayerDamagedID, e.TypeOfDamage.c_str()); } void Server::parseConnect(Packet& packet)