From 5d43f16fea7f97f3302b89d64c165b7c5b5222dc Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 26 Jan 2013 14:15:34 +0300 Subject: Fix show ping time if timer overflowed and still no response from server. --- src/localplayer.cpp | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'src/localplayer.cpp') diff --git a/src/localplayer.cpp b/src/localplayer.cpp index 619150ef9..a4104ce03 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -73,7 +73,8 @@ #include "debug.h" -const short awayLimitTimer = 60; +static const short awayLimitTimer = 60; +static const int MAX_TICK_VALUE = 10000; typedef std::map::const_iterator GuildMapCIter; @@ -3452,24 +3453,32 @@ void LocalPlayer::pingRequest() Net::getBeingHandler()->requestNameById(getId()); } -int LocalPlayer::getPingTime() const +std::string LocalPlayer::getPingTime() const { int time = 0; + std::string str; if (!mWaitPing) { - time = mPingTime; + if (!mPingTime) + str = "?"; + else + str = toString(mPingTime); } else { time = tick_time; if (time > mPingSendTick) - { time -= mPingSendTick; - if (time <= mPingTime) - time = mPingTime; - } + else + time += MAX_TICK_VALUE - mPingSendTick; + if (time <= mPingTime) + time = mPingTime; + if (mPingTime != time) + str = strprintf("%d (%d)", mPingTime, time); + else + str = toString(time); } - return time; + return str; } void LocalPlayer::pingResponse() @@ -3477,14 +3486,15 @@ void LocalPlayer::pingResponse() if (mWaitPing == true && mPingSendTick > 0) { mWaitPing = false; - if (tick_time < mPingSendTick) + const int time = tick_time; + if (time < mPingSendTick) { mPingSendTick = 0; mPingTime = 0; } else { - mPingTime = (tick_time - mPingSendTick) * 10; + mPingTime = (time - mPingSendTick) * 10; } } } -- cgit v1.2.3-60-g2f50