Better state handling for buttons, etc.

This commit is contained in:
Chris Ryan 2025-11-14 11:54:02 +10:00
parent 8978721e63
commit 6e70f14ca7
2 changed files with 24 additions and 41 deletions

View file

@ -72,7 +72,7 @@ export default class DhTemplateLayer extends foundry.canvas.layers.TemplateLayer
order: 6,
title: 'CONTROLS.Presets',
icon: 'fa-solid fa-stamp',
onChange: (event, active) => DhTemplateLayer.handlePreset(event, active),
onChange: (event) => DhTemplateLayer.handlePreset(event),
button: true
},
settings: {
@ -80,7 +80,7 @@ export default class DhTemplateLayer extends foundry.canvas.layers.TemplateLayer
order: 7,
title: 'CONTROLS.PresetsSettings',
icon: 'fa-solid fa-gear',
onChange: (event, active) => DhTemplateLayer.handlePresetSettings(event, active),
onChange: (event) => DhTemplateLayer.handlePresetSettings(event),
button: true
},
clear: {
@ -97,49 +97,30 @@ export default class DhTemplateLayer extends foundry.canvas.layers.TemplateLayer
};
}
static handlePresetSettings(event, active) {
console.log("Preset settings handling goes here, event, active is: ", event, active);
if (active) {
ui.presetTemplates.open();
// if (CONFIG.ux.TemplateManager.getActivePreview()) {
// return;
// }
// const { width, height } = game.canvas.scene.dimensions;
// const data = {
// x: width / 2,
// y: height / 2,
// t: 'circle',
// distance: 30,
// fillColor: '#FF0000'
// };
// CONFIG.ux.TemplateManager.createPreview(data);
} else {
ui.presetTemplates.close();
// CONFIG.ux.TemplateManager.cancelActivePreview(event);
}
static handlePresetSettings(event) {
console.log("Preset settings handling goes here, event, active is: ", event);
ui.presetTemplates.open();
}
static handlePreset(event, active) {
console.log("Preset handling goes here, event, active is: ", event, active);
if (active) {
if (CONFIG.ux.TemplateManager.getActivePreview()) {
return;
}
const { width, height } = game.canvas.scene.dimensions;
const data = {
x: width / 2,
y: height / 2,
t: 'circle',
distance: 30,
fillColor: '#FF0000'
};
CONFIG.ux.TemplateManager.createPreview(data);
} else {
CONFIG.ux.TemplateManager.cancelActivePreview(event);
if (game.activeTool) {
ui.controls.activate("toggles");
}
// if (CONFIG.ux.TemplateManager.getActivePreview()) {
// return;
// }
const { width, height } = game.canvas.scene.dimensions;
const data = {
x: width / 2,
y: height / 2,
t: 'circle',
distance: 30,
fillColor: game.user.color || '#FF0000'
};
CONFIG.ux.TemplateManager.createPreview(data);
}
_onDragLeftStart(event) {

View file

@ -95,6 +95,8 @@ export default class DhTemplateManager {
canvas.stage.off('mousedown', mousedown);
canvas.app.view.removeEventListener('contextmenu', contextmenu);
canvas.app.view.removeEventListener('wheel', wheel);
this.#activePreview = undefined;
}
/**
@ -103,9 +105,9 @@ export default class DhTemplateManager {
*/
#confirmTemplate(event) {
event.stopPropagation();
const docObject = this.#activePreview.document.toObject();
canvas.scene.createEmbeddedDocuments('MeasuredTemplate', [docObject]);
this.#cancelTemplate(event);
canvas.scene.createEmbeddedDocuments('MeasuredTemplate', [this.#activePreview.document.toObject()]);
this.#activePreview = undefined;
}