From 7bb6020e51e9c2f7ffd375d4f4d6b2540f827835 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Thu, 25 Aug 2016 02:58:03 +0300 Subject: [PATCH] Display message boxes when client is disconnected. --- apps/openmw/mwmp/Networking.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/apps/openmw/mwmp/Networking.cpp b/apps/openmw/mwmp/Networking.cpp index a6eec5b17..04acfc48f 100644 --- a/apps/openmw/mwmp/Networking.cpp +++ b/apps/openmw/mwmp/Networking.cpp @@ -45,6 +45,8 @@ Networking::~Networking() void Networking::Update() { RakNet::Packet *packet; + std::string errmsg = ""; + for (packet=peer->Receive(); packet; peer->DeallocatePacket(packet), packet=peer->Receive()) { switch (packet->data[0]) @@ -65,16 +67,13 @@ void Networking::Update() LOG_MESSAGE_SIMPLE(Log::LOG_INFO, "%s", "A connection is incoming."); break; case ID_NO_FREE_INCOMING_CONNECTIONS: - LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "%s", "The server is full."); - MWBase::Environment::get().getStateManager()->requestQuit(); + errmsg = "The server is full."; break; case ID_DISCONNECTION_NOTIFICATION: - LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "%s", "We have been disconnected."); - MWBase::Environment::get().getStateManager()->requestQuit(); + errmsg = "We have been disconnected."; break; case ID_CONNECTION_LOST: - LOG_MESSAGE_SIMPLE(Log::LOG_WARN, "%s", "Connection lost."); - MWBase::Environment::get().getStateManager()->requestQuit(); + errmsg = "Connection lost."; break; default: ReceiveMessage(packet); @@ -82,6 +81,13 @@ void Networking::Update() break; } } + + if (!errmsg.empty()) { + + LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "%s", errmsg); + SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "tes3mp", errmsg.c_str(), 0); + MWBase::Environment::get().getStateManager()->requestQuit(); + } } void Networking::SendData(RakNet::BitStream *bs) @@ -111,7 +117,7 @@ void Networking::Connect(const std::string &ip, unsigned short port) case ID_CONNECTION_ATTEMPT_FAILED: { errmsg = "Connection failed.\n" - "Maybe the IP address is wrong or a firewall on either system is blocking\n" + "Either the IP address is wrong or a firewall on either system is blocking\n" "UDP packets on the port you have chosen."; queue = false; break; @@ -153,8 +159,8 @@ void Networking::Connect(const std::string &ip, unsigned short port) if (!errmsg.empty()) { - cerr << errmsg << endl; - SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "TES3MP", errmsg.c_str(), 0); + LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, "%s", errmsg); + SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "tes3mp", errmsg.c_str(), 0); MWBase::Environment::get().getStateManager()->requestQuit(); } }