diff options
| author | Kirill Petrashin <kirill8201@yandex.ru> | 2026-04-23 14:42:55 +0300 |
|---|---|---|
| committer | Kirill Petrashin <kirill8201@yandex.ru> | 2026-04-23 14:42:55 +0300 |
| commit | b4b83c53db8b79a2141ef43ce9d3567f482462ee (patch) | |
| tree | 14e93576b7dc2e846cc60981e27bc71e620fed5f /map.c | |
| parent | 53ed90ab4f3b493f1c3abd4aff4fa45f3f8a0909 (diff) | |
| download | astar-b4b83c53db8b79a2141ef43ce9d3567f482462ee.tar.xz | |
Allow switching amount of directions with a keybind
Diffstat (limited to 'map.c')
| -rw-r--r-- | map.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -659,6 +659,7 @@ void map_editor(Map *map, size_t *width, size_t *height, Position *start, Positi * [a] - Toggle pathfinding * * [d] - Switch algorithms (A* or Dijsktra's) + * [4] - Switch amount of directions (4 or 8) * * [r] - Reverse path * @@ -719,6 +720,15 @@ void map_editor(Map *map, size_t *width, size_t *height, Position *start, Positi case 'd': if (path_func == astar_path) { set_message("Dijkstra's"); path_func = &dijkstra_path; } else { set_message("A*"); path_func = &astar_path; }; + + path_free(path, *height); + if (should_pathfind) path = path_func(dirs, *map, NULL, *width, *height, *start, *goal, visited, 0); + break; + + case '4': + if (dirs == 4) { set_message("8 directions"); dirs = 8; } + else { set_message("4 directions"); dirs = 4; }; + path_free(path, *height); if (should_pathfind) path = path_func(dirs, *map, NULL, *width, *height, *start, *goal, visited, 0); break; |
