Add a context menu entry that the gm can use to reset the movement history

This commit is contained in:
Manuel Vögele
2021-04-26 11:09:56 +02:00
parent 908600bfa3
commit 70b166d844
5 changed files with 24 additions and 2 deletions
+1
View File
@@ -12,6 +12,7 @@
"text": "Drag Ruler benötigt das socketlib-Modul, um korrekt zu funktionieren. Bitte aktiviere das socketlib-Modul in dieser Welt." "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": { "genericSpeedProvider": {
"settings": { "settings": {
"dashMultiplier": { "dashMultiplier": {
+1
View File
@@ -12,6 +12,7 @@
"text": "Drag Ruler requires the socketlib module to work properly. Please activate the socketlib module in this world." "text": "Drag Ruler requires the socketlib module to work properly. Please activate the socketlib module in this world."
} }
}, },
"resetMovementHistory": "Reset Movement History",
"genericSpeedProvider": { "genericSpeedProvider": {
"settings": { "settings": {
"dashMultiplier": { "dashMultiplier": {
+10 -1
View File
@@ -5,7 +5,7 @@ import {checkDependencies, getHexSizeSupportTokenGridCenter} from "./compatibili
import {moveTokens, onMouseMove} from "./foundry_imports.js" import {moveTokens, onMouseMove} from "./foundry_imports.js"
import {performMigrations} from "./migration.js" import {performMigrations} from "./migration.js"
import {DragRulerRuler} from "./ruler.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 {registerSettings, settingsKey} from "./settings.js"
import {SpeedProvider} from "./speed_provider.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: '<i class="fas fa-undo-alt"></i>',
callback: li => resetMovementHistory(ui.combat.combat, li.data('combatant-id')),
};
menu.splice(1, 0, entry);
});
function hookTokenDragHandlers() { function hookTokenDragHandlers() {
const originalDragLeftStartHandler = Token.prototype._onDragLeftStart const originalDragLeftStartHandler = Token.prototype._onDragLeftStart
Token.prototype._onDragLeftStart = function(event) { Token.prototype._onDragLeftStart = function(event) {
+11
View File
@@ -72,3 +72,14 @@ export function getMovementHistory(token) {
return []; return [];
return dragRulerFlags.passedWaypoints ?? []; 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);
}
+1 -1
View File
@@ -5,7 +5,7 @@ Hooks.once("socketlib.ready", () => {
socket.register("updateCombatantDragRulerFlags", _socketUpdateCombatantDragRulerFlags); socket.register("updateCombatantDragRulerFlags", _socketUpdateCombatantDragRulerFlags);
}); });
export async function updateCombatantDragRulerFlags(combat, combatant, flags) { export function updateCombatantDragRulerFlags(combat, combatant, flags) {
const combatId = combat.id; const combatId = combat.id;
const combatantId = combatant._id; const combatantId = combatant._id;
return socket.executeAsGM(_socketUpdateCombatantDragRulerFlags, combatId, combatantId, flags); return socket.executeAsGM(_socketUpdateCombatantDragRulerFlags, combatId, combatantId, flags);