116 lines
2.9 KiB
JavaScript
116 lines
2.9 KiB
JavaScript
import { GenericContextMenu } from "../../utils/GenericContextMenu.mjs";
|
|
import { DialogManager } from "../../utils/DialogManager.mjs";
|
|
import { GenericItemSheet } from "./GenericItemSheet.mjs";
|
|
import { localizer } from "../../utils/localizer.mjs";
|
|
|
|
export class WeaponSheet extends GenericItemSheet {
|
|
static get defaultOptions() {
|
|
let opts = foundry.utils.mergeObject(
|
|
super.defaultOptions,
|
|
{
|
|
template: `systems/dotdungeon/templates/items/weapon/v1/index.hbs`,
|
|
width: 300,
|
|
height: 340,
|
|
tabs: [
|
|
{
|
|
group: `page`,
|
|
navSelector: `nav.page`,
|
|
contentSelector: `.page-content`,
|
|
initial: `general`,
|
|
},
|
|
],
|
|
}
|
|
);
|
|
opts.classes.push(`dotdungeon`, `style-v3`);
|
|
return opts;
|
|
};
|
|
|
|
activateListeners(html) {
|
|
super.activateListeners(html);
|
|
|
|
new GenericContextMenu(html, `.photo.panel`, [
|
|
{
|
|
name: localizer(`dotdungeon.common.view-larger`),
|
|
callback: () => {
|
|
(new ImagePopout(this.item.img)).render(true);
|
|
},
|
|
},
|
|
{
|
|
name: localizer(`dotdungeon.common.edit`),
|
|
condition: () => this.isEditable,
|
|
callback: () => {
|
|
const fp = new FilePicker({
|
|
callback: (path) => {
|
|
this.item.update({"img": path});
|
|
},
|
|
});
|
|
fp.render(true);
|
|
},
|
|
},
|
|
{
|
|
name: localizer(`dotdungeon.common.reset`),
|
|
condition: () => this.isEditable,
|
|
callback: () => {
|
|
console.log(`.dungeon | Reset Item Image`)
|
|
},
|
|
}
|
|
]);
|
|
|
|
if (!this.isEditable) return;
|
|
console.debug(`.dungeon | Adding event listeners for Weapon Item: ${this.item.id}`);
|
|
|
|
html.find(`.create-ae`).on(`click`, async () => {
|
|
await this.item.createEmbeddedDocuments(
|
|
`ActiveEffect`,
|
|
[{name: localizer(`dotdungeon.default.name`, { document: `ActiveEffect`, type: `base` })}],
|
|
{ renderSheet: true }
|
|
);
|
|
});
|
|
|
|
new GenericContextMenu(html, `.effect.panel`, [
|
|
{
|
|
name: localizer(`dotdungeon.common.edit`),
|
|
callback: async (html) => {
|
|
(await fromUuid(html.closest(`.effect`)[0].dataset.embeddedId))?.sheet.render(true);
|
|
},
|
|
},
|
|
{
|
|
name: localizer(`dotdungeon.common.delete`),
|
|
callback: async (html) => {
|
|
const target = html.closest(`.effect`)[0];
|
|
const data = target.dataset;
|
|
const id = data.embeddedId;
|
|
const doc = await fromUuid(id);
|
|
DialogManager.createOrFocus(
|
|
`${doc.uuid}-delete`,
|
|
{
|
|
title: localizer(`dotdungeon.delete.ActiveEffect.title`, doc),
|
|
content: localizer(`dotdungeon.delete.ActiveEffect.content`, doc),
|
|
buttons: {
|
|
yes: {
|
|
label: localizer(`Yes`),
|
|
callback() {
|
|
doc.delete();
|
|
},
|
|
},
|
|
no: {
|
|
label: localizer(`No`),
|
|
}
|
|
}
|
|
}
|
|
);
|
|
},
|
|
}
|
|
]);
|
|
};
|
|
|
|
async getData() {
|
|
const ctx = await super.getData();
|
|
|
|
ctx.meta.showSettingsTab = ctx.isGM || this.item.isOwned;
|
|
ctx.meta.isEmbedded = this.item.isOwned;
|
|
ctx.meta.isEditable = this.isEditable;
|
|
|
|
return ctx;
|
|
};
|
|
};
|