More fixes in minimap
This commit is contained in:
parent
89c012e81f
commit
a0b2504f11
|
@ -106,21 +106,17 @@ void Minimap::draw(const Rect& screenRect, const Position& mapCenter, float scal
|
||||||
g_painter->drawFilledRect(screenRect);
|
g_painter->drawFilledRect(screenRect);
|
||||||
g_painter->resetColor();
|
g_painter->resetColor();
|
||||||
g_painter->setClipRect(screenRect);
|
g_painter->setClipRect(screenRect);
|
||||||
g_painter->translate(screenRect.topLeft());
|
|
||||||
|
|
||||||
Point p = getBlockOffset(mapRect.topLeft() - Point(1,1));
|
Point blockOff = getBlockOffset(mapRect.topLeft());
|
||||||
g_painter->translate(-(mapRect.topLeft() - p)*scale);
|
Point off = Point((mapRect.size() * scale).toPoint() - screenRect.size().toPoint())/2;
|
||||||
|
Point start = screenRect.topLeft() -(mapRect.topLeft() - blockOff)*scale - off;
|
||||||
|
|
||||||
Size wantedSize = mapRect.size() * scale;
|
for(int y = blockOff.y, ys = start.y;ys<screenRect.bottom();y += MMBLOCK_SIZE, ys += MMBLOCK_SIZE*scale) {
|
||||||
Point off = Point(wantedSize.toPoint() - screenRect.size().toPoint())/2;
|
if(y < 0 || y >= 65536)
|
||||||
g_painter->translate(-off);
|
|
||||||
|
|
||||||
for(int y = p.y, ys = 0;y<=mapRect.bottom()+1;y += MMBLOCK_SIZE, ys += MMBLOCK_SIZE*scale) {
|
|
||||||
if(y < 0 || y >= 65536 - MMBLOCK_SIZE)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for(int x = p.x, xs = 0;x<=mapRect.right()+1;x += MMBLOCK_SIZE, xs += MMBLOCK_SIZE*scale) {
|
for(int x = blockOff.x, xs = start.x;xs<screenRect.right();x += MMBLOCK_SIZE, xs += MMBLOCK_SIZE*scale) {
|
||||||
if(x < 0 || x >= 65536 - MMBLOCK_SIZE)
|
if(x < 0 || x >= 65536)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Position blockPos(x, y, mapCenter.z);
|
Position blockPos(x, y, mapCenter.z);
|
||||||
|
@ -182,7 +178,7 @@ Rect Minimap::calcMapRect(const Rect& screenRect, const Position& mapCenter, flo
|
||||||
h++;
|
h++;
|
||||||
scale *= 2;
|
scale *= 2;
|
||||||
} while(w > 8192 || h > 8192);
|
} while(w > 8192 || h > 8192);
|
||||||
Rect mapRect(0,0,h,w);
|
Rect mapRect(0,0,w,h);
|
||||||
mapRect.moveCenter(Point(mapCenter.x, mapCenter.y));
|
mapRect.moveCenter(Point(mapCenter.x, mapCenter.y));
|
||||||
return mapRect;
|
return mapRect;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue