Update code for Foundry 0.8.5

This commit is contained in:
Manuel Vögele
2021-05-22 21:57:59 +02:00
parent d11d6385e2
commit 7ba89e4229
7 changed files with 26 additions and 21 deletions
+1 -1
View File
@@ -83,7 +83,7 @@ async function animateEntities(entities, draggedEntity, draggedRays, wasPaused)
const updates = entityPaths.map(({entity, path}) => {
return {x: path.B.x, y: path.B.y, _id: entity.id};
});
await draggedEntity.scene.updateEmbeddedEntity(draggedEntity.constructor.embeddedName, updates, {animate});
await draggedEntity.scene.updateEmbeddedDocuments(draggedEntity.constructor.embeddedName, updates, {animate});
if (animate)
await Promise.all(entityPaths.map(({entity, path}) => entity.animateMovement(path)));
}
+1 -1
View File
@@ -50,7 +50,7 @@ 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')),
callback: li => resetMovementHistory(ui.combat.viewed, li.data('combatant-id')),
};
menu.splice(1, 0, entry);
});
+12 -12
View File
@@ -4,19 +4,19 @@ import {getTokenShape, zip} from "./util.js";
function initTrackingFlag(combatant) {
const initialFlag = {passedWaypoints: [], trackedRound: 0};
let dragRulerFlag = combatant.flags?.dragRuler;
let dragRulerFlag = combatant.data.flags.dragRuler;
if (dragRulerFlag) {
if (isNaN(dragRulerFlag.trackedRound)) {
mergeObject(dragRulerFlag, initialFlag);
}
}
else {
combatant.flags.dragRuler = initialFlag;
combatant.data.flags.dragRuler = initialFlag;
}
}
function getInitializedCombatant(token, combat) {
const combatant = combat.getCombatantByToken(token.data._id);
const combatant = combat.getCombatantByToken(token.id);
if (!combatant)
return undefined;
initTrackingFlag(combatant);
@@ -43,14 +43,14 @@ function calculateUpdate(combat, token, rays) {
return;
// Check if we have entered a new round. If so, remove the currently stored path
if (combat.data.round > combatant.flags.dragRuler.trackedRound) {
combatant.flags.dragRuler.passedWaypoints = [];
combatant.flags.dragRuler.trackedRound = combat.data.round;
if (combat.data.round > combatant.data.flags.dragRuler.trackedRound) {
combatant.data.flags.dragRuler.passedWaypoints = [];
combatant.data.flags.dragRuler.trackedRound = combat.data.round;
}
// Add the passed waypoints to the combatant
const terrainRulerAvailable = game.modules.get("terrain-ruler")?.active && (!game.modules.get("TerrainLayer")?.active || canvas.grid.type !== CONST.GRID_TYPES.GRIDLESS);
const dragRulerFlags = combatant.flags.dragRuler;
const dragRulerFlags = combatant.data.flags.dragRuler;
const waypoints = dragRulerFlags.passedWaypoints;
for (const ray of rays) {
// Ignore rays that have the same start and end coordinates
@@ -63,17 +63,17 @@ function calculateUpdate(combat, token, rays) {
waypoints.push(ray.A);
}
}
return {_id: combatant._id, dragRulerFlags};
return {_id: combatant.id, dragRulerFlags};
}
export function getMovementHistory(token) {
const combat = game.combat;
if (!combat)
return [];
const combatant = combat.getCombatantByToken(token.data._id);
const combatant = combat.getCombatantByToken(token.id);
if (!combatant)
return [];
const dragRulerFlags = combatant.flags.dragRuler;
const dragRulerFlags = combatant.data.flags.dragRuler;
if (!dragRulerFlags)
return [];
if (combat.data.round > dragRulerFlags.trackedRound)
@@ -82,8 +82,8 @@ export function getMovementHistory(token) {
}
export async function resetMovementHistory(combat, combatantId) {
const combatant = combat.getCombatant(combatantId);
const dragRulerFlags = combatant.flags.dragRuler;
const combatant = combat.combatants.get(combatantId);
const dragRulerFlags = combatant.data.flags.dragRuler;
if (!dragRulerFlags)
return;
dragRulerFlags.passedWaypoints = null;
+1 -1
View File
@@ -34,7 +34,7 @@ export class DragRulerRuler extends Ruler {
toJSON() {
const json = super.toJSON();
if (this.draggedEntity)
json["draggedEntity"] = this.draggedEntity.data._id;
json["draggedEntity"] = this.draggedEntity.id;
return json;
}
+4 -4
View File
@@ -12,7 +12,7 @@ export function updateCombatantDragRulerFlags(combat, updates) {
const combatId = combat.id;
// TODO Check if canvas.tokens.get is still neccessary in future foundry versions
return socket.executeAsGM(_socketUpdateCombatantDragRulerFlags, combatId, updates)
.then(() => currentSpeedProvider.onMovementHistoryUpdate(updates.map(update => canvas.tokens.get(combat.getCombatant(update._id).token._id))));
.then(() => currentSpeedProvider.onMovementHistoryUpdate(updates.map(update => canvas.tokens.get(combat.combatants.get(update._id).token.id))));
}
async function _socketUpdateCombatantDragRulerFlags(combatId, updates) {
@@ -20,10 +20,10 @@ async function _socketUpdateCombatantDragRulerFlags(combatId, updates) {
const combat = game.combats.get(combatId);
const requestedUpdates = updates.length;
updates = updates.filter(update => {
const actor = combat.getCombatant(update._id).actor;
const actor = combat.combatants.get(update._id).actor;
if (!actor)
return false;
return actor.hasPerm(user, "OWNER");
return actor.testUserPermission(user, "OWNER");
});
if (updates.length !== requestedUpdates) {
console.warn(`Some of the movement history updates requested by user '${game.users.get(this.socketdata.userId).name}' were not performed because the user lacks owner permissions for those tokens`);
@@ -31,7 +31,7 @@ async function _socketUpdateCombatantDragRulerFlags(combatId, updates) {
updates = updates.map(update => {
return {_id: update._id, flags: {dragRuler: update.dragRulerFlags}};
});
await combat.updateEmbeddedEntity("Combatant", updates, {diff: false});
await combat.updateEmbeddedDocuments("Combatant", updates, {diff: false});
}
export function recalculate(tokens) {