swade-mb-helpers/src/module/swade-mb-helpers.js

56 lines
2.0 KiB
JavaScript

/* globals socketlib */
// Import JavaScript modules
import { registerSettings } from './settings.js';
import { preloadTemplates } from './preloadTemplates.js';
import { api } from './api.js';
import { initVisionModes } from './visionModes.js';
import { requestTokenRoll, addActiveEffectsToToken, deleteActiveEffectsFromToken } from './helpers.js';
import { preDamageRollModifiers, preTraitRollModifiers } from './rollHelpers.js';
import { log, moduleHelpers } from './globals.js';
import { powerEffectManagementHook, visualActiveEffectPowerButtons } from './powers/powers.js';
// Initialize module
Hooks.once('init', async () => {
log('Initializing swade-mb-helpers');
initVisionModes();
// Assign custom classes and constants here
// Register custom module settings
registerSettings();
// Preload Handlebars templates
await preloadTemplates();
});
// Setup module
Hooks.once('setup', async () => {
api.registerFunctions();
});
Hooks.once('ready', async () => {
_checkModule('socketlib');
log('Initialized SWADE MB Helpers');
});
function _checkModule(name) {
if (!game.modules.get(name)?.active && game.user.isGM) {
let action = 'install and activate';
if (game.modules.get(name)) action = 'activate';
ui.notifications.error(`SWADE MB Helpers requires the ${name} module. Please ${action} it.`);
}
}
Hooks.on('swadePreRollAttribute', preTraitRollModifiers);
Hooks.on('swadePreRollSkill', preTraitRollModifiers);
Hooks.on('swadeRollDamage', preDamageRollModifiers);
Hooks.on('deleteActiveEffect', powerEffectManagementHook);
Hooks.on('visual-active-effects.createEffectButtons', visualActiveEffectPowerButtons);
Hooks.once('socketlib.ready', () => {
const _socket = socketlib.registerModule('swade-mb-helpers');
_socket.register('requestTokenRoll', requestTokenRoll);
_socket.register('addActiveEffectsToToken', addActiveEffectsToToken);
_socket.register('deleteActiveEffectsFromToken', deleteActiveEffectsFromToken);
moduleHelpers._socket = _socket;
});