58 lines
1.9 KiB
JavaScript
58 lines
1.9 KiB
JavaScript
|
// SPDX-FileCopyrightText: 2021 Johannes Loher
|
||
|
//
|
||
|
// SPDX-License-Identifier: MIT
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
import { packageName } from './config';
|
||
|
import logger from './logger';
|
||
|
import { getBrightRadius, getDimRadius, updateSource } from './wrappers/token';
|
||
|
import { getHeaderButtons } from './wrappers/token-config';
|
||
|
import { libWrapper } from './shims/libWrapperShim';
|
||
|
|
||
|
export default function registerForHooks() {
|
||
|
Hooks.once('init', onInit);
|
||
|
Hooks.on('updateScene', onUpdateScene);
|
||
|
Hooks.on('updateToken', onUpdateToken);
|
||
|
}
|
||
|
|
||
|
function onInit() {
|
||
|
logger.info(`Initializing ${packageName}`);
|
||
|
|
||
|
const dimRadiusTarget = 'CONFIG.Token.objectClass.prototype.dimRadius';
|
||
|
try {
|
||
|
libWrapper.register(packageName, dimRadiusTarget, getDimRadius, 'OVERRIDE');
|
||
|
} catch (e) {
|
||
|
logger.warn(`Failed to override ${dimRadiusTarget}, some things might not work correctly:`, e);
|
||
|
}
|
||
|
|
||
|
const brightRadiusTarget = 'CONFIG.Token.objectClass.prototype.dimRadius';
|
||
|
try {
|
||
|
libWrapper.register(packageName, brightRadiusTarget, getBrightRadius, 'OVERRIDE');
|
||
|
} catch (e) {
|
||
|
logger.warn(`Failed to override ${brightRadiusTarget}, some things might not work correctly:`, e);
|
||
|
}
|
||
|
|
||
|
libWrapper.register(packageName, 'CONFIG.Token.objectClass.prototype.updateSource', updateSource, 'WRAPPER');
|
||
|
|
||
|
libWrapper.register(packageName, 'CONFIG.Token.sheetClass.prototype._getHeaderButtons', getHeaderButtons, 'WRAPPER');
|
||
|
}
|
||
|
|
||
|
function onUpdateScene(scene, change) {
|
||
|
if (change.darkness != null) {
|
||
|
scene.getEmbeddedCollection('Token').forEach((tokenDocument) => tokenDocument.object.updateSource());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function onUpdateToken(token, change) {
|
||
|
const shouldUpdateSource = [
|
||
|
'dimVisionDarknessMin',
|
||
|
'dimVisionDarknessMax',
|
||
|
'brightVisionDarknessMin',
|
||
|
'brightVisionDarknessMax',
|
||
|
].some((flagKey) => `flags.darkness-dependent-vision.${flagKey}` in foundry.utils.flattenObject(change));
|
||
|
if (shouldUpdateSource) {
|
||
|
token.object.updateSource();
|
||
|
}
|
||
|
}
|