1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-26 22:57:00 +02:00

Merge pull request #169 from vmarkovtsev/issue/2014

Fix 2014 cursor must disappear during movement and Magi's Eye
This commit is contained in:
Alexander Shishkin 2016-01-23 01:54:15 +03:00
commit 17d0e9c66e
3 changed files with 31 additions and 16 deletions

View File

@ -1335,7 +1335,7 @@ void CPlayerInterface::moveHero( const CGHeroInstance *h, CGPath path )
if(showingDialog->get() || !dialogs.empty()) if(showingDialog->get() || !dialogs.empty())
return; return;
duringMovement = true; setMovementStatus(true);
if (adventureInt && adventureInt->isHeroSleeping(h)) if (adventureInt && adventureInt->isHeroSleeping(h))
{ {
@ -1347,8 +1347,6 @@ void CPlayerInterface::moveHero( const CGHeroInstance *h, CGPath path )
} }
boost::thread moveHeroTask(std::bind(&CPlayerInterface::doMoveHero,this,h,path)); boost::thread moveHeroTask(std::bind(&CPlayerInterface::doMoveHero,this,h,path));
} }
bool CPlayerInterface::shiftPressed() const bool CPlayerInterface::shiftPressed() const
@ -1559,6 +1557,7 @@ void CPlayerInterface::centerView (int3 pos, int focusTime)
{ {
EVENT_HANDLER_CALLED_BY_CLIENT; EVENT_HANDLER_CALLED_BY_CLIENT;
waitWhileDialog(); waitWhileDialog();
CCS->curh->hide();
adventureInt->centerOn (pos); adventureInt->centerOn (pos);
if(focusTime) if(focusTime)
{ {
@ -1569,6 +1568,7 @@ void CPlayerInterface::centerView (int3 pos, int focusTime)
SDL_Delay(focusTime); SDL_Delay(focusTime);
} }
} }
CCS->curh->show();
} }
void CPlayerInterface::objectRemoved( const CGObjectInstance *obj ) void CPlayerInterface::objectRemoved( const CGObjectInstance *obj )
@ -2633,6 +2633,19 @@ bool CPlayerInterface::capturedAllEvents()
return false; return false;
} }
void CPlayerInterface::setMovementStatus(bool value)
{
duringMovement = value;
if(value)
{
CCS->curh->hide();
}
else
{
CCS->curh->show();
}
}
void CPlayerInterface::doMoveHero(const CGHeroInstance * h, CGPath path) void CPlayerInterface::doMoveHero(const CGHeroInstance * h, CGPath path)
{ {
int i = 1; int i = 1;
@ -2777,7 +2790,7 @@ void CPlayerInterface::doMoveHero(const CGHeroInstance * h, CGPath path)
adventureInt->updateNextHero(h); adventureInt->updateNextHero(h);
} }
duringMovement = false; setMovementStatus(false);
} }
void CPlayerInterface::showWorldViewEx(const std::vector<ObjectPosInfo>& objectPositions) void CPlayerInterface::showWorldViewEx(const std::vector<ObjectPosInfo>& objectPositions)

View File

@ -295,6 +295,7 @@ private:
bool ignoreEvents; bool ignoreEvents;
void doMoveHero(const CGHeroInstance *h, CGPath path); void doMoveHero(const CGHeroInstance *h, CGPath path);
void setMovementStatus(bool value);
}; };
extern CPlayerInterface * LOCPLINT; extern CPlayerInterface * LOCPLINT;

View File

@ -1667,6 +1667,7 @@ void CGMagi::onHeroVisit(const CGHeroInstance * h) const
cb->sendAndApply(&cv); cb->sendAndApply(&cv);
} }
cv.pos = h->getPosition(false); cv.pos = h->getPosition(false);
cv.focusTime = 0;
cb->sendAndApply(&cv); cb->sendAndApply(&cv);
} }
} }