|
|
- import { FEATURE_CONTROL, TVA_CONFIG } from '../settings.js';
- import { registerHook, unregisterHook } from './hooks.js';
-
- const feature_id = 'UserMappings';
-
- export function registerUserMappingHooks() {
- if (!FEATURE_CONTROL[feature_id]) {
- ['updateToken', 'updateTile', 'sightRefresh'].forEach((id) => unregisterHook(feature_id, id));
- return;
- }
-
- registerHook(feature_id, 'updateToken', _updateToken);
- registerHook(feature_id, 'updateTile', _updateTile);
- registerHook(feature_id, 'sightRefresh', _sightRefresh);
- }
-
- async function _updateToken(token, change) {
- // Update User Specific Image
- if (change.flags?.['token-variants']) {
- if ('userMappings' in change.flags['token-variants'] || '-=userMappings' in change.flags['token-variants']) {
- const t = canvas.tokens.get(token.id);
- if (t) {
- await t.draw();
- canvas.effects.visibility.restrictVisibility();
- }
- }
- }
- }
-
- async function _updateTile(tile, change) {
- // Update User Specific Image
- if (change.flags?.['token-variants']) {
- if ('userMappings' in change.flags['token-variants'] || '-=userMappings' in change.flags['token-variants']) {
- const t = canvas.tiles.get(tile.id);
- if (t) {
- await t.draw();
- canvas.effects.visibility.restrictVisibility();
- }
- }
- }
- }
-
- function _sightRefresh() {
- if (!game.user.isGM) {
- for (let t of canvas.tokens.placeables) {
- if (_isInvisible(t)) t.visible = false;
- }
- for (let t of canvas.tiles.placeables) {
- if (_isInvisible(t)) t.visible = false;
- }
- }
- }
-
- function _isInvisible(obj) {
- const img = (obj.document.getFlag('token-variants', 'userMappings') || {})?.[game.userId];
- return img === TVA_CONFIG.invisibleImage;
- }
|