summaryrefslogtreecommitdiff
path: root/kurator
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2023-02-04 01:04:03 +0100
committerAki <please@ignore.pl>2023-02-04 01:04:03 +0100
commitfb1d3eda51cd9d89083130cf9932c7bde758756c (patch)
tree6924eaaf8847cd8046e4ff3b37ee7c86380551e8 /kurator
parentff51d69ede2e6e9393e3a9d349ea645ae65c5bb7 (diff)
downloadkurator-fb1d3eda51cd9d89083130cf9932c7bde758756c.zip
kurator-fb1d3eda51cd9d89083130cf9932c7bde758756c.tar.gz
kurator-fb1d3eda51cd9d89083130cf9932c7bde758756c.tar.bz2
Full grid is now drawn
Diffstat (limited to 'kurator')
-rw-r--r--kurator/src/Grid.cpp36
1 files changed, 22 insertions, 14 deletions
diff --git a/kurator/src/Grid.cpp b/kurator/src/Grid.cpp
index 4243bc9..633b906 100644
--- a/kurator/src/Grid.cpp
+++ b/kurator/src/Grid.cpp
@@ -1,5 +1,7 @@
#include "Grid.h"
+#include <cmath>
+
#include <raylib.h>
#include <kurator/engine/Camera.h>
@@ -9,23 +11,29 @@ namespace kurator
{
+constexpr Color GRID {0x11, 0x11, 0x11, 0xff};
+constexpr Color CENTER {0x31, 0x31, 0x31, 0xff};
+
+
void
Grid::draw(const engine::Camera& camera) const
{
- const int width = GetScreenWidth();
- const int height = GetScreenHeight();
- DrawLine(
- width/2 - camera.offset.x*camera.scale,
- 0,
- width/2 - camera.offset.x*camera.scale,
- height,
- DARKGRAY);
- DrawLine(
- 0,
- height/2 - camera.offset.y*camera.scale,
- width,
- height/2 - camera.offset.y*camera.scale,
- DARKGRAY);
+ constexpr double step = 1000.0;
+ auto start = camera.top_left();
+ start.x = std::round(start.x / step) * step;
+ start.y = std::round(start.y / step) * step;
+ const auto end = camera.bottom_right();
+ auto point = start;
+ while (point.x < end.x || point.y < end.y) {
+ const auto projected = camera.to_screen(point);
+ DrawLine(projected.x, 0, projected.x, GetScreenHeight(), GRID);
+ DrawLine(0, projected.y, GetScreenWidth(), projected.y, GRID);
+ point.x += step;
+ point.y += step;
+ }
+ const auto center = camera.to_screen({0.0, 0.0});
+ DrawLine(center.x, 0, center.x, GetScreenHeight(), CENTER);
+ DrawLine(0, center.y, GetScreenWidth(), center.y, CENTER);
}