1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +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())
return;
duringMovement = true;
setMovementStatus(true);
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));
}
bool CPlayerInterface::shiftPressed() const
@ -1559,6 +1557,7 @@ void CPlayerInterface::centerView (int3 pos, int focusTime)
{
EVENT_HANDLER_CALLED_BY_CLIENT;
waitWhileDialog();
CCS->curh->hide();
adventureInt->centerOn (pos);
if(focusTime)
{
@ -1569,6 +1568,7 @@ void CPlayerInterface::centerView (int3 pos, int focusTime)
SDL_Delay(focusTime);
}
}
CCS->curh->show();
}
void CPlayerInterface::objectRemoved( const CGObjectInstance *obj )
@ -2633,6 +2633,19 @@ bool CPlayerInterface::capturedAllEvents()
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)
{
int i = 1;
@ -2777,7 +2790,7 @@ void CPlayerInterface::doMoveHero(const CGHeroInstance * h, CGPath path)
adventureInt->updateNextHero(h);
}
duringMovement = false;
setMovementStatus(false);
}
void CPlayerInterface::showWorldViewEx(const std::vector<ObjectPosInfo>& objectPositions)

View File

@ -197,7 +197,7 @@ public:
void showComp(const Component &comp, std::string message) override; //display component in the advmapint infobox
void saveGame(COSer & h, const int version) override; //saving
void loadGame(CISer & h, const int version) override; //loading
void showWorldViewEx(const std::vector<ObjectPosInfo> & objectPositions) override;
void showWorldViewEx(const std::vector<ObjectPosInfo> & objectPositions) override;
//for battles
void actionFinished(const BattleAction& action) override;//occurs AFTER action taken by active stack or by the hero
@ -295,6 +295,7 @@ private:
bool ignoreEvents;
void doMoveHero(const CGHeroInstance *h, CGPath path);
void setMovementStatus(bool value);
};
extern CPlayerInterface * LOCPLINT;

View File

@ -103,16 +103,16 @@ std::string CGCreature::getHoverText(const CGHeroInstance * hero) const
{
std::string hoverName;
if(hero->hasVisions(this, 0))
{
{
MetaString ms;
ms << stacks.begin()->second->count;
ms << " " ;
ms.addTxt(MetaString::CRE_PL_NAMES,subID);
ms << "\n";
int decision = takenAction(hero, true);
switch (decision)
{
case FIGHT:
@ -123,19 +123,19 @@ std::string CGCreature::getHoverText(const CGHeroInstance * hero) const
break;
case JOIN_FOR_FREE:
ms.addTxt(MetaString::GENERAL_TXT,243);
break;
break;
default: //decision = cost in gold
VLC->generaltexth->allTexts[244];
ms << boost::to_string(boost::format(VLC->generaltexth->allTexts[244]) % decision);
ms << boost::to_string(boost::format(VLC->generaltexth->allTexts[244]) % decision);
break;
}
}
ms.toString(hoverName);
ms.toString(hoverName);
}
else
{
hoverName = getHoverText(hero->tempOwner);
}
hoverName = getHoverText(hero->tempOwner);
}
const JsonNode & texts = VLC->generaltexth->localizedTexts["adventureMap"]["monsterThreat"];
@ -1667,6 +1667,7 @@ void CGMagi::onHeroVisit(const CGHeroInstance * h) const
cb->sendAndApply(&cv);
}
cv.pos = h->getPosition(false);
cv.focusTime = 0;
cb->sendAndApply(&cv);
}
}
@ -1745,7 +1746,7 @@ void CGShipyard::getOutOffsets( std::vector<int3> &offsets ) const
int3(-3,0,0), int3(1,0,0), //AB
int3(-3,1,0), int3(1,1,0), int3(-2,1,0), int3(0,1,0), int3(-1,1,0), //CDEFG
int3(-3,-1,0), int3(1,-1,0), int3(-2,-1,0), int3(0,-1,0), int3(-1,-1,0) //HIJKL
};
};
}
void CGShipyard::onHeroVisit( const CGHeroInstance * h ) const