Update active rulers when the movement history changes

This commit is contained in:
Manuel Vögele
2021-05-05 16:01:13 +02:00
parent 7bed5abd0a
commit e8ab77a62e
6 changed files with 40 additions and 2 deletions
+22
View File
@@ -1,4 +1,5 @@
import {measure} from "./foundry_imports.js"
import {getMovementHistory} from "./movement_tracking.js";
import {settingsKey} from "./settings.js";
import {getSnapPointForToken} from "./util.js";
@@ -78,6 +79,11 @@ export class DragRulerRuler extends Ruler {
}
}
dragRulerClearWaypoints() {
this.waypoints = [];
this.labels.removeChildren().forEach(c => c.destroy());
}
dragRulerDeleteWaypoint(event={preventDefault: () => {return}}) {
if (this.waypoints.filter(w => !w.isPrevious).length > 1) {
event.preventDefault();
@@ -100,6 +106,22 @@ export class DragRulerRuler extends Ruler {
}
}
async dragRulerRecalculate(tokenIds) {
if (this._state !== Ruler.STATES.MEASURING)
return;
if (tokenIds && !tokenIds.includes(this.draggedToken.id))
return;
const waypoints = this.waypoints.filter(waypoint => !waypoint.isPrevious);
this.dragRulerClearWaypoints();
if (game.settings.get(settingsKey, "enableMovementHistory"))
this.dragRulerAddWaypointHistory(getMovementHistory(this.draggedToken));
for (const waypoint of waypoints) {
this.dragRulerAddWaypoint(waypoint, false);
}
this.measure(this.destination);
game.user.broadcastActivity({ruler: this});
}
static dragRulerGetRaysFromWaypoints(waypoints, destination) {
if ( destination )
waypoints = waypoints.concat([destination]);