From 20e48eeb08d76e8588a1a7377cbd3795b40be387 Mon Sep 17 00:00:00 2001 From: Tleety Date: Sun, 13 Mar 2016 21:01:04 +0100 Subject: [PATCH] Killfeed should work now. --- include/Engine/Network/Client.h | 2 + include/Engine/Network/EKillDeath.h | 11 + include/Engine/Network/MessageType.h | 1 + include/Game/Systems/KillFeedSystem.h | 27 +- resources/Schema/Entities/MovementTest.xml | 1259 +++++++++-------- resources/Schema/Entities/OverwatchCamera.xml | 58 +- .../Schema/Entities/PlayerAssaultBlue.xml | 204 ++- .../Schema/Entities/PlayerDefenderBlue.xml | 264 ++-- resources/Schema/Entities/PlayerHUD.xml | 120 +- src/Engine/Network/Client.cpp | 19 + src/Engine/Network/Server.cpp | 39 + src/Game/Systems/KillFeedSystem.cpp | 61 +- 12 files changed, 1106 insertions(+), 959 deletions(-) diff --git a/include/Engine/Network/Client.h b/include/Engine/Network/Client.h index 29e9ac9a..d42ba14a 100644 --- a/include/Engine/Network/Client.h +++ b/include/Engine/Network/Client.h @@ -16,6 +16,7 @@ #include "Network/UDPClient.h" #include "Network/TCPClient.h" #include "Network/SnapshotDefinitions.h" +#include "Network/EKillDeath.h" #include "Core/World.h" #include "Core/EntityFile.h" #include "Core/EventBroker.h" @@ -104,6 +105,7 @@ private: void parseDashEffect(Packet& packet); void parseAmmoPickup(Packet& packet); void parseRemoveWorld(Packet& packet); + void parseKDEvent(Packet& packet); void InterpolateFields(Packet& packet, const ComponentInfo & componentInfo, const EntityID & entityID, const std::string & componentType); void parseSnapshot(Packet& packet); void identifyPacketLoss(); diff --git a/include/Engine/Network/EKillDeath.h b/include/Engine/Network/EKillDeath.h index e53f3b8c..04917f39 100644 --- a/include/Engine/Network/EKillDeath.h +++ b/include/Engine/Network/EKillDeath.h @@ -10,8 +10,19 @@ namespace Events struct KillDeath : public Event { + int CasualtyTeam; PlayerID Casualty = -1; + std::string CasualtyName; + + //1 = assault, 2 = defender, 3 = sniper + int CasualtyClass; + + int KillerTeam; PlayerID Killer = -1; + std::string KillerName; + + //1 = assault, 2 = defender, 3 = sniper + int KillerClass; }; } diff --git a/include/Engine/Network/MessageType.h b/include/Engine/Network/MessageType.h index 11fb85be..53821084 100644 --- a/include/Engine/Network/MessageType.h +++ b/include/Engine/Network/MessageType.h @@ -24,6 +24,7 @@ enum class MessageType ServerlistRequest, AmmoPickup, RemoveWorld, + KD, Invalid }; diff --git a/include/Game/Systems/KillFeedSystem.h b/include/Game/Systems/KillFeedSystem.h index 31423999..57c7a98a 100644 --- a/include/Game/Systems/KillFeedSystem.h +++ b/include/Game/Systems/KillFeedSystem.h @@ -3,7 +3,7 @@ #include "../../Engine/Core/System.h" #include "../../Engine/GLM.h" -#include "Core/EPlayerDeath.h" +#include "Network/EKillDeath.h" class KillFeedSystem : public ImpureSystem { @@ -11,8 +11,7 @@ public: KillFeedSystem(SystemParams params) : System(params) { - EVENT_SUBSCRIBE_MEMBER(m_EPlayerDeath, &KillFeedSystem::OnPlayerDeath); - + EVENT_SUBSCRIBE_MEMBER(m_EKillDeath, &KillFeedSystem::OnPlayerKillDeath) } virtual void Update(double dt) override; @@ -22,16 +21,30 @@ private: - EventRelay m_EPlayerDeath; - bool KillFeedSystem::OnPlayerDeath(Events::PlayerDeath& e); + EventRelay m_EKillDeath; + bool KillFeedSystem::OnPlayerKillDeath(Events::KillDeath& e); struct KillFeedInfo { - std::string Content; - glm::vec4 Color; + std::string KillerName = ""; + int KillerClass = 0; + int KillerID = -1; + int KillerTeam = 0; + std::string KillerColor = ""; + + std::string VictimName = ""; + int VictimClass = 0; + int VictimID = -1; + int VictimTeam = 0; + std::string VictimColor = ""; + + bool redused; float TimeToLive = 5.f; }; + std::string m_RedColor = "\\C08366D"; + std::string m_BlueColor = "\\C6A1208"; + std::list m_DeathQueue; }; diff --git a/resources/Schema/Entities/MovementTest.xml b/resources/Schema/Entities/MovementTest.xml index ca0ae6e2..dd1b3211 100644 --- a/resources/Schema/Entities/MovementTest.xml +++ b/resources/Schema/Entities/MovementTest.xml @@ -3,7 +3,7 @@ - 2.3827375146874772 + 2.9023438519963349 4 @@ -107,7 +107,7 @@ - + @@ -120,7 +120,7 @@ - + @@ -265,389 +265,616 @@ + + + + + + 0.049999997019767761 + + + + + + + - + - - 0.049999997019767761 - - - - + + - + - - - - + + - + - - + + + - + + + + false + Models/Core/UnitQuad.mesh + + Textures/Icons/Classes/Sniper-01.png + + + PickClass + 3 + - + + - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Icons/Classes/Sniper-01.png - - - PickClass - 3 - - - - - - - - - - - Sniper - Fonts/DroidSans.ttf,64 - - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Icons/Classes/Assault-01.png - - - PickClass - 1 - - - - - - - - - - - Assault - Fonts/DroidSans.ttf,64 - - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Icons/Classes/Defender-01.png - - - PickClass - 2 - - - - - - - - - - - Defender - Fonts/DroidSans.ttf,64 - - - - - - - - - - - - + - Pick Class + Sniper Fonts/DroidSans.ttf,64 - - + + - + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Icons/Classes/Assault-01.png + + + PickClass + 1 + + + + + + + + - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - - - SwapToTeamPick - 1 - + + Assault + Fonts/DroidSans.ttf,64 + + - - + + - - - - - Change - Fonts/DroidSans.ttf,64 - - - - - - - - - - - - Team - Fonts/DroidSans.ttf,64 - - - - - - - - - + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Icons/Classes/Defender-01.png + + + PickClass + 2 + + + + + + + + + + + Defender + Fonts/DroidSans.ttf,64 + + + + + + + + + + + + + + + Pick Class + Fonts/DroidSans.ttf,64 + + + + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + SwapToTeamPick + 1 + + + + + + + + + + + Change + Fonts/DroidSans.ttf,64 + + + + + + + + + + + + Team + Fonts/DroidSans.ttf,64 + + + + + + + - + + + + + + + + + - - + + + - + + + Pick Team + Fonts/DroidSans.ttf,64 + + - + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + PickTeam + 1 + + + + - + - Pick Team + Spectator Fonts/DroidSans.ttf,64 - - - + + - + + + + + + + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + PickTeam + 2 + + + + + + + + - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - - - PickTeam - 1 - + + Red + Fonts/DroidSans.ttf,64 + - - + + - - - - - Spectator - Fonts/DroidSans.ttf,64 - - - - - - - - - + - + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + PickTeam + 3 + + + + + + + + - - - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - true - - - PickTeam - 2 - + + Blue + Fonts/DroidSans.ttf,64 + - - + + - - - - - Red - Fonts/DroidSans.ttf,64 - - - - - - - - - + - + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + false + + + SwapToClassPick + 1 + + + + + + + + - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - true - - - PickTeam - 3 - - - - - - - - - - - Blue - Fonts/DroidSans.ttf,64 - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - + + Change + Fonts/DroidSans.ttf,64 false - - - SwapToClassPick - 1 - + - - + + + + + + + + + + Class + Fonts/DroidSans.ttf,64 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + Fonts/DroidSans.ttf,64 + + + + + + + + + + + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + - + - - Change - Fonts/DroidSans.ttf,64 - false - + + + + + 3 + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon_Rotated.png + - - + + + - + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + + + + + - - Class - Fonts/DroidSans.ttf,64 - false - + + + + + 4 + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon_Rotated.png + - - + + + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + + + + + + + + + + + 2 + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon_Rotated.png + + + + + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + + + + + + + + 0.10332605343919568 + + + + 1 + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon_Rotated.png + + + + + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon_Rotated.png + + + + + @@ -656,329 +883,153 @@ - - - - - - - - - + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + SwapToTeamPick + 1 + - + + - + - 2 + Change Fonts/DroidSans.ttf,64 - - - + + - + + + Team + Fonts/DroidSans.ttf,64 + - - + + - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - - - - - - - - - - - - - 3 - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon_Rotated.png - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - - - - - - - - - - - - - 4 - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon_Rotated.png - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - - - - - - - - - - - - - 2 - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon_Rotated.png - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - - - - - - - - - - 0.10332605343919568 - - - - 1 - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon_Rotated.png - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon_Rotated.png - - - - - - - - - - - - + - + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + SwapToClassPick + 1 + + + + + + + + - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - - - SwapToTeamPick - 1 - + + Change + Fonts/DroidSans.ttf,64 + - - + + - - - - - Change - Fonts/DroidSans.ttf,64 - - - - - - - - - - - - Team - Fonts/DroidSans.ttf,64 - - - - - - - - - + - + - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - - - SwapToClassPick - 1 - + + Class + Fonts/DroidSans.ttf,64 + - - + + - - - - - Change - Fonts/DroidSans.ttf,64 - - - - - - - - - - - - Class - Fonts/DroidSans.ttf,64 - - - - - - - - - + + + + + + + + + + + + + + + + + \C08366D\1\CFFFFFF Dahl \4 \C08366D\1\CFFFFFF Dahl + Fonts/Hind-Edited.otf,64 + + + + + + + + + + + + \C08366D\1\CFFFFFF Dahl \4 \C08366D\1\CFFFFFF Dahl + Fonts/Hind-Edited.otf,64 + + + + + + + + + + + + + + + Fonts/Hind-Edited.otf,64 + + + + + + + + + diff --git a/resources/Schema/Entities/OverwatchCamera.xml b/resources/Schema/Entities/OverwatchCamera.xml index 92540e5b..55b2b6a4 100644 --- a/resources/Schema/Entities/OverwatchCamera.xml +++ b/resources/Schema/Entities/OverwatchCamera.xml @@ -8,7 +8,7 @@ - + @@ -275,7 +275,6 @@ Textures/Core/UnitHexagon.png - true PickTeam @@ -311,7 +310,6 @@ Textures/Core/UnitHexagon.png - true PickTeam @@ -715,6 +713,60 @@ + + + + + + + + + + + + + + Fonts/Hind-Edited.otf,64 + + + + + + + + + + + + + Fonts/Hind-Edited.otf,64 + + + + + + + + + + + + + + + Fonts/Hind-Edited.otf,64 + + + + + + + + + + + + diff --git a/resources/Schema/Entities/PlayerAssaultBlue.xml b/resources/Schema/Entities/PlayerAssaultBlue.xml index c73a4c46..76f1718c 100644 --- a/resources/Schema/Entities/PlayerAssaultBlue.xml +++ b/resources/Schema/Entities/PlayerAssaultBlue.xml @@ -104,6 +104,82 @@ + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + + + + + + + + + + + 2 + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon_Rotated.png + + + + + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + + + + + + + + + + + 3 + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon_Rotated.png + + + + + + + + + + + @@ -112,7 +188,6 @@ Textures/Core/UnitHexagon.png - true @@ -133,7 +208,6 @@ Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png - true @@ -153,87 +227,6 @@ Textures/Core/UnitHexagon.png - true - - - - - - - - - - - - - 2 - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon_Rotated.png - true - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - true - - - - - - - - - - - - - 3 - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon_Rotated.png - true - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - true @@ -253,7 +246,6 @@ Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png - true @@ -273,7 +265,6 @@ Textures/Core/UnitHexagon.png - true @@ -292,7 +283,6 @@ Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png - true @@ -319,7 +309,7 @@ - Fonts/DroidSans.ttf,64 + Fonts/Hind-Edited.otf,64 @@ -332,7 +322,7 @@ - Fonts/DroidSans.ttf,64 + Fonts/Hind-Edited.otf,64 @@ -347,7 +337,7 @@ - Fonts/DroidSans.ttf,64 + Fonts/Hind-Edited.otf,64 @@ -393,12 +383,12 @@ 1 + 100/100 Fonts/DroidSans.ttf,64 - + - @@ -419,7 +409,6 @@ Textures/HealthHUD3.png - true @@ -438,18 +427,17 @@ - + false Models/Core/UnitQuad.mesh Textures/Icons/Boosts/Assault-01.png - - true + - + @@ -459,18 +447,17 @@ - + false Models/Core/UnitQuad.mesh Textures/Icons/Boosts/Defender-01.png - - true + - + @@ -480,19 +467,17 @@ - + false Models/Core/UnitQuad.mesh Textures/Icons/Boosts/Sniper-01.png - - false - true + - + @@ -513,7 +498,6 @@ Textures/Icons/Abilities/Long/Superman-01.png - true @@ -923,10 +907,10 @@ - + - DashLeftF + DashRightF 1.7999999523162842 false @@ -935,10 +919,10 @@ - + - DashRightF + DashLeftF 1.7999999523162842 false diff --git a/resources/Schema/Entities/PlayerDefenderBlue.xml b/resources/Schema/Entities/PlayerDefenderBlue.xml index 25fc54d2..dd8992be 100644 --- a/resources/Schema/Entities/PlayerDefenderBlue.xml +++ b/resources/Schema/Entities/PlayerDefenderBlue.xml @@ -141,6 +141,82 @@ + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + + + + + + + + + + + 2 + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon_Rotated.png + + + + + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + + + + + + + + + + + + + + 3 + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon_Rotated.png + + + + + + + + + + + @@ -149,7 +225,6 @@ Textures/Core/UnitHexagon.png - true @@ -170,7 +245,6 @@ Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png - true @@ -190,87 +264,6 @@ Textures/Core/UnitHexagon.png - true - - - - - - - - - - - - - 2 - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon_Rotated.png - true - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - true - - - - - - - - - - - - - 3 - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon_Rotated.png - true - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - true @@ -290,7 +283,6 @@ Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png - true @@ -310,7 +302,6 @@ Textures/Core/UnitHexagon.png - true @@ -329,7 +320,6 @@ Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png - true @@ -356,7 +346,7 @@ - Fonts/DroidSans.ttf,64 + Fonts/Hind-Edited.otf,64 @@ -369,7 +359,7 @@ - Fonts/DroidSans.ttf,64 + Fonts/Hind-Edited.otf,64 @@ -384,7 +374,7 @@ - Fonts/DroidSans.ttf,64 + Fonts/Hind-Edited.otf,64 @@ -430,12 +420,12 @@ 1 + 150/150 Fonts/DroidSans.ttf,64 - + - @@ -456,7 +446,6 @@ Textures/HealthHUD3.png - true @@ -475,18 +464,17 @@ - + false Models/Core/UnitQuad.mesh Textures/Icons/Boosts/Assault-01.png - - true + - + @@ -496,18 +484,17 @@ - + false Models/Core/UnitQuad.mesh Textures/Icons/Boosts/Defender-01.png - - true + - + @@ -517,19 +504,17 @@ - + false Models/Core/UnitQuad.mesh Textures/Icons/Boosts/Sniper-01.png - - false - true + - + @@ -551,7 +536,6 @@ Textures/Icons/Abilities/Long/SheildDots-01.png - true @@ -904,40 +888,6 @@ - - - - Fire - Reload - 0 - - - - - - - - ShootgunReloadU - - 0.5 - - - - - - - - - ShootRifleU - - false - - - - - - - @@ -973,6 +923,40 @@ + + + + Fire + Reload + 0 + + + + + + + + ShootgunReloadU + + 0.5 + + + + + + + + + ShootRifleU + + false + + + + + + + diff --git a/resources/Schema/Entities/PlayerHUD.xml b/resources/Schema/Entities/PlayerHUD.xml index 5891362d..48123411 100644 --- a/resources/Schema/Entities/PlayerHUD.xml +++ b/resources/Schema/Entities/PlayerHUD.xml @@ -48,47 +48,6 @@ Textures/Core/UnitHexagon.png - true - - - - - - - - - - - - - 2 - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon_Rotated.png - true - - - - - - - - - - - - - - - false - Models/Core/UnitQuad.mesh - - Textures/Core/UnitHexagon.png - - true @@ -108,7 +67,6 @@ Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png - true @@ -128,7 +86,6 @@ Textures/Core/UnitHexagon.png - true @@ -149,7 +106,6 @@ Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png - true @@ -169,7 +125,44 @@ Textures/Core/UnitHexagon.png - true + + + + + + + + + + + + + 2 + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon_Rotated.png + + + + + + + + + + + + + + + false + Models/Core/UnitQuad.mesh + + Textures/Core/UnitHexagon.png + @@ -189,7 +182,6 @@ Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png - true @@ -209,7 +201,6 @@ Textures/Core/UnitHexagon.png - true @@ -228,7 +219,6 @@ Models/Core/UnitQuad.mesh Textures/Core/UnitHexagon_Rotated.png - true @@ -255,7 +245,7 @@ - Fonts/DroidSans.ttf,64 + Fonts/Hind-Edited.otf,64 @@ -268,7 +258,7 @@ - Fonts/DroidSans.ttf,64 + Fonts/Hind-Edited.otf,64 @@ -283,7 +273,7 @@ - Fonts/DroidSans.ttf,64 + Fonts/Hind-Edited.otf,64 @@ -329,12 +319,12 @@ 1 + 100/100 Fonts/DroidSans.ttf,64 - + - @@ -355,7 +345,6 @@ Textures/HealthHUD3.png - true @@ -374,18 +363,17 @@ - + false Models/Core/UnitQuad.mesh Textures/Icons/Boosts/Assault-01.png - - true + - + @@ -395,18 +383,17 @@ - + false Models/Core/UnitQuad.mesh Textures/Icons/Boosts/Defender-01.png - - true + - + @@ -416,19 +403,17 @@ - + false Models/Core/UnitQuad.mesh Textures/Icons/Boosts/Sniper-01.png - - false - true + - + @@ -449,7 +434,6 @@ Textures/Test/aM4ME4GR.png - true diff --git a/src/Engine/Network/Client.cpp b/src/Engine/Network/Client.cpp index 705872fa..cd395da0 100644 --- a/src/Engine/Network/Client.cpp +++ b/src/Engine/Network/Client.cpp @@ -165,6 +165,9 @@ void Client::parseMessageType(Packet& packet) case MessageType::RemoveWorld: parseRemoveWorld(packet); break; + case MessageType::KD: + parseKDEvent(packet); + break; default: break; } @@ -349,6 +352,22 @@ void Client::parseRemoveWorld(Packet & packet) m_EventBroker->Publish(e); } +void Client::parseKDEvent(Packet & packet) +{ + Events::KillDeath e; + e.Casualty = packet.ReadPrimitive(); + e.CasualtyClass = packet.ReadPrimitive(); + e.CasualtyName = packet.ReadString(); + e.CasualtyTeam = packet.ReadPrimitive(); + + e.Killer = packet.ReadPrimitive(); + e.KillerClass = packet.ReadPrimitive(); + e.KillerName = packet.ReadString(); + e.KillerTeam = packet.ReadPrimitive(); + + m_EventBroker->Publish(e); +} + void Client::updateFields(Packet& packet, const ComponentInfo& componentInfo, const EntityID& entityID) { for (auto field : componentInfo.FieldsInOrder) { diff --git a/src/Engine/Network/Server.cpp b/src/Engine/Network/Server.cpp index dc40ea3f..dbaf4752 100644 --- a/src/Engine/Network/Server.cpp +++ b/src/Engine/Network/Server.cpp @@ -560,9 +560,48 @@ bool Server::OnAmmoPickup(const Events::AmmoPickup & e) bool Server::OnPlayerDeath(const Events::PlayerDeath& e) { Events::KillDeath eKD; + auto entity = e; eKD.Casualty = getPlayerIDFromEntityID(e.Player.ID); eKD.Killer = getPlayerIDFromEntityID(e.Killer.ID); + + eKD.CasualtyName = m_ConnectedPlayers.at(getPlayerIDFromEntityID(e.Player.ID)).Name; + eKD.KillerName = m_ConnectedPlayers.at(getPlayerIDFromEntityID(e.Killer.ID)).Name; + + if(entity.Player.HasComponent("Team")) { + eKD.CasualtyTeam = (const int&)entity.Player["Team"]["Team"]; + } + if (entity.Killer.HasComponent("Team")) { + eKD.KillerTeam = (const int&)entity.Killer["Team"]["Team"]; + } + + if(entity.Player.HasComponent("DashAbility")) { + eKD.CasualtyClass = 1; + } else if (entity.Player.HasComponent("ShieldAbility")) { + eKD.CasualtyClass = 2; + } else if (entity.Player.HasComponent("SprintAbility")) { + eKD.CasualtyClass = 3; + } + if (entity.Killer.HasComponent("DashAbility")) { + eKD.KillerClass = 1; + } else if (entity.Killer.HasComponent("ShieldAbility")) { + eKD.KillerClass = 2; + } else if (entity.Killer.HasComponent("SprintAbility")) { + eKD.KillerClass = 3; + } + m_EventBroker->Publish(eKD); + + Packet kdPacket(MessageType::KD); + kdPacket.WritePrimitive(eKD.Casualty); + kdPacket.WritePrimitive(eKD.CasualtyClass); + kdPacket.WriteString(eKD.CasualtyName); + kdPacket.WritePrimitive(eKD.CasualtyTeam); + + kdPacket.WritePrimitive(eKD.Killer); + kdPacket.WritePrimitive(eKD.KillerClass); + kdPacket.WriteString(eKD.KillerName); + kdPacket.WritePrimitive(eKD.KillerTeam); + reliableBroadcast(kdPacket); return false; } diff --git a/src/Game/Systems/KillFeedSystem.cpp b/src/Game/Systems/KillFeedSystem.cpp index eb3e916e..01a474ad 100644 --- a/src/Game/Systems/KillFeedSystem.cpp +++ b/src/Game/Systems/KillFeedSystem.cpp @@ -7,6 +7,10 @@ void KillFeedSystem::Update(double dt) return; } + for (auto it = m_DeathQueue.begin(); it != m_DeathQueue.end(); it++) { + (*it).TimeToLive -= dt; + } + for (auto& killFeedComponent : *killFeeds) { EntityWrapper entity = EntityWrapper(m_World, killFeedComponent.EntityID); @@ -16,10 +20,7 @@ void KillFeedSystem::Update(double dt) (Field)child["Text"]["Content"] = ""; } } - - - - + int feedIndex = 1; for (auto it = m_DeathQueue.begin(); it != m_DeathQueue.end(); ) { bool remove = false; @@ -27,14 +28,19 @@ void KillFeedSystem::Update(double dt) EntityWrapper child = entity.FirstChildByName("KillFeed" + std::to_string(feedIndex)); if (child.HasComponent("Text")) { - (Field)child["Text"]["Content"] = (*it).Content; - (Field)child["Text"]["Color"] = (*it).Color; - (*it).TimeToLive -= dt; + std::string str = ""; + //Add killer to the start of string. + str = (*it).KillerColor + "\\" + std::to_string((*it).KillerClass) + "\\CFFFFFF" + " " + (*it).KillerName + " "; + //Add Weapon to middle of string. + str += "\\" + std::to_string((*it).KillerClass+3) + " "; + //Add victim to the end of string + str += (*it).VictimColor + "\\" + std::to_string((*it).VictimClass) + "\\CFFFFFF" + " " + (*it).VictimName; + + (Field)child["Text"]["Content"] = str; if ((*it).TimeToLive <= 0.f) { (Field)child["Text"]["Content"] = ""; - (Field)child["Text"]["Color"] = (*it).Color; remove = true; } } @@ -52,29 +58,30 @@ void KillFeedSystem::Update(double dt) } } -bool KillFeedSystem::OnPlayerDeath(Events::PlayerDeath& e) +bool KillFeedSystem::OnPlayerKillDeath(Events::KillDeath& e) { - KillFeedInfo kfInfo; + KillFeedInfo info; - if (e.Player.HasComponent("Team")) { - int red = e.Player["Team"].Enum("Team", "Red"); - int blue = e.Player["Team"].Enum("Team", "Blue"); - - if ((int)e.Player["Team"]["Team"] == red) { - kfInfo.Content = "Blue Player killed Red Player"; - kfInfo.Color = glm::vec4(0.f, 0.2f, 1.f, 0.8f); - m_DeathQueue.push_back(kfInfo); - } else if ((int)e.Player["Team"]["Team"] == blue) { - kfInfo.Content = "Red Player killed blue Player"; - kfInfo.Color = glm::vec4(1.f, 0.f, 0.f, 0.8f); - m_DeathQueue.push_back(kfInfo); - } + info.KillerName = e.KillerName; + info.KillerID = e.Killer; + info.KillerClass = e.KillerClass; + info.KillerTeam = e.KillerTeam; + if(info.KillerTeam == 2){ + info.KillerColor = m_BlueColor; + } else if (info.KillerTeam == 3) { + info.KillerColor = m_RedColor; } - - if(m_DeathQueue.size() > 3) { - m_DeathQueue.pop_front(); + info.VictimName = e.CasualtyName; + info.VictimID = e.Casualty; + info.VictimClass = e.CasualtyClass; + info.VictimTeam = e.CasualtyTeam; + if (info.VictimTeam == 2) { + info.VictimColor = m_BlueColor; + } else if (info.VictimTeam == 3) { + info.VictimColor = m_RedColor; } - return true; + m_DeathQueue.push_back(info); + return 1; }