diff --git a/lang/de.json b/lang/de.json index fa13a3b..521397c 100644 --- a/lang/de.json +++ b/lang/de.json @@ -12,6 +12,7 @@ "text": "Drag Ruler benötigt das socketlib-Modul, um korrekt zu funktionieren. Bitte aktiviere das socketlib-Modul in dieser Welt." } }, + "resetMovementHistory": "Bewegungsverlauf zurücksetzen", "genericSpeedProvider": { "settings": { "dashMultiplier": { diff --git a/lang/en.json b/lang/en.json index 903b1d0..5c6113e 100644 --- a/lang/en.json +++ b/lang/en.json @@ -12,6 +12,7 @@ "text": "Drag Ruler requires the socketlib module to work properly. Please activate the socketlib module in this world." } }, + "resetMovementHistory": "Reset Movement History", "genericSpeedProvider": { "settings": { "dashMultiplier": { diff --git a/src/main.js b/src/main.js index a9e9996..7fcf401 100644 --- a/src/main.js +++ b/src/main.js @@ -5,7 +5,7 @@ import {checkDependencies, getHexSizeSupportTokenGridCenter} from "./compatibili import {moveTokens, onMouseMove} from "./foundry_imports.js" import {performMigrations} from "./migration.js" import {DragRulerRuler} from "./ruler.js"; -import {getMovementHistory} from "./movement_tracking.js"; +import {getMovementHistory, resetMovementHistory} from "./movement_tracking.js"; import {registerSettings, settingsKey} from "./settings.js" import {SpeedProvider} from "./speed_provider.js" @@ -42,6 +42,15 @@ Hooks.on("canvasReady", () => { }) }) +Hooks.on("getCombatTrackerEntryContext", function (html, menu) { + const entry = { + name: "drag-ruler.resetMovementHistory", + icon: '', + callback: li => resetMovementHistory(ui.combat.combat, li.data('combatant-id')), + }; + menu.splice(1, 0, entry); +}); + function hookTokenDragHandlers() { const originalDragLeftStartHandler = Token.prototype._onDragLeftStart Token.prototype._onDragLeftStart = function(event) { diff --git a/src/movement_tracking.js b/src/movement_tracking.js index c0552b9..940e4df 100644 --- a/src/movement_tracking.js +++ b/src/movement_tracking.js @@ -72,3 +72,14 @@ export function getMovementHistory(token) { return []; return dragRulerFlags.passedWaypoints ?? []; } + +export async function resetMovementHistory(combat, combatantId) { + const combatant = combat.getCombatant(combatantId); + const dragRulerFlags = combatant.flags.dragRuler; + if (!dragRulerFlags) + return; + dragRulerFlags.passedWaypoints = undefined; + dragRulerFlags.trackedRound = undefined; + dragRulerFlags.rulerState = undefined; + await updateCombatantDragRulerFlags(combat, combatant, dragRulerFlags); +} diff --git a/src/socket.js b/src/socket.js index 80530b3..a8c6b95 100644 --- a/src/socket.js +++ b/src/socket.js @@ -5,7 +5,7 @@ Hooks.once("socketlib.ready", () => { socket.register("updateCombatantDragRulerFlags", _socketUpdateCombatantDragRulerFlags); }); -export async function updateCombatantDragRulerFlags(combat, combatant, flags) { +export function updateCombatantDragRulerFlags(combat, combatant, flags) { const combatId = combat.id; const combatantId = combatant._id; return socket.executeAsGM(_socketUpdateCombatantDragRulerFlags, combatId, combatantId, flags);