aboutsummaryrefslogtreecommitdiff
path: root/DijkstraPathfinder.h
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-10-24 18:32:55 +0200
committerLoek Le Blansch <loek@pipeframe.xyz>2024-10-24 18:32:55 +0200
commitfaa82f0a6004026c94a6415baf5e138b48dc1629 (patch)
treeead573bf9ec72a74569b79724c732c17dd9d0fb3 /DijkstraPathfinder.h
parentafc66d3013b7d47c6c22d6a99809bc3e7d1ff0dc (diff)
implement weird dijkstra
Diffstat (limited to 'DijkstraPathfinder.h')
-rw-r--r--DijkstraPathfinder.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/DijkstraPathfinder.h b/DijkstraPathfinder.h
index af475dd..d02d9cb 100644
--- a/DijkstraPathfinder.h
+++ b/DijkstraPathfinder.h
@@ -1,9 +1,30 @@
#pragma once
+#include <unordered_map>
+
#include "Pathfinder.h"
class DijkstraPathfinder : public Pathfinder {
using Pathfinder::Pathfinder;
+public:
+ virtual void find_between(const XY &, const XY &);
+ virtual const Path & get_path();
+
+protected:
+ virtual void clear();
+
+private:
+ Path solution;
+ XY end;
+
+ struct Node {
+ XY parent;
+ unsigned int cost = -1;
+ };
+ Node & map_get(const XY &);
+ std::unordered_map<XY, Node> map;
+
+ void explore(const XY &, unsigned int cost = 0);
};