All user data for FoundryVTT. Includes worlds, systems, modules, and any asset in the "foundryuserdata" directory. Does NOT include the FoundryVTT installation itself.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

177 lines
5.1 KiB

Hooks.once("ready", function () {
game.settings.register("bossbar", "currentHpPath", {
name: game.i18n.localize("bossbar.settings.currentHpPath.name"),
hint: game.i18n.localize("bossbar.settings.currentHpPath.hint"),
scope: "world",
config: true,
type: String,
default: "attributes.hp.value",
});
game.settings.register("bossbar", "maxHpPath", {
name: game.i18n.localize("bossbar.settings.maxHpPath.name"),
hint: game.i18n.localize("bossbar.settings.maxHpPath.hint"),
scope: "world",
config: true,
type: String,
default: "attributes.hp.max",
});
game.settings.register("bossbar", "barHeight", {
name: game.i18n.localize("bossbar.settings.barHeight.name"),
hint: game.i18n.localize("bossbar.settings.barHeight.hint"),
scope: "world",
config: true,
type: Number,
default: 20,
});
game.settings.register("bossbar", "textSize", {
name: game.i18n.localize("bossbar.settings.textSize.name"),
hint: game.i18n.localize("bossbar.settings.textSize.hint"),
scope: "world",
config: true,
type: Number,
default: 20,
});
game.settings.register("bossbar", "cameraPan", {
name: game.i18n.localize("bossbar.settings.cameraPan.name"),
hint: game.i18n.localize("bossbar.settings.cameraPan.hint"),
scope: "world",
config: true,
type: Boolean,
default: false,
});
game.settings.register("bossbar", "position", {
name: game.i18n.localize("bossbar.settings.position.name"),
hint: game.i18n.localize("bossbar.settings.position.hint"),
scope: "world",
config: true,
type: Number,
choices: {
0: game.i18n.localize("bossbar.settings.position.opt0"),
1: game.i18n.localize("bossbar.settings.position.opt1"),
},
default: 0,
});
game.settings.register("bossbar", "backgroundPath", {
name: game.i18n.localize("bossbar.settings.backgroundPath.name"),
hint: game.i18n.localize("bossbar.settings.backgroundPath.hint"),
scope: "world",
config: true,
type: String,
default: "modules/bossbar/resources/Dark.webp",
filePicker: true,
});
game.settings.register("bossbar", "foregroundPath", {
name: game.i18n.localize("bossbar.settings.foregroundPath.name"),
hint: game.i18n.localize("bossbar.settings.foregroundPath.hint"),
scope: "world",
config: true,
type: String,
default: "modules/bossbar/resources/Blood.webp",
filePicker: true,
});
new window.Ardittristan.ColorSetting("bossbar", "tempBarColor", {
name: game.i18n.localize("bossbar.settings.tempBarColor.name"),
hint: game.i18n.localize("bossbar.settings.tempBarColor.hint"),
label: game.i18n.localize("bossbar.settings.tempBarColor.label"),
restricted: true,
defaultColor: "#7e7e7e",
scope: "world",
});
Hooks.on("renderApplication", (app) => {
if (app.id == "controls" || app.id =="navigation" || app.id == "camera-views") {
BossBar.renderBossBar();
}
});
BossBar.renderBossBar();
});
Hooks.once("ready", function () {});
Hooks.on("updateScene", async (scene, updates) => {
if (!game.user.isGM) {
if (updates.flags?.bossbar) {
const ids = canvas.scene.getFlag("bossbar", "bossBarActive");
if (!ids) {
if (canvas.scene._bossBars) {
for (let bar of Object.entries(canvas.scene._bossBars)) {
bar[1].unHook();
}
delete canvas.scene._bossBars;
}
return;
}
for (let id of ids) {
if (canvas.scene._bossBars && canvas.scene._bossBars[id]) {
canvas.scene._bossBars[id].draw(
game.settings.get("bossbar", "barHeight")
);
return;
} else {
await BossBar.create(canvas.tokens.get(id));
}
}
} else {
//BossBar.clearAll();
}
}
});
Hooks.on("getSceneControlButtons", (controls, b, c) => {
if (!canvas.scene) return;
let isBoss = canvas.scene.getFlag("bossbar", "bossBarActive") ? true : false;
controls
.find((c) => c.name == "token")
.tools.push({
name: "bossBar",
title: game.i18n.localize("bossbar.controls.bossUI.name"),
icon: "fas fa-pastafarianism",
toggle: true,
visible: game.user.isGM,
active: isBoss,
onClick: async (toggle) => {
if (toggle) {
if (canvas.tokens.controlled[0]) {
for (let token of canvas.tokens.controlled) {
await BossBar.create(token);
if (game.settings.get("bossbar", "cameraPan"))
BossBar.panCamera(token);
}
} else {
ui.notifications.warn(
game.i18n.localize("bossbar.controls.bossUI.warn")
);
}
} else {
await canvas.scene.unsetFlag("bossbar", "bossBarActive");
BossBar.remove();
}
},
});
});
Object.byString = function (o, s) {
s = s.replace(/\[(\w+)\]/g, ".$1"); // convert indexes to properties
s = s.replace(/^\./, ""); // strip a leading dot
var a = s.split(".");
for (var i = 0, n = a.length; i < n; ++i) {
var k = a[i];
if (k in o) {
o = o[k];
} else {
return;
}
}
return o;
};