1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-29 23:07:48 +02:00

Add object lock and zoom functinoality

This commit is contained in:
nordsoft
2023-10-13 05:21:09 +02:00
parent 006def7690
commit d85c5189ba
12 changed files with 207 additions and 28 deletions

View File

@@ -322,8 +322,11 @@ std::vector<TileObject> & MapHandler::getObjects(int x, int y, int z)
return ttiles[index(x, y, z)];
}
void MapHandler::drawObjects(QPainter & painter, int x, int y, int z)
void MapHandler::drawObjects(QPainter & painter, int x, int y, int z, const std::set<const CGObjectInstance *> & locked)
{
painter.setRenderHint(QPainter::Antialiasing, false);
painter.setRenderHint(QPainter::SmoothPixmapTransform, false);
for(auto & object : getObjects(x, y, z))
{
const CGObjectInstance * obj = object.obj;
@@ -343,8 +346,15 @@ void MapHandler::drawObjects(QPainter & painter, int x, int y, int z)
{
auto pos = obj->getPosition();
painter.drawImage(QPoint(x * tileSize, y * tileSize), *objData.objBitmap, object.rect);
painter.drawImage(QPoint(x * tileSize, y * tileSize), *objData.objBitmap, object.rect, Qt::AutoColor | Qt::NoOpaqueDetection);
if(locked.count(obj))
{
painter.setCompositionMode(QPainter::CompositionMode_DestinationIn);
painter.fillRect(x * tileSize, y * tileSize, object.rect.width(), object.rect.height(), Qt::Dense4Pattern);
painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
}
if(objData.flagBitmap)
{
if(x == pos.x && y == pos.y)