118 lines
4.2 KiB
JavaScript
118 lines
4.2 KiB
JavaScript
const {HandlebarsApplicationMixin, DocumentSheetV2} = foundry.applications.api
|
|
const {ActorSheetV2} = foundry.applications.sheets
|
|
|
|
export class StandaloneADVSF extends HandlebarsApplicationMixin(ActorSheetV2) {
|
|
|
|
/** @inheritDoc */
|
|
static DEFAULT_OPTIONS = {
|
|
position: {width: 520, height: 480},
|
|
classes: ['dsa41', 'sheet', 'actor', 'character', 'standalone', 'advsf'],
|
|
tag: 'form',
|
|
actions: {
|
|
rollFlaw: StandaloneADVSF.#rollFlaw,
|
|
openEmbeddedDocument: StandaloneADVSF.#openEmbeddedDocument,
|
|
|
|
}
|
|
}
|
|
|
|
/** @inheritDoc */
|
|
static PARTS = {
|
|
form: {
|
|
template: `systems/DSA_4-1/templates/actor/character/standalone/advsf.hbs`
|
|
}
|
|
}
|
|
|
|
_actor = null
|
|
|
|
constructor(actor) {
|
|
super(actor)
|
|
this._actor = actor
|
|
this.render(true)
|
|
this.options.window.title = `${this.document.name} Vor und Nachteile`
|
|
}
|
|
|
|
static async #rollFlaw(event, target) {
|
|
this._actor?.sheet.options.actions.rollFlaw.bind(this)(event, target)
|
|
}
|
|
|
|
static async #openEmbeddedDocument(event, target) {
|
|
this._actor?.sheet.options.actions.openEmbeddedDocument.bind(this)(event, target)
|
|
}
|
|
|
|
_configureRenderOptions(options) {
|
|
super._configureRenderOptions(options)
|
|
|
|
options.window.title = `${this.document.name}: Vor und Nachteile`
|
|
|
|
return options
|
|
}
|
|
|
|
async _prepareContext(context, options, object) {
|
|
if (this._actor) {
|
|
const actorData = this.document
|
|
context.system = actorData.system
|
|
context.flags = actorData.flags
|
|
context.derived = actorData.system
|
|
context.originalName = actorData.name
|
|
context.name = context.derived.name ?? actorData.name
|
|
context.effects = actorData.effects ?? []
|
|
context.advantages = []
|
|
context.flaws = []
|
|
|
|
actorData.itemTypes.Advantage.forEach((item) => {
|
|
if (!item.system.schlechteEigenschaft) {
|
|
context.advantages.push({
|
|
id: item._id,
|
|
name: item.name,
|
|
value: item.system.value,
|
|
options: item.system.auswahl,
|
|
description: item.system.description,
|
|
isAdvantage: !item.system.nachteil,
|
|
isDisadvantage: item.system.nachteil,
|
|
isBadAttribute: item.system.schlechteEigenschaft,
|
|
fav: item.getFlag("DSA_4-1", "favourite")
|
|
})
|
|
} else {
|
|
context.flaws.push({
|
|
id: item._id,
|
|
name: item.name,
|
|
value: item.system.value,
|
|
options: item.system.auswahl,
|
|
description: item.system.description,
|
|
isAdvantage: !item.system.nachteil,
|
|
isDisadvantage: item.system.nachteil,
|
|
isBadAttribute: item.system.schlechteEigenschaft,
|
|
fav: item.getFlag("DSA_4-1", "favourite")
|
|
})
|
|
}
|
|
}
|
|
)
|
|
|
|
context.specialAbilities = []
|
|
actorData.itemTypes.SpecialAbility.forEach((item) => {
|
|
context.specialAbilities.push({
|
|
id: item._id,
|
|
name: item.system.value ? item.system.value : item.name,
|
|
fav: item.getFlag("DSA_4-1", "favourite")
|
|
});
|
|
}
|
|
);
|
|
|
|
return context
|
|
}
|
|
}
|
|
|
|
_onRender(context, options) {
|
|
if (this._actor) {
|
|
new foundry.applications.ux.DragDrop.implementation({
|
|
dropSelector: ".advantages, .special-abilities",
|
|
permissions: {
|
|
drop: this._actor.sheet._canDragDrop.bind(this._actor.sheet)
|
|
},
|
|
callbacks: {
|
|
drop: this._actor.sheet._onDrop.bind(this._actor.sheet),
|
|
}
|
|
}).bind(this.element);
|
|
}
|
|
}
|
|
} |