Actor sheet, step 1

This commit is contained in:
2025-05-23 00:26:00 +02:00
parent 06ef26f03c
commit ef9c011186
33 changed files with 1052 additions and 1106 deletions

View File

@@ -66,8 +66,7 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found
actor: this.document,
system: this.document.system,
source: this.document.toObject(),
isEncumbered: this.document.system.isEncumbered(),
enrichedDescription: await TextEditor.enrichHTML(this.document.system.description, { async: true }),
enrichedBackstory: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.backstory, { async: true }),
isEditMode: this.isEditMode,
isPlayMode: this.isPlayMode,
isEditable: this.isEditable,
@@ -99,7 +98,7 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found
dragover: this._onDragOver.bind(this),
drop: this._onDrop.bind(this),
}
return new DragDrop(d)
return new foundry.applications.ux.DragDrop.implementation(d)
})
}

View File

@@ -15,11 +15,9 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
createEquipment: HellbornCharacterSheet.#onCreateEquipment,
createArmor: HellbornCharacterSheet.#onCreateArmor,
createWeapon: HellbornCharacterSheet.#onCreateWeapon,
createTalent: HellbornCharacterSheet.#onCreateTalent,
createImplant: HellbornCharacterSheet.#onCreateImplant,
createPsionic: HellbornCharacterSheet.#onCreatePsionic,
createLanguage: HellbornCharacterSheet.#onCreateLanguage
createDeal: HellbornCharacterSheet.#onCreateDeal,
createMalefica: HellbornCharacterSheet.#onCreateMalefica,
createRitual: HellbornCharacterSheet.#onCreateRitual,
},
}
@@ -31,8 +29,11 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
tabs: {
template: "templates/generic/tab-navigation.hbs",
},
talents: {
template: "systems/fvtt-hellborn/templates/character-talents.hbs",
status: {
template: "systems/fvtt-hellborn/templates/character-status.hbs",
},
maleficas: {
template: "systems/fvtt-hellborn/templates/character-maleficas.hbs",
},
equipment: {
template: "systems/fvtt-hellborn/templates/character-equipment.hbs",
@@ -44,7 +45,7 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
/** @override */
tabGroups = {
sheet: "talents",
sheet: "status",
}
/**
@@ -53,7 +54,8 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
*/
#getTabs() {
const tabs = {
talents: { id: "talents", group: "sheet", icon: "fa-solid fa-compass", label: "HELLBORN.Label.talents" },
status: { id: "status", group: "sheet", icon: "fa-solid fa-compass", label: "HELLBORN.Label.status" },
maleficas: { id: "maleficas", group: "sheet", icon: "fa-solid fa-compass", label: "HELLBORN.Label.maleficas" },
equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "HELLBORN.Label.equipment" },
biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "HELLBORN.Label.biography" },
}
@@ -69,28 +71,27 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
const context = await super._prepareContext()
context.tabs = this.#getTabs()
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
context.enrichedNotes = await TextEditor.enrichHTML(this.document.system.notes, { async: true })
return context
}
/** @override */
async _preparePartContext(partId, context) {
const doc = this.document
context.systemFields = this.document.system.schema.fields
switch (partId) {
case "main":
break
case "talents":
context.tab = context.tabs.talents
context.talents = doc.itemTypes.talent
context.talents.sort((a, b) => a.name.localeCompare(b.name))
context.implants = doc.itemTypes.implant
context.implants.sort((a, b) => a.name.localeCompare(b.name))
context.psionics = doc.itemTypes.psionic
context.psionics.sort((a, b) => a.name.localeCompare(b.name))
context.languages = doc.itemTypes.language
context.languages.sort((a, b) => a.name.localeCompare(b.name))
case "status":
context.tab = context.tabs.status
context.perks = doc.itemTypes.perk
context.perks.sort((a, b) => a.name.localeCompare(b.name))
break;
case "maleficas":
context.tab = context.tabs.maleficas
context.maleficas = doc.itemTypes.malefica
context.maleficas.sort((a, b) => a.name.localeCompare(b.name))
context.rituals = doc.itemTypes.ritual
context.rituals.sort((a, b) => a.name.localeCompare(b.name))
break
case "equipment":
context.tab = context.tabs.equipment
@@ -103,8 +104,21 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
break
case "biography":
context.tab = context.tabs.biography
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
context.deals = doc.itemTypes.deal
context.deals.sort((a, b) => a.name.localeCompare(b.name))
context.tarot = doc.itemTypes.tarot
context.enrichedBackstory = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.backstory, { async: true })
context.enrichedAppearance = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.appearance, { async: true })
context.enrichedScars = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.scars, { async: true })
context.enrichedLikes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.likes, { async: true })
context.enrichedDislikes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.dislikes, { async: true })
context.enrichedFears = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.fears, { async: true })
context.enrichedVices = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.vices, { async: true })
context.enrichedGoals = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.goals, { async: true })
context.enrichedAmbitions = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.ambitions, { async: true })
context.enrichedValues = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.values, { async: true })
context.enrichedBonds = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.bonds, { async: true })
context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.notes, { async: true })
break
}
return context
@@ -115,6 +129,18 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newEquipment"), type: "equipment" }])
}
static #onCreateDeal(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newDeal"), type: "deal" }])
}
static #onCreateMalefica(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newMalefica"), type: "malefica" }])
}
static #onCreateRitual(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newRitual"), type: "ritual" }])
}
static #onCreateWeapon(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newWeapon"), type: "weapon" }])
}
@@ -123,21 +149,6 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newArmor"), type: "armor" }])
}
static #onCreateTalent(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newTalent"), type: "talent" }])
}
static #onCreateImplant(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newImplant"), type: "implant" }])
}
static #onCreatePsionic(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newPsionic"), type: "psionic" }])
}
static #onCreateLanguage(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newLanguage"), type: "language" }])
}
/**
@@ -158,10 +169,11 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
const rollType = $(event.currentTarget).data("roll-type")
let item
let li
let statKey
switch (rollType) {
case "skill":
let skillId = $(event.currentTarget).data("skill-id");
item = this.actor.system.skills[skillId];
case "stat":
statKey = $(event.currentTarget).data("stat-id");
item = this.actor.system.stats[statKey];
break
case "weapon":
case "damage":

View File

@@ -0,0 +1,28 @@
import HellbornItemSheet from "./base-item-sheet.mjs"
export default class HellbornDealSheet extends HellbornItemSheet {
/** @override */
static DEFAULT_OPTIONS = {
classes: ["deal"],
position: {
width: 600,
},
window: {
contentClasses: ["deal-content"],
},
}
/** @override */
static PARTS = {
main: {
template: "systems/fvtt-hellborn/templates/deal.hbs",
},
}
/** @override */
async _prepareContext() {
const context = await super._prepareContext()
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
return context
}
}

View File

@@ -0,0 +1,30 @@
import HellbornItemSheet from "./base-item-sheet.mjs"
export default class HellbornTarotSheet extends HellbornItemSheet {
/** @override */
static DEFAULT_OPTIONS = {
classes: ["tarot"],
position: {
width: 800,
height: 640
},
window: {
contentClasses: ["tarot-content"],
},
}
/** @override */
static PARTS = {
main: {
template: "systems/fvtt-hellborn/templates/tarot.hbs",
},
}
/** @override */
async _prepareContext() {
const context = await super._prepareContext()
context.enrichedPositiveEffect = await TextEditor.enrichHTML(this.document.system.positiveEffect, { async: true })
context.enrichedNegativeEffect = await TextEditor.enrichHTML(this.document.system.negativeEffect, { async: true })
return context
}
}