feat: added icon color and shape options
This commit is contained in:
parent
3a2e6bddb0
commit
5360ce5bc2
2 changed files with 70 additions and 2 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "dh-feartrackerplus",
|
"id": "dh-feartrackerplus",
|
||||||
"title": "Daggerheart Fear Tracker Plus",
|
"title": "Daggerheart Fear Tracker Plus",
|
||||||
"version": "1.1.1",
|
"version": "1.2.0",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "13",
|
"minimum": "13",
|
||||||
"verified": "13"
|
"verified": "13"
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,32 @@ Hooks.once('init', () => {
|
||||||
onChange: refreshFearTracker
|
onChange: refreshFearTracker
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// --- New Settings for Icon Color/Shape ---
|
||||||
|
game.settings.register(MODULE_ID, 'iconShape', {
|
||||||
|
name: 'Icon Shape',
|
||||||
|
hint: 'Select the background shape for the icons.',
|
||||||
|
scope: 'client',
|
||||||
|
config: true,
|
||||||
|
type: String,
|
||||||
|
choices: {
|
||||||
|
'circle': 'Circle',
|
||||||
|
'rounded': 'Rounded Square',
|
||||||
|
'square': 'Square'
|
||||||
|
},
|
||||||
|
default: 'circle',
|
||||||
|
onChange: refreshFearTracker
|
||||||
|
});
|
||||||
|
|
||||||
|
game.settings.register(MODULE_ID, 'iconColor', {
|
||||||
|
name: 'Icon Color',
|
||||||
|
hint: 'Custom color for the icon glyphs (Hex or Gradient). Default is white.',
|
||||||
|
scope: 'client',
|
||||||
|
config: true,
|
||||||
|
type: String,
|
||||||
|
default: '#ffffff',
|
||||||
|
onChange: refreshFearTracker
|
||||||
|
});
|
||||||
|
|
||||||
game.settings.register(MODULE_ID, 'trackerScale', {
|
game.settings.register(MODULE_ID, 'trackerScale', {
|
||||||
name: 'Tracker Scale',
|
name: 'Tracker Scale',
|
||||||
hint: 'Resize the fear tracker (0.25x to 2.0x).',
|
hint: 'Resize the fear tracker (0.25x to 2.0x).',
|
||||||
|
|
@ -230,6 +256,24 @@ Hooks.on('renderSettingsConfig', (app, html, data) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Icon Color Reset Button
|
||||||
|
const iconColorGroup = findGroup('iconColor');
|
||||||
|
if (iconColorGroup && !iconColorGroup.find('.icon-color-reset-btn').length) {
|
||||||
|
const input = iconColorGroup.find(`input[name="${MODULE_ID}.iconColor"]`);
|
||||||
|
|
||||||
|
if (input.length) {
|
||||||
|
const resetBtn = $(`<button type="button" class="icon-color-reset-btn" title="Reset to White" style="flex: 0 0 30px; margin-left: 5px;"><i class="fas fa-undo"></i></button>`);
|
||||||
|
|
||||||
|
resetBtn.on('click', () => {
|
||||||
|
input.val('#ffffff');
|
||||||
|
input.trigger('change');
|
||||||
|
});
|
||||||
|
|
||||||
|
input.after(resetBtn);
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
iconTypeSelect.on('change', updateVisibility);
|
iconTypeSelect.on('change', updateVisibility);
|
||||||
|
|
@ -335,6 +379,9 @@ function injectFearCustomization(html) {
|
||||||
const presetIcon = game.settings.get(MODULE_ID, 'presetIcon');
|
const presetIcon = game.settings.get(MODULE_ID, 'presetIcon');
|
||||||
const customIcon = game.settings.get(MODULE_ID, 'customIcon');
|
const customIcon = game.settings.get(MODULE_ID, 'customIcon');
|
||||||
const colorTheme = game.settings.get(MODULE_ID, 'colorTheme');
|
const colorTheme = game.settings.get(MODULE_ID, 'colorTheme');
|
||||||
|
const iconShape = game.settings.get(MODULE_ID, 'iconShape');
|
||||||
|
const iconColor = game.settings.get(MODULE_ID, 'iconColor');
|
||||||
|
|
||||||
let fullColor = game.settings.get(MODULE_ID, 'fullColor');
|
let fullColor = game.settings.get(MODULE_ID, 'fullColor');
|
||||||
let emptyColor = '#444444'; // Default for custom
|
let emptyColor = '#444444'; // Default for custom
|
||||||
|
|
||||||
|
|
@ -412,7 +459,22 @@ function injectFearCustomization(html) {
|
||||||
// It's a FontAwesome Class
|
// It's a FontAwesome Class
|
||||||
const newClasses = iconClass.split(' ').filter(c => c.trim() !== '');
|
const newClasses = iconClass.split(' ').filter(c => c.trim() !== '');
|
||||||
icon.classList.add(...newClasses, 'fear-tracker-plus-custom');
|
icon.classList.add(...newClasses, 'fear-tracker-plus-custom');
|
||||||
icon.style.color = '#ffffff'; // Force white icons for all themes
|
|
||||||
|
// Icon Color Application
|
||||||
|
if (iconColor && iconColor !== '#ffffff') {
|
||||||
|
// Check if it's a gradient
|
||||||
|
if (iconColor.includes('gradient')) {
|
||||||
|
icon.style.background = iconColor;
|
||||||
|
icon.style.webkitBackgroundClip = 'text';
|
||||||
|
icon.style.backgroundClip = 'text';
|
||||||
|
icon.style.webkitTextFillColor = 'transparent';
|
||||||
|
icon.style.color = 'transparent';
|
||||||
|
} else {
|
||||||
|
icon.style.color = iconColor;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
icon.style.color = '#ffffff'; // Default White
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. Remove System Styling (Module Overrides)
|
// 3. Remove System Styling (Module Overrides)
|
||||||
|
|
@ -472,6 +534,12 @@ function injectFearCustomization(html) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 5. Handle Shape
|
||||||
|
let borderRadius = '50%';
|
||||||
|
if (iconShape === 'rounded') borderRadius = '20%';
|
||||||
|
else if (iconShape === 'square') borderRadius = '0%';
|
||||||
|
|
||||||
|
icon.style.borderRadius = borderRadius;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Remove legacy container class if present
|
// Remove legacy container class if present
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue