summaryrefslogtreecommitdiff
path: root/src/localplayer.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-01-26 14:15:34 +0300
committerAndrei Karas <akaras@inbox.ru>2013-01-26 14:45:25 +0300
commit5d43f16fea7f97f3302b89d64c165b7c5b5222dc (patch)
tree386d26ecf76fc1e44b1319ce1f1595b48d6c5c45 /src/localplayer.cpp
parent85d58aef208ae7c1f0ef5d449e17a1410a6eb04d (diff)
downloadmv-5d43f16fea7f97f3302b89d64c165b7c5b5222dc.tar.gz
mv-5d43f16fea7f97f3302b89d64c165b7c5b5222dc.tar.bz2
mv-5d43f16fea7f97f3302b89d64c165b7c5b5222dc.tar.xz
mv-5d43f16fea7f97f3302b89d64c165b7c5b5222dc.zip
Fix show ping time if timer overflowed and still no response from server.
Diffstat (limited to 'src/localplayer.cpp')
-rw-r--r--src/localplayer.cpp30
1 files changed, 20 insertions, 10 deletions
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<int, Guild*>::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;
}
}
}