mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-04-21 23:13:39 +02:00
Simplify effect click event
This commit is contained in:
parent
b2a900db16
commit
791cf8f903
1 changed files with 11 additions and 24 deletions
|
|
@ -49,12 +49,9 @@ export default class DhEffectsDisplay extends HandlebarsApplicationMixin(Applica
|
||||||
|
|
||||||
_attachPartListeners(partId, htmlElement, options) {
|
_attachPartListeners(partId, htmlElement, options) {
|
||||||
super._attachPartListeners(partId, htmlElement, options);
|
super._attachPartListeners(partId, htmlElement, options);
|
||||||
|
for (const element of this.element?.querySelectorAll('.effect-container a') ?? []) {
|
||||||
if (this.element) {
|
element.addEventListener('click', e => this.#onClickEffect(e));
|
||||||
this.element.querySelectorAll('.effect-container a').forEach(element => {
|
element.addEventListener('contextmenu', e => this.#onClickEffect(e, -1));
|
||||||
element.addEventListener('click', this.effectLeftclick.bind(this));
|
|
||||||
element.addEventListener('contextmenu', this.effectRightclick.bind(this));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -88,31 +85,21 @@ export default class DhEffectsDisplay extends HandlebarsApplicationMixin(Applica
|
||||||
this.render();
|
this.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
async effectLeftclick(event) {
|
async #onClickEffect(event, delta = 1) {
|
||||||
const element = event.target.closest('.effect-container');
|
const element = event.target.closest('.effect-container');
|
||||||
const effects = DhEffectsDisplay.getTokenEffects();
|
const effects = DhEffectsDisplay.getTokenEffects();
|
||||||
const effect = effects.find(x => x.id === element.dataset.effectId);
|
const effect = effects.find(x => x.id === element.dataset.effectId);
|
||||||
|
if (!effect || (delta >= 0 && !effect.system.stacking?.enabled)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!effect.system.stacking?.enabled) return;
|
const maxValue = effect.system.stacking.max ?? Infinity;
|
||||||
|
const newValue = Math.clamp((effect.system.stacking.value ?? 1) + delta, 0, maxValue);
|
||||||
const incrementedValue = effect.system.stacking.value + 1;
|
if (newValue > 0) {
|
||||||
const newValue = effect.system.stacking.max
|
await effect.update({ 'system.stacking.value': newValue });
|
||||||
? Math.min(incrementedValue, effect.system.stacking.max)
|
|
||||||
: incrementedValue;
|
|
||||||
await effect.update({ 'system.stacking.value': newValue });
|
|
||||||
this.render();
|
|
||||||
}
|
|
||||||
|
|
||||||
async effectRightclick(event) {
|
|
||||||
const element = event.target.closest('.effect-container');
|
|
||||||
const effects = DhEffectsDisplay.getTokenEffects();
|
|
||||||
const effect = effects.find(x => x.id === element.dataset.effectId);
|
|
||||||
if (effect.system.stacking?.enabled && effect.system.stacking.value > 1) {
|
|
||||||
await effect.update({ 'system.stacking.value': effect.system.stacking.value - 1 });
|
|
||||||
} else {
|
} else {
|
||||||
await effect.delete();
|
await effect.delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
this.render();
|
this.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue