diff options
Diffstat (limited to 'src/being/localplayer.cpp')
-rw-r--r-- | src/being/localplayer.cpp | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/src/being/localplayer.cpp b/src/being/localplayer.cpp index 83b4816ae..1e2f16bea 100644 --- a/src/being/localplayer.cpp +++ b/src/being/localplayer.cpp @@ -137,8 +137,7 @@ LocalPlayer::LocalPlayer(const BeingId id, mPingTime(0), mAfkTime(0), mActivityTime(0), - mNavigateX(0), - mNavigateY(0), + mNavigateDest(0, 0), mNavigateId(BeingId_zero), mCrossX(0), mCrossY(0), @@ -282,7 +281,7 @@ void LocalPlayer::logic() if (!mSyncPlayerMove) dist = 20; - if (((mNavigateX != 0) || (mNavigateY != 0)) && + if (((mNavigateDest.x != 0) || (mNavigateDest.y != 0)) && ((mCrossX + dist >= mX && mCrossX <= mX + dist && mCrossY + dist >= mY && mCrossY <= mY + dist) || ((mCrossX == 0) && (mCrossY == 0)))) @@ -549,13 +548,13 @@ bool LocalPlayer::pickUp(FloorItem *const item) break; case 1:// should never happen due to above check for adjecent-tile // pickup, but you never know. - navigateTo(item->getTileX(), item->getTileY()); + navigateTo({item->getTileX(), item->getTileY()}); break; default: { // at least two spots, move nearby. const Position& nearby = *(++debugPath.rbegin()); - navigateTo(nearby.x, nearby.y); + navigateTo(nearby); break; } } @@ -1059,8 +1058,7 @@ void LocalPlayer::setGotoTarget(Being *const target) mPickUpTarget = nullptr; setTarget(target); mGoingToTarget = true; - navigateTo(target->mX, - target->mY); + navigateTo({target->mX, target->mY}); } void LocalPlayer::handleStatusEffect(const StatusEffect *const effect, @@ -1408,7 +1406,7 @@ void LocalPlayer::moveToTarget(int dist) limit = CAST_S32(sz) - dist; gotPos = true; } - else if ((mNavigateX != 0) || (mNavigateY != 0)) + else if ((mNavigateDest.x != 0) || (mNavigateDest.y != 0)) { debugPath = mNavigatePath; limit = dist; @@ -1420,7 +1418,7 @@ void LocalPlayer::moveToTarget(int dist) if (dist == 0) { if (mTarget != nullptr) - navigateTo(mTarget->mX, mTarget->mY); + navigateTo({mTarget->mX, mTarget->mY}); } else { @@ -1433,12 +1431,12 @@ void LocalPlayer::moveToTarget(int dist) { pos = (*i); } - navigateTo(pos.x, pos.y); + navigateTo(pos); } } else if ((mLastTargetX != 0) || (mLastTargetY != 0)) { - navigateTo(mLastTargetX, mLastTargetY); + navigateTo({mLastTargetX, mLastTargetY}); } } @@ -1466,7 +1464,7 @@ void LocalPlayer::moveToHome() } else { - navigateTo(CAST_S32(pos.x), CAST_S32(pos.y)); + navigateTo({CAST_S32(pos.x), CAST_S32(pos.y)}); } } } @@ -1710,8 +1708,11 @@ void LocalPlayer::moveByDirection(const unsigned char dir) void LocalPlayer::specialMove(const unsigned char direction) { - if ((direction != 0U) && ((mNavigateX != 0) || (mNavigateY != 0))) + if ((direction != 0U) + && ((mNavigateDest.x != 0) || (mNavigateDest.y != 0))) + { navigateClean(); + } if ((direction != 0U) && (settings.moveType >= 2 && settings.moveType <= 4)) @@ -2113,7 +2114,8 @@ void LocalPlayer::afkRespond(ChatTab *const tab, const std::string &nick) } } -bool LocalPlayer::navigateTo(const int x, const int y) + +bool LocalPlayer::navigateTo(const Position& to) { if (mMap == nullptr) return false; @@ -2127,15 +2129,14 @@ bool LocalPlayer::navigateTo(const int x, const int y) mOldY = mPixelY; mOldTileX = mX; mOldTileY = mY; - mNavigateX = x; - mNavigateY = y; + mNavigateDest = to; mNavigateId = BeingId_zero; mNavigatePath = mMap->findPath( (mPixelX - mapTileSize / 2) / mapTileSize, (mPixelY - mapTileSize) / mapTileSize, - x, - y, + to.x, + to.y, getBlockWalkMask(), 0); @@ -2144,6 +2145,7 @@ bool LocalPlayer::navigateTo(const int x, const int y) return !mNavigatePath.empty(); } + void LocalPlayer::navigateClean() { if (mMap == nullptr) @@ -2154,8 +2156,7 @@ void LocalPlayer::navigateClean() mOldY = 0; mOldTileX = 0; mOldTileY = 0; - mNavigateX = 0; - mNavigateY = 0; + mNavigateDest = {0, 0}; mNavigateId = BeingId_zero; mNavigatePath.clear(); @@ -2223,11 +2224,10 @@ void LocalPlayer::updateCoords() navigateClean(); return; } - mNavigateX = being->mX; - mNavigateY = being->mY; + mNavigateDest = {being->mX, being->mY}; } - if (mNavigateX == x && mNavigateY == y) + if (mNavigateDest.x == x && mNavigateDest.y == y) { navigateClean(); return; @@ -2529,7 +2529,7 @@ void LocalPlayer::followMoveTo(const Being *const being, being->mName == mPlayerFollowed) { mPickUpTarget = nullptr; - navigateTo(x, y); + navigateTo({x, y}); } } @@ -2547,20 +2547,20 @@ void LocalPlayer::followMoveTo(const Being *const being, switch (settings.followMode) { case 0: - navigateTo(x1, y1); + navigateTo({x1, y1}); setNextDest(x2, y2); break; case 1: if (x1 != x2 || y1 != y2) { - navigateTo(mX + x2 - x1, mY + y2 - y1); + navigateTo({mX + x2 - x1, mY + y2 - y1}); setNextDest(mX + x2 - x1, mY + y2 - y1); } break; case 2: if (x1 != x2 || y1 != y2) { - navigateTo(mX + x1 - x2, mY + y1 - y2); + navigateTo({mX + x1 - x2, mY + y1 - y2}); setNextDest(mX + x1 - x2, mY + y1 - y2); } break; @@ -2638,13 +2638,13 @@ void LocalPlayer::fixPos() #endif setTileCoords(mCrossX, mCrossY); /* - if (mNavigateX != 0 || mNavigateY != 0) + if (mNavigateDest.x != 0 || mNavigateDest.y != 0) { #ifdef ENABLEDEBUGLOG logger->dlog(strprintf("Renavigate to (%d,%d)", - mNavigateX, mNavigateY)); + mNavigateDest.x, mNavigateDest.y)); #endif - navigateTo(mNavigateX, mNavigateY); + navigateTo({mNavigateDest.x, mNavigateDest.y}); } */ // alternative way to fix, move to real position |