From 4c006d34c9599c669d08227663b909e655bfb0e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=B6gele?= Date: Thu, 27 Jan 2022 23:58:51 +0100 Subject: [PATCH] Add keybinding for the pathfinding feature --- lang/de.json | 4 ++++ lang/en.json | 4 ++++ src/keybindings.js | 15 +++++++++++++++ src/pathfinding.js | 3 ++- src/settings.js | 1 + 5 files changed, 26 insertions(+), 1 deletion(-) diff --git a/lang/de.json b/lang/de.json index c7080f7..424a33b 100644 --- a/lang/de.json +++ b/lang/de.json @@ -40,6 +40,10 @@ "moveWithoutAnimation": { "name": "Token animation deaktivieren", "hint": "Wenn diese Taste gedrückt wird, während ein Token fallen gelassen wird, bewegt es sich ohne Animation zum Zielort." + }, + "togglePathfinding": { + "name": "Wegfindung umschalten", + "hint": "Wenn diese Taste gedrückt gehalten wird, während ein Token gezogen wird, wird die Wegfindung vorübergehend aktiviert/deaktiviert" } }, "settings": { diff --git a/lang/en.json b/lang/en.json index ef7e66a..fae78e3 100644 --- a/lang/en.json +++ b/lang/en.json @@ -40,6 +40,10 @@ "moveWithoutAnimation": { "name": "Disable token animation", "hint": "When being held while dropping a token, the token will move to the target location without animating" + }, + "togglePathfinding": { + "name": "Toggle pathfinding", + "hint": "When being held while dragging a token, the pathfinding functionality will be temporarily enabled/disabled" } }, "settings": { diff --git a/src/keybindings.js b/src/keybindings.js index 3db26c5..366bd66 100644 --- a/src/keybindings.js +++ b/src/keybindings.js @@ -3,6 +3,7 @@ import {getMeasurePosition, setSnapParameterOnOptions} from "./util.js"; export let disableSnap = false; export let moveWithoutAnimation = false; +export let togglePathfinding = false; export function registerKeybindings() { game.keybindings.register(settingsKey, "cancelDrag", { @@ -50,6 +51,16 @@ export function registerKeybindings() { }], precedence: -1, }); + + if (game.settings.get(settingsKey, "allowPathfinding")) { + game.keybindings.register(settingsKey, "togglePathfinding", { + name: "drag-ruler.keybindings.togglePathfinding.name", + hint: "drag-ruler.keybindings.togglePathfinding.hint", + onDown: handleTogglePathfinding, + onUp: handleTogglePathfinding, + precedence: -1, + }); + } } function handleDeleteWaypoint() { @@ -103,3 +114,7 @@ function handleDisableSnap(event) { function handleMoveWithoutAnimation(event) { moveWithoutAnimation = !event.up; } + +function handleTogglePathfinding(event) { + togglePathfinding = !event.up; +} diff --git a/src/pathfinding.js b/src/pathfinding.js index f885c56..708cc49 100644 --- a/src/pathfinding.js +++ b/src/pathfinding.js @@ -1,4 +1,5 @@ import {getCenterFromGridPositionObj} from "./foundry_fixes.js"; +import { togglePathfinding } from "./keybindings.js"; import {settingsKey} from "./settings.js"; // TODO Wipe cache if walls layer is being modified @@ -7,7 +8,7 @@ let cached_nodes = undefined; export function is_pathfinding_enabled() { if (!game.settings.get(settingsKey, "allowPathfinding")) return false; - return game.settings.get(settingsKey, "autoPathfinding") != game.keyboard.isDown("y") + return game.settings.get(settingsKey, "autoPathfinding") != togglePathfinding; } function get_node(pos, initialize=true) { diff --git a/src/settings.js b/src/settings.js index 11edfb9..7ba23b2 100644 --- a/src/settings.js +++ b/src/settings.js @@ -89,6 +89,7 @@ export function registerSettings() { config: true, type: Boolean, default: false, + onChange: () => location.reload(), }); game.settings.register(settingsKey, "autoPathfinding", {