82 lines
2.2 KiB
JavaScript
82 lines
2.2 KiB
JavaScript
/* globals coreFearDialog */
|
|
/* globals swpfFearDialog */
|
|
export const moduleName = 'swade-mb-helpers';
|
|
|
|
export function log(...args) {
|
|
console.log('SWADE MB HELPERS |', ...args);
|
|
}
|
|
|
|
export class moduleHelpers {
|
|
static _socket = null;
|
|
|
|
static get socket() {
|
|
return moduleHelpers._socket;
|
|
}
|
|
|
|
static get rulesVersion() {
|
|
if (game.modules.get('swpf-core-rules')?.active) {
|
|
return 'swpf';
|
|
}
|
|
if (game.modules.get('swade-core-rules')?.active) {
|
|
return 'swade';
|
|
}
|
|
return 'system';
|
|
}
|
|
|
|
static get useVAE() {
|
|
return !!game.modules.get('visual-active-effects')?.active;
|
|
}
|
|
|
|
static getActorFolderByPath(path) {
|
|
const names = path.split('/');
|
|
if (names[0] === '') {
|
|
names.shift();
|
|
}
|
|
let name = names.shift();
|
|
let folder = game.folders.filter((f) => f.type === 'Actor' && !f.folder).find((f) => f.name === name);
|
|
if (!folder) {
|
|
return undefined;
|
|
}
|
|
while (names.length > 0) {
|
|
name = names.shift();
|
|
folder = folder.children.find((c) => c.folder.name === name);
|
|
if (!folder) {
|
|
return undefined;
|
|
}
|
|
folder = folder.folder;
|
|
}
|
|
return folder;
|
|
}
|
|
|
|
static getActorsInFolder(inFolder) {
|
|
const prefixStack = [''];
|
|
const actors = {};
|
|
const folderStack = [inFolder];
|
|
while (folderStack.length > 0) {
|
|
const prefix = prefixStack.shift();
|
|
const folder = folderStack.shift();
|
|
for (const actor of folder.contents) {
|
|
if (game.user.isGM || actor.testUserPermission(game.user, foundry.CONST.DOCUMENT_OWNERSHIP_LEVELS.OBSERVER)) {
|
|
actors[`${prefix}${actor.name}`] = actor;
|
|
}
|
|
}
|
|
for (const child of folder.children) {
|
|
const newPrefix = `${prefix}${child.folder.name} | `;
|
|
prefixStack.push(newPrefix);
|
|
folderStack.push(child.folder);
|
|
}
|
|
}
|
|
return actors;
|
|
}
|
|
|
|
static get fearTableHelper() {
|
|
switch (moduleHelpers.rulesVersion) {
|
|
case 'swade':
|
|
return coreFearDialog; // defined as global by the swade module
|
|
case 'swpf':
|
|
return swpfFearDialog; // defined as global by the swpf module
|
|
}
|
|
throw new ReferenceError('No premium module active. No fear table found');
|
|
}
|
|
}
|