1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-03-19 21:10:12 +02:00

Fixed routing roads behind Sub Gates, Monoliths and Mines

This commit is contained in:
Tomasz Zieliński 2023-12-21 13:22:23 +01:00
parent d5f9de5beb
commit d4216a9191

View File

@ -600,13 +600,24 @@ void ObjectManager::placeObject(rmg::Object & object, bool guarded, bool updateD
//Cannot be trespassed (Corpse)
continue;
}
else if(instance->object().appearance->isVisitableFromTop())
{
//Passable objects
m->areaForRoads().add(instance->getVisitablePosition());
}
else if(!instance->object().appearance->isVisitableFromTop())
{
auto abovePos = instance->getVisitablePosition() + int3(0, -1, 0);
if (!instance->object().blockingAt(abovePos))
// Do not route road behind visitable tile
int3 visitablePos = instance->getVisitablePosition();
auto areaVisitable = rmg::Area({visitablePos});
auto borderAbove = areaVisitable.getBorderOutside();
vstd::erase_if(borderAbove, [&](const int3 & tile)
{
m->areaIsolated().add(abovePos);
}
return tile.y >= visitablePos.y ||
(!instance->object().blockingAt(tile + int3(0, 1, 0)) &&
instance->object().blockingAt(tile));
});
m->areaIsolated().unite(borderAbove);
}
}