|
|
- import { insertArtSelectButton } from '../../applications/artSelect.js';
- import { FEATURE_CONTROL, TVA_CONFIG } from '../settings.js';
- import { SEARCH_TYPE, updateTokenImage } from '../utils.js';
- import { registerHook, unregisterHook } from './hooks.js';
-
- const feature_id = 'Wildcards';
-
- export function registerWildcardHooks() {
- if (!FEATURE_CONTROL[feature_id]) {
- ['renderTokenConfig', 'preCreateToken'].forEach((name) => unregisterHook(feature_id, name));
- return;
- }
-
- // Insert default random image field
- registerHook(feature_id, 'renderTokenConfig', _renderTokenConfig);
-
- // Set Default Wildcard images if needed
- registerHook(feature_id, 'preCreateToken', _preCreateToken);
- }
-
- async function _renderTokenConfig(config, html) {
- const checkboxRandomize = html.find('input[name="randomImg"]');
- if (checkboxRandomize.length && !html.find('.token-variants-proto').length) {
- const defaultImg =
- config.actor?.prototypeToken?.flags['token-variants']?.['randomImgDefault'] ||
- config.actor?.prototypeToken?.flags['token-hud-wildcard']?.['default'] ||
- '';
-
- const field = await renderTemplate('/modules/token-variants/templates/protoTokenElement.html', {
- defaultImg,
- disableHUDButton: config.object?.getFlag('token-variants', 'disableHUDButton'),
- });
- checkboxRandomize.closest('.form-group').after(field);
-
- const tvaFieldset = html.find('.token-variants-proto');
-
- tvaFieldset.find('button').click((event) => {
- event.preventDefault();
- const input = tvaFieldset.find('input');
- new FilePicker({ current: input.val(), field: input[0] }).browse(defaultImg);
- });
-
- insertArtSelectButton(tvaFieldset, 'flags.token-variants.randomImgDefault', {
- search: config.object.name,
- searchType: SEARCH_TYPE.TOKEN,
- });
-
- // Hide/Show Default Img Form Group
- const rdmImgFormGroup = tvaFieldset.find('.imagevideo').closest('.form-group');
- const showHideGroup = function (checked) {
- if (checked) {
- rdmImgFormGroup.show();
- } else {
- rdmImgFormGroup.hide();
- }
- config.setPosition();
- };
- checkboxRandomize.on('click', (event) => showHideGroup(event.target.checked));
- showHideGroup(checkboxRandomize.is(':checked'));
- }
- }
-
- function _preCreateToken(tokenDocument, data, options, userId) {
- if (game.user.id !== userId) return;
- const update = {};
- if (tokenDocument.actor?.prototypeToken?.randomImg) {
- const defaultImg =
- tokenDocument.actor?.prototypeToken?.flags['token-variants']?.['randomImgDefault'] ||
- tokenDocument.actor?.prototypeToken?.flags['token-hud-wildcard']?.['default'] ||
- '';
- if (defaultImg) update['texture.src'] = defaultImg;
- }
-
- if (TVA_CONFIG.imgNameContainsDimensions || TVA_CONFIG.imgNameContainsFADimensions) {
- updateTokenImage(update['texture.src'] ?? tokenDocument.texture.src, {
- token: tokenDocument,
- update,
- });
- }
-
- if (!isEmpty(update)) tokenDocument.updateSource(update);
- }
|