mirror of
https://github.com/vcmi/vcmi.git
synced 2024-11-24 08:32:34 +02:00
Fix terrain tooltip
This commit is contained in:
parent
387a7b421a
commit
6196d538e7
@ -1148,14 +1148,13 @@ void CAdvMapInt::onTileHovered(const int3 &mapPos)
|
||||
std::string text = curHero() ? objAtTile->getHoverText(curHero()) : objAtTile->getHoverText(LOCPLINT->playerID);
|
||||
boost::replace_all(text,"\n"," ");
|
||||
statusbar->write(text);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string hlp;
|
||||
CGI->mh->getTerrainDescr(mapPos, hlp, false);
|
||||
statusbar->write(hlp);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string hlp = CGI->mh->getTerrainDescr(mapPos, false);
|
||||
statusbar->write(hlp);
|
||||
}
|
||||
|
||||
if(spellBeingCasted)
|
||||
{
|
||||
switch(spellBeingCasted->id)
|
||||
@ -1306,16 +1305,15 @@ void CAdvMapInt::onTileRightClicked(const int3 &mapPos)
|
||||
|
||||
const CGObjectInstance * obj = getActiveObject(mapPos);
|
||||
if(!obj)
|
||||
{
|
||||
// Bare or undiscovered terrain
|
||||
const TerrainTile * tile = LOCPLINT->cb->getTile(mapPos);
|
||||
if (tile)
|
||||
{
|
||||
std::string hlp;
|
||||
CGI->mh->getTerrainDescr(mapPos, hlp, true);
|
||||
CRClickPopup::createAndPush(hlp);
|
||||
}
|
||||
return;
|
||||
{
|
||||
// Bare or undiscovered terrain
|
||||
const TerrainTile * tile = LOCPLINT->cb->getTile(mapPos);
|
||||
if(tile)
|
||||
{
|
||||
std::string hlp = CGI->mh->getTerrainDescr(mapPos, true);
|
||||
CRClickPopup::createAndPush(hlp);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
CRClickPopup::createAndPush(obj, GH.getCursorPosition(), ETextAlignment::CENTER);
|
||||
|
@ -14,6 +14,7 @@
|
||||
|
||||
#include "../CGameInfo.h"
|
||||
#include "../CPlayerInterface.h"
|
||||
#include "../CCallback.h"
|
||||
|
||||
#include "../../lib/UnlockGuard.h"
|
||||
#include "../../lib/mapObjects/CGHeroInstance.h"
|
||||
@ -40,41 +41,32 @@ void CMapHandler::waitForOngoingAnimations()
|
||||
}
|
||||
}
|
||||
|
||||
void CMapHandler::getTerrainDescr(const int3 & pos, std::string & out, bool isRMB) const
|
||||
std::string CMapHandler::getTerrainDescr(const int3 & pos, bool rightClick) const
|
||||
{
|
||||
const TerrainTile & t = map->getTile(pos);
|
||||
|
||||
if(t.hasFavorableWinds())
|
||||
return CGI->objtypeh->getObjectName(Obj::FAVORABLE_WINDS, 0);
|
||||
|
||||
std::string result = t.terType->getNameTranslated();
|
||||
|
||||
for(const auto & object : map->objects)
|
||||
{
|
||||
out = CGI->objtypeh->getObjectName(Obj::FAVORABLE_WINDS, 0);
|
||||
return;
|
||||
if(object->coveringAt(pos.x, pos.y) && object->pos.z == pos.z && object->isTile2Terrain())
|
||||
{
|
||||
result = object->getObjectName();
|
||||
break;
|
||||
}
|
||||
}
|
||||
//const TerrainTile2 & tt = ttiles[pos.z][pos.x][pos.y];
|
||||
bool isTile2Terrain = false;
|
||||
out.clear();
|
||||
|
||||
//for(auto & elem : tt.objects)
|
||||
//{
|
||||
// if(elem.obj)
|
||||
// {
|
||||
// out = elem.obj->getObjectName();
|
||||
// if(elem.obj->ID == Obj::HOLE)
|
||||
// return;
|
||||
|
||||
// isTile2Terrain = elem.obj->isTile2Terrain();
|
||||
// break;
|
||||
// }
|
||||
//}
|
||||
|
||||
if(!isTile2Terrain || out.empty())
|
||||
out = t.terType->getNameTranslated();
|
||||
|
||||
if(t.getDiggingStatus(false) == EDiggingStatus::CAN_DIG)
|
||||
if(LOCPLINT->cb->getTileDigStatus(pos, false) == EDiggingStatus::CAN_DIG)
|
||||
{
|
||||
out = boost::str(boost::format(isRMB ? "%s\r\n%s" : "%s %s") // New line for the Message Box, space for the Status Bar
|
||||
% out
|
||||
return boost::str(boost::format(rightClick ? "%s\r\n%s" : "%s %s") // New line for the Message Box, space for the Status Bar
|
||||
% result
|
||||
% CGI->generaltexth->allTexts[330]); // 'digging ok'
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool CMapHandler::compareObjectBlitOrder(const CGObjectInstance * a, const CGObjectInstance * b)
|
||||
|
@ -72,7 +72,7 @@ public:
|
||||
void removeMapObserver(IMapObjectObserver * observer);
|
||||
|
||||
/// returns string description for terrain interaction
|
||||
void getTerrainDescr(const int3 & pos, std::string & out, bool isRMB) const;
|
||||
std::string getTerrainDescr(const int3 & pos, bool rightClick) const;
|
||||
|
||||
/// returns list of ambient sounds for specified tile
|
||||
std::vector<std::string> getAmbientSounds(const int3 & tile);
|
||||
|
Loading…
Reference in New Issue
Block a user