|
import {movementTracking} from "./movementFunctions.js"
|
|
|
|
Hooks.once("init", () => {
|
|
//Wait until the game is initialized, then register the settings created previously.
|
|
game.settings.register("pf2e-dragruler", "offTurnMovement", {
|
|
name: game.i18n.localize("pf2e-dragruler.settings.offTurnMovement.name"),
|
|
hint: game.i18n.localize("pf2e-dragruler.settings.offTurnMovement.hint"),
|
|
scope: "world",
|
|
config: true,
|
|
type: Boolean,
|
|
default: false
|
|
})
|
|
});
|
|
Hooks.once("dragRuler.ready", (SpeedProvider) => {
|
|
class PF2eSpeedProvider extends SpeedProvider {
|
|
//Registers colours for up to four movement actions so colours can be customized for them, and sets defaults
|
|
get colors(){
|
|
return [
|
|
{id: "FirstAction", default: 0x3222C7},
|
|
{id: "SecondAction", default: 0xFFEC07},
|
|
{id: "ThirdAction", default: 0xC033E0},
|
|
{id: "FourthAction", default: 0x1BCAD8}
|
|
]
|
|
};
|
|
// Get the distance for each movement interval to give to drag ruler
|
|
getRanges(token){
|
|
var numactions = 3; //Use the actionCount function to determine how many actions that token gets each round.
|
|
var movement = movementTracking(token); //Use the movementTracking function to get how far each movement range should be.
|
|
const ranges = []; //create blank array to store the ranges in.
|
|
|
|
if (numactions > 0 && movement.A1 > 0){
|
|
//Set the ranges for each of our four actions to be given to the drag ruler.
|
|
ranges.push({range: movement.A1, color: "FirstAction"},{range: movement.A2, color: "SecondAction"}, { range: movement.A3, color: "ThirdAction"},{range: movement.A4, color: "FourthAction"});
|
|
//Remove ranges from the function until only the ranges equal to the number of legal actions remain.
|
|
for (var i = numactions, len=ranges.length; i<len; i++){
|
|
ranges.pop();
|
|
};
|
|
} else {ranges.push({range: 0, color: "FirstAction"})}; //Since ranges is empty if you've got no actions add a range for the first action of 0.
|
|
return ranges;
|
|
};
|
|
};
|
|
// When dragruler is ready to go give it all the PF2 specific stuff
|
|
dragRuler.registerModule("pf2e-dragruler", PF2eSpeedProvider) //register the speed provider so its selectable from the drag ruler configuration.
|
|
});
|
|
|
|
Hooks.on('updateCombat', () => {
|
|
if(game.user.isGM && game.settings.get("drag-ruler", "enableMovementHistory") && game.settings.get("pf2e-dragruler", "offTurnMovement")){
|
|
const combat = game.combats.active; //set the current combat
|
|
if(combat?.turns.length > 0){
|
|
const previousCombatant = combat.turns[(combat.turn - 1) < 0 ? (combat.turns.length - 1) : (combat.turn - 1)];
|
|
const nextCombatant = combat.turns[combat.turn]; //find the next combatant
|
|
if(nextCombatant?.flags?.dragRuler){
|
|
dragRuler.resetMovementHistory(combat, nextCombatant._id); //if movement history exists, clears it for the next combatant prior to acting. Gives a clean slate for the new turn, important for clearing out off turn movement.
|
|
};
|
|
if(previousCombatant?.flags?.dragRuler){
|
|
dragRuler.resetMovementHistory(combat, previousCombatant._id); //if movement history exists, clears it for the next combatant prior to acting. Gives a clean slate for the new turn, important for clearing out off turn movement.
|
|
};
|
|
};
|
|
};
|
|
});
|