From 64028952ceb17f97ded08f1ab7ec0b06c41e2b87 Mon Sep 17 00:00:00 2001 From: Loek Le Blansch Date: Wed, 23 Oct 2024 14:36:41 +0200 Subject: add pathfinding start/end selection --- ViewController.cpp | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'ViewController.cpp') diff --git a/ViewController.cpp b/ViewController.cpp index 989f11a..ec0315d 100644 --- a/ViewController.cpp +++ b/ViewController.cpp @@ -66,7 +66,28 @@ void ViewController::update_artists() { } } +void ViewController::draw_pathfinding_dot(unsigned int x, unsigned int y, const Color & c) { + this->view.fill_rect(center({ + .x = static_cast(x * scale), + .y = static_cast(y * scale), + .width = static_cast(pathfinding_size), + .height = static_cast(pathfinding_size), + }), c); +} + void ViewController::update_pathfinding() { + + PathfindingContext & ctx = this->museum.pathfinding; + this->draw_pathfinding_dot(ctx.get_end().first, ctx.get_end().second, { + .red = 0x00, + .green = 0x00, + .blue = 0xdd, + }); + this->draw_pathfinding_dot(ctx.get_start().first, ctx.get_start().second, { + .red = 0xff, + .green = 0xff, + .blue = 0xff, + }); } void ViewController::update_quadtree_recursive(QuadTreeCollisionChecker * tree) { @@ -140,11 +161,11 @@ void ViewController::ev_mousedown(MouseCode button) { try { switch (button) { case MOUSE_LEFT: { - // TODO: pathfinding start point + this->museum.pathfinding.set_start(this->mouse_pos); break; } case MOUSE_RIGHT: { - // TODO: pathfinding end point + this->museum.pathfinding.set_end(this->mouse_pos); break; } default: break; @@ -161,3 +182,9 @@ void ViewController::ev_mousemove(unsigned x, unsigned y) { }; } +Rectangle ViewController::center(Rectangle rect) { + rect.x += (scale - rect.width) / 2; + rect.y += (scale - rect.height) / 2; + return rect; +} + -- cgit v1.2.3