From 7855cf03d249354e87f3c5fce054ea869eb68f16 Mon Sep 17 00:00:00 2001 From: stiffly Date: Sun, 13 Mar 2016 23:33:10 +0100 Subject: [PATCH] The Endscreen now works over the network. --- include/Engine/Network/Client.h | 2 ++ include/Engine/Network/MessageType.h | 1 + src/Engine/Network/Client.cpp | 10 ++++++++++ src/Engine/Network/Server.cpp | 3 +++ 4 files changed, 16 insertions(+) diff --git a/include/Engine/Network/Client.h b/include/Engine/Network/Client.h index f79feb8d..a4c2e229 100644 --- a/include/Engine/Network/Client.h +++ b/include/Engine/Network/Client.h @@ -36,6 +36,7 @@ #include "Network/ESearchForServers.h" #include "Network/EInterpolate.h" #include "Network/SnapshotFilter.h" +#include "Core/EWin.h" class Client : public Network { @@ -107,6 +108,7 @@ private: void parseAmmoPickup(Packet& packet); void parseRemoveWorld(Packet& packet); void parseKDEvent(Packet& packet); + void parseWin(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/MessageType.h b/include/Engine/Network/MessageType.h index 53821084..d69b468b 100644 --- a/include/Engine/Network/MessageType.h +++ b/include/Engine/Network/MessageType.h @@ -25,6 +25,7 @@ enum class MessageType AmmoPickup, RemoveWorld, KD, + Win, Invalid }; diff --git a/src/Engine/Network/Client.cpp b/src/Engine/Network/Client.cpp index 381c606d..637ffe8b 100644 --- a/src/Engine/Network/Client.cpp +++ b/src/Engine/Network/Client.cpp @@ -176,6 +176,9 @@ void Client::parseMessageType(Packet& packet) case MessageType::KD: parseKDEvent(packet); break; + case MessageType::Win: + parseWin(packet); + break; default: break; } @@ -376,6 +379,13 @@ void Client::parseKDEvent(Packet & packet) m_EventBroker->Publish(e); } +void Client::parseWin(Packet& packet) +{ + Events::Win e; + e.TeamThatWon = 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 dbaf4752..3ec73969 100644 --- a/src/Engine/Network/Server.cpp +++ b/src/Engine/Network/Server.cpp @@ -609,6 +609,9 @@ bool Server::OnWin(const Events::Win & e) { // Postpone the gameover reset m_GameIsOver = true; + Packet winPacket = Packet(MessageType::Win); + winPacket.WritePrimitive(e.TeamThatWon); + reliableBroadcast(winPacket); return true; }