From 5f61b3a8ec592bc251a08366656b55bdfe3736a0 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 27 Jul 2014 21:27:28 +0300 Subject: Fix height being position if player not moving. --- src/being/being.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'src/being/being.cpp') diff --git a/src/being/being.cpp b/src/being/being.cpp index 35e90590c..487749a0d 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -204,7 +204,8 @@ Being::Being(const int id, mAdvanced(false), mShop(false), mAway(false), - mInactive(false) + mInactive(false), + mNeedPosUpdate(true) { for (int f = 0; f < 20; f ++) { @@ -1385,6 +1386,7 @@ void Being::nextTile() mY = pos.y; const uint8_t height = mMap->getHeightOffset(mX, mY); mOffsetY = height - mOldHeight; + mNeedPosUpdate = true; setAction(BeingAction::MOVE, 0); } @@ -1451,8 +1453,9 @@ void Being::logic() } } - if (mAction == BeingAction::MOVE) + if (mAction == BeingAction::MOVE || mNeedPosUpdate) { + mNeedPosUpdate = false; const int xOffset = getXOffset(); const int yOffset = getYOffset(); int offset = xOffset; @@ -1469,11 +1472,6 @@ void Being::logic() + mapTileSize / 2 + xOffset), static_cast( mY * mapTileSize + mapTileSize + yOffset2)); } - else - { - setPosition(static_cast(mX * mapTileSize + mapTileSize / 2), - static_cast(mY * mapTileSize + mapTileSize)); - } if (mEmotionSprite) { @@ -3339,14 +3337,20 @@ void Being::setTileCoords(const int x, const int y) mX = x; mY = y; if (mMap) + { mOffsetY = mMap->getHeightOffset(mX, mY); + mNeedPosUpdate = true; + } } void Being::setMap(Map *const map) { ActorSprite::setMap(map); if (mMap) + { mOffsetY = mMap->getHeightOffset(mX, mY); + mNeedPosUpdate = true; + } } void Being::removeAllItemsParticles() -- cgit v1.2.3-60-g2f50