mirror of
https://github.com/Foundryborne/daggerheart.git
synced 2026-01-12 11:41:08 +01:00
72 lines
No EOL
2.8 KiB
JavaScript
72 lines
No EOL
2.8 KiB
JavaScript
export default class DhpItem extends Item {
|
|
_preCreate(data, changes, user){
|
|
super._preCreate(data, changes, user);
|
|
}
|
|
|
|
prepareData(){
|
|
super.prepareData();
|
|
|
|
if(this.type === 'class'){
|
|
// Bad. Make this better.
|
|
// this.system.domains = CONFIG.daggerheart.DOMAIN.classDomainMap[Object.keys(CONFIG.daggerheart.DOMAIN.classDomainMap).find(x => x === this.name.toLowerCase())];
|
|
}
|
|
}
|
|
|
|
isInventoryItem(){
|
|
return ['weapon', 'armor', 'miscellaneous', 'consumable'].includes(this.type);
|
|
}
|
|
|
|
_onUpdate(data, options, userId) {
|
|
super._onUpdate(data, options, userId);
|
|
}
|
|
|
|
static async createDialog(data = {}, { parent = null, pack = null, ...options } = {}) {
|
|
const documentName = this.metadata.name;
|
|
const types = game.documentTypes[documentName].filter(t => t !== CONST.BASE_DOCUMENT_TYPE);
|
|
let collection;
|
|
if ( !parent ) {
|
|
if ( pack ) collection = game.packs.get(pack);
|
|
else collection = game.collections.get(documentName);
|
|
}
|
|
const folders = collection?._formatFolderSelectOptions() ?? [];
|
|
const label = game.i18n.localize(this.metadata.label);
|
|
const title = game.i18n.format("DOCUMENT.Create", {type: label});
|
|
const typeObjects = types.reduce((obj, t) => {
|
|
const label = CONFIG[documentName]?.typeLabels?.[t] ?? t;
|
|
obj[t] = { value: t, label: game.i18n.has(label) ? game.i18n.localize(label) : t };
|
|
return obj;
|
|
}, {});
|
|
|
|
// Render the document creation form
|
|
const html = await renderTemplate("systems/daggerheart/templates/sidebar/documentCreate.hbs", {
|
|
folders,
|
|
name: data.name || game.i18n.format("DOCUMENT.New", {type: label}),
|
|
folder: data.folder,
|
|
hasFolders: folders.length >= 1,
|
|
type: data.type || CONFIG[documentName]?.defaultType || typeObjects.armor,
|
|
types: {
|
|
Items: [typeObjects.armor, typeObjects.weapon, typeObjects.consumable, typeObjects.miscellaneous],
|
|
Character: [typeObjects.class, typeObjects.subclass, typeObjects.ancestry, typeObjects.community, typeObjects.feature, typeObjects.domainCard],
|
|
},
|
|
hasTypes: types.length > 1
|
|
});
|
|
|
|
// Render the confirmation dialog window
|
|
return Dialog.prompt({
|
|
title: title,
|
|
content: html,
|
|
label: title,
|
|
callback: html => {
|
|
const form = html[0].querySelector("form");
|
|
const fd = new FormDataExtended(form);
|
|
foundry.utils.mergeObject(data, fd.object, {inplace: true});
|
|
if ( !data.folder ) delete data.folder;
|
|
if ( types.length === 1 ) data.type = types[0];
|
|
if ( !data.name?.trim() ) data.name = this.defaultName();
|
|
return this.create(data, {parent, pack, renderSheet: true});
|
|
},
|
|
rejectClose: false,
|
|
options
|
|
});
|
|
}
|
|
} |