|
|
@@ -17,6 +17,7 @@
|
|
|
#include "../render/Colors.h"
|
|
|
#include "../render/EFont.h"
|
|
|
#include "../render/IFont.h"
|
|
|
+#include "../render/IScreenHandler.h"
|
|
|
#include "../render/IRenderHandler.h"
|
|
|
#include "../render/Graphics.h"
|
|
|
#include "../gui/TextAlignment.h"
|
|
|
@@ -30,24 +31,20 @@ MapOverlayLogVisualizer::MapOverlayLogVisualizer(Canvas & target, std::shared_pt
|
|
|
|
|
|
void MapOverlayLogVisualizer::drawLine(int3 start, int3 end)
|
|
|
{
|
|
|
- const Point offset = Point(30, 30);
|
|
|
-
|
|
|
auto level = model->getLevel();
|
|
|
|
|
|
if(start.z != level || end.z != level)
|
|
|
return;
|
|
|
|
|
|
- auto pStart = model->getTargetTileArea(start).topLeft();
|
|
|
- auto pEnd = model->getTargetTileArea(end).topLeft();
|
|
|
- auto viewPort = target.getRenderArea();
|
|
|
-
|
|
|
- pStart.x += 3;
|
|
|
- pEnd.x -= 3;
|
|
|
+ int scaling = GH.screenHandler().getScalingFactor();
|
|
|
+ auto pStart = model->getTargetTileArea(start).center();
|
|
|
+ auto pEnd = model->getTargetTileArea(end).center();
|
|
|
+ Rect viewPortRaw = target.getRenderArea();
|
|
|
+ Rect viewPort(viewPortRaw.topLeft() / scaling, viewPortRaw.dimensions() / scaling );
|
|
|
|
|
|
- pStart += offset;
|
|
|
- pEnd += offset;
|
|
|
+ Point workaroundOffset(8,8); // not sure why it is needed. Removing leads to incorrect clipping near view edges
|
|
|
|
|
|
- if(viewPort.isInside(pStart) && viewPort.isInside(pEnd))
|
|
|
+ if(viewPort.isInside(pStart + workaroundOffset) && viewPort.isInside(pEnd + workaroundOffset))
|
|
|
{
|
|
|
target.drawLine(pStart, pEnd, ColorRGBA(255, 255, 0), ColorRGBA(255, 0, 0));
|
|
|
}
|