|
|
|
@ -32,7 +32,6 @@ LocalPlayer::LocalPlayer()
|
|
|
|
|
m_states = 0;
|
|
|
|
|
m_vocation = 0;
|
|
|
|
|
m_walkLockExpiration = 0;
|
|
|
|
|
m_lastWalkPing = -1;
|
|
|
|
|
|
|
|
|
|
m_skillsLevel.fill(-1);
|
|
|
|
|
m_skillsBaseLevel.fill(-1);
|
|
|
|
@ -77,7 +76,7 @@ bool LocalPlayer::canWalk(Otc::Direction direction)
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
// prewalk has a timeout, because for some reason that I don't know yet the server sometimes doesn't answer the prewalk
|
|
|
|
|
bool prewalkTimeouted = m_walking && m_preWalking && m_walkTimer.ticksElapsed() >= getStepDuration() + 5*PREWALK_TIMEOUT;
|
|
|
|
|
bool prewalkTimeouted = m_walking && m_preWalking && m_walkTimer.ticksElapsed() >= getStepDuration() + PREWALK_TIMEOUT;
|
|
|
|
|
|
|
|
|
|
// avoid doing more walks than wanted when receiving a lot of walks from server
|
|
|
|
|
if(!m_lastPrewalkDone && m_preWalking && !prewalkTimeouted)
|
|
|
|
@ -94,13 +93,6 @@ void LocalPlayer::walk(const Position& oldPos, const Position& newPos)
|
|
|
|
|
{
|
|
|
|
|
// a prewalk was going on
|
|
|
|
|
if(m_preWalking) {
|
|
|
|
|
if(m_waitingWalkPong) {
|
|
|
|
|
if(newPos == m_lastPrewalkDestination)
|
|
|
|
|
m_lastWalkPing = m_walkPingTimer.ticksElapsed();
|
|
|
|
|
|
|
|
|
|
m_waitingWalkPong = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// switch to normal walking
|
|
|
|
|
m_preWalking = false;
|
|
|
|
|
m_lastPrewalkDone = true;
|
|
|
|
@ -113,7 +105,6 @@ void LocalPlayer::walk(const Position& oldPos, const Position& newPos)
|
|
|
|
|
}
|
|
|
|
|
// no prewalk was going on, this must be an server side automated walk
|
|
|
|
|
else {
|
|
|
|
|
m_walkPingTimer.restart();
|
|
|
|
|
m_serverWalking = true;
|
|
|
|
|
if(m_serverWalkEndEvent)
|
|
|
|
|
m_serverWalkEndEvent->cancel();
|
|
|
|
@ -131,12 +122,6 @@ void LocalPlayer::preWalk(Otc::Direction direction)
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_waitingWalkPong = false;
|
|
|
|
|
if(m_walkPingTimer.ticksElapsed() > getStepDuration() && m_idleTimer.ticksElapsed() > getStepDuration()*2) {
|
|
|
|
|
m_waitingWalkPong = true;
|
|
|
|
|
m_walkPingTimer.restart();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_preWalking = true;
|
|
|
|
|
|
|
|
|
|
if(m_serverWalkEndEvent)
|
|
|
|
@ -155,8 +140,6 @@ void LocalPlayer::cancelWalk(Otc::Direction direction)
|
|
|
|
|
stopWalk();
|
|
|
|
|
|
|
|
|
|
m_lastPrewalkDone = true;
|
|
|
|
|
m_waitingWalkPong = false;
|
|
|
|
|
m_walkPingTimer.restart();
|
|
|
|
|
m_idleTimer.restart();
|
|
|
|
|
lockWalk();
|
|
|
|
|
|
|
|
|
|