1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-15 00:05:02 +02:00

Fixed #1820, better detection of object below cursor that uses same logic as renderer

This commit is contained in:
Ivan Savenko
2014-07-01 17:19:08 +03:00
parent bae9f2083f
commit c956b3f02a
5 changed files with 21 additions and 10 deletions

View File

@ -308,6 +308,7 @@ bool CRewardableObject::wasVisited (PlayerColor player) const
switch (visitMode)
{
case VISIT_UNLIMITED:
case VISIT_BONUS:
return false;
case VISIT_ONCE: // FIXME: hide this info deeper and return same as player?
for (auto & visit : info)
@ -329,6 +330,8 @@ bool CRewardableObject::wasVisited (const CGHeroInstance * h) const
switch (visitMode)
{
case VISIT_UNLIMITED:
return false;
case VISIT_BONUS:
return h->hasBonusFrom(Bonus::OBJECT, ID);
case VISIT_HERO:
return h->visitedObjects.count(ObjectInstanceID(id));
@ -389,7 +392,7 @@ static std::string & visitedTxt(const bool visited)
std::string CRewardableObject::getHoverText(PlayerColor player) const
{
if(visitMode != VISIT_UNLIMITED)
if(visitMode == VISIT_PLAYER || visitMode == VISIT_ONCE)
return getObjectName() + " " + visitedTxt(wasVisited(player));
return getObjectName();
}
@ -611,7 +614,7 @@ void CGPickable::initObj()
CGBonusingObject::CGBonusingObject()
{
visitMode = VISIT_UNLIMITED;
visitMode = VISIT_BONUS;
selectMode = SELECT_FIRST;
}