summaryrefslogtreecommitdiff
path: root/src/being/localplayer.cpp
diff options
context:
space:
mode:
authorFedja Beader <fedja@protonmail.ch>2025-02-20 22:02:00 +0000
committerFedja Beader <fedja@protonmail.ch>2025-02-20 22:02:00 +0000
commitbb5d5bef365c65fed4fa32c3ac2ce384b2ea4e52 (patch)
tree003b8a99a17f76592a89b72d9f007ceb6b626b55 /src/being/localplayer.cpp
parent530545589cdaf6d1664438e885d0b4e538684d9b (diff)
downloadmanaplus-bb5d5bef365c65fed4fa32c3ac2ce384b2ea4e52.tar.gz
manaplus-bb5d5bef365c65fed4fa32c3ac2ce384b2ea4e52.tar.bz2
manaplus-bb5d5bef365c65fed4fa32c3ac2ce384b2ea4e52.tar.xz
manaplus-bb5d5bef365c65fed4fa32c3ac2ce384b2ea4e52.zip
Convert navigateTo to take a Position instead of two integers.
Tile coordinates dance in pairs, so let's pair them up. also grows exe size by about 3K, hope this will go away when the rest is converted to Position as well. Note: on my local debug build only. Not on gcc10 CI. Squashed with: * Should it be mNavigateDest or mNavigateTo? Hmm, the jury is still out there ... **** mana/plus!116
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