Move generic sheet mixin

This commit is contained in:
Oliver-Akins 2025-01-01 00:45:58 -07:00
parent c4a29d8ae1
commit a6f11cf6fe
2 changed files with 3 additions and 4 deletions

View file

@ -0,0 +1,61 @@
import { localizer } from "../utils/Localizer.mjs";
import { Logger } from "../utils/Logger.mjs";
const { Roll } = foundry.dice;
/**
* A mixin that takes the class from HandlebarsApplicationMixin and
*/
export function GenericSheetMixin(HandlebarsSheet) {
class GenericRipCryptSheet extends HandlebarsSheet {
// #region Options
static DEFAULT_OPTIONS = {
classes: [
`ripcrypt`,
],
actions: {
roll: this.rollDice,
},
};
// #endregion
// #region Lifecycle
async _preparePartContext(partId, ctx, opts) {
ctx = await super._preparePartContext(partId, ctx, opts);
delete ctx.document;
delete ctx.fields;
ctx.meta ??= {};
ctx.meta.idp = this.document.uuid;
ctx.meta.limited = this.actor.limited;
ctx.meta.editable = ctx.editable;
delete ctx.editable;
return ctx;
};
// #endregion
// #region Actions
/** @this {GenericRipCryptSheet} */
static async rollDice(_$e, el) {
const data = el.dataset;
const formula = data.formula;
Logger.debug(`Attempting to roll formula: ${formula}`);
let flavor;
if (data.flavor) {
flavor = localizer(data.flavor);
}
const roll = new Roll(formula);
await roll.evaluate();
await roll.toMessage({
speaker: ChatMessage.getSpeaker({ actor: this.actor }),
flavor,
});
};
// #endregion
};
return GenericRipCryptSheet;
};