summaryrefslogtreecommitdiff
path: root/src/being/localplayer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/being/localplayer.cpp')
-rw-r--r--src/being/localplayer.cpp60
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