import { registerEffectIconHooks } from './effectIconHooks.js'; import { registerArtSelectButtonHooks } from './artSelectButtonHooks.js'; import { registerOverlayHooks } from './overlayHooks.js'; import { registerEffectMappingHooks } from './effectMappingHooks.js'; import { registerHUDHooks } from './hudHooks.js'; import { registerUserMappingHooks } from './userMappingHooks.js'; import { registerWildcardHooks } from './wildcardHooks.js'; import { registerPopRandomizeHooks } from './popUpRandomizeHooks.js'; import { TVA_CONFIG } from '../settings.js'; export const REGISTERED_HOOKS = {}; export function registerHook(feature_id, name, fn, { once = false } = {}) { if (!(feature_id in REGISTERED_HOOKS)) REGISTERED_HOOKS[feature_id] = {}; if (name in REGISTERED_HOOKS[feature_id]) return; if (TVA_CONFIG.debug) console.info(`TVA | Registering Hook`, { feature_id, name, fn, once }); const num = Hooks.on(name, fn, { once }); REGISTERED_HOOKS[feature_id][name] = num; } export function unregisterHook(feature_id, name) { if (feature_id in REGISTERED_HOOKS && name in REGISTERED_HOOKS[feature_id]) { if (TVA_CONFIG.debug) console.info(`TVA | Un-Registering Hook`, { feature_id, name, id: REGISTERED_HOOKS[feature_id][name], }); Hooks.off(name, REGISTERED_HOOKS[feature_id][name]); delete REGISTERED_HOOKS[feature_id][name]; } } export function registerAllHooks() { // Hide effect icons registerEffectIconHooks(); // Display overlays registerOverlayHooks(); // Insert Art Select buttons and contextmenu listeners registerArtSelectButtonHooks(); // Effect Mapping related listening for state changes and applying configurations registerEffectMappingHooks(); // Display HUD buttons for Tokens and Tiles registerHUDHooks(); // Default Wildcard image controls registerWildcardHooks(); // User to Image mappings for Tile and Tokens registerUserMappingHooks(); // Handle pop-ups and randomization on token/actor create registerPopRandomizeHooks(); }