1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-26 03:52:01 +02:00

Minor tweaks for hiding tiles, now it belongs to CGObjectInstance class.

This commit is contained in:
DjWarmonger 2010-06-19 09:13:10 +00:00
parent ea150305a2
commit a53be2d382
3 changed files with 18 additions and 23 deletions

View File

@ -422,6 +422,20 @@ void CGObjectInstance::getSightTiles(std::set<int3> &tiles) const //returns refe
{
cb->getTilesInRange(tiles, getSightCenter(), getSightRadious(), tempOwner, 1);
}
void CGObjectInstance::hideTiles(int ourplayer, int radius) const
{
for (std::map<ui8, PlayerState>::iterator i = cb->gameState()->players.begin(); i != cb->gameState()->players.end(); i++)
{
if (ourplayer != i->first && i->second.status == PlayerState::INGAME) //TODO: team support
{
FoWChange fw;
fw.mode = 0;
fw.player = i->first;
cb->getTilesInRange (fw.tiles, pos, radius, i->first, -1);
cb->sendAndApply (&fw);
}
}
}
int3 CGObjectInstance::getVisitableOffset() const
{
for(int y = 0; y < 6; y++)
@ -4470,17 +4484,7 @@ void CGObservatory::onHeroVisit( const CGHeroInstance * h ) const
case 15://cover of darkness
{
iw.text.addTxt (MetaString::ADVOB_TXT, 31);
for (std::map<ui8, PlayerState>::iterator i = cb->gameState()->players.begin(); i != cb->gameState()->players.end(); i++)
{
if (h->tempOwner != i->first && i->second.status == PlayerState::INGAME) //TODO: team support
{
FoWChange fw;
fw.mode = 0;
fw.player = i->first;
cb->getTilesInRange (fw.tiles, pos, 20, i->first, -1);
cb->sendAndApply (&fw);
}
}
hideTiles(h->tempOwner, 20);
break;
}
}

View File

@ -190,6 +190,7 @@ public:
bool hasShadowAt(int x, int y) const;//returns true if object covers with shadow location (x, y) form left top tile of maximal possible image (8 x 6 tiles) (x, y in tiles)
std::set<int3> getBlockedPos() const; //returns set of positions blocked by this object
bool operator<(const CGObjectInstance & cmp) const; //screen printing priority comparing
void hideTiles(int ourplayer, int radius) const;
CGObjectInstance();
virtual ~CGObjectInstance();
//CGObjectInstance(const CGObjectInstance & right);

View File

@ -1037,19 +1037,9 @@ void CGameHandler::newTurn()
}
if ((**j).hasBonusOfType (Bonus::DARKNESS))
{
for (std::map<ui8, PlayerState>::iterator i = gs->players.begin(); i != gs->players.end(); i++)
{
if (player != i->first && i->second.status == PlayerState::INGAME) //TODO: team support
{
FoWChange fw;
fw.mode = 0;
fw.player = i->first;
getTilesInRange (fw.tiles, (**j).getSightCenter(), (**j).getBonus(Selector::type(Bonus::DARKNESS))->val, i->first, -1);
sendAndApply (&fw);
}
}
(**j).hideTiles((**j).getOwner(), (**j).getBonus(Selector::type(Bonus::DARKNESS))->val);
}
//unhiding what shouldn't be hidden?
//unhiding what shouldn't be hidden? //that's handled in netpacks client
}
sendAndApply(&n);