Actor sheet
All checks were successful
Release Creation / build (release) Successful in 42s

This commit is contained in:
2025-03-05 22:15:32 +01:00
parent da9a69b916
commit 9013229c20
24 changed files with 958 additions and 682 deletions

View File

@@ -66,6 +66,7 @@ export default class FTLNomadActorSheet 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 }),
isEditMode: this.isEditMode,
isPlayMode: this.isPlayMode,

View File

@@ -12,9 +12,14 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
contentClasses: ["character-content"],
},
actions: {
createGear: FTLNomadCharacterSheet.#onCreateGear,
createEquipment: FTLNomadCharacterSheet.#onCreateEquipment,
createArmor: FTLNomadCharacterSheet.#onCreateArmor,
createWeapon: FTLNomadCharacterSheet.#onCreateWeapon
createWeapon: FTLNomadCharacterSheet.#onCreateWeapon,
createTalent: FTLNomadCharacterSheet.#onCreateTalent,
createImplant: FTLNomadCharacterSheet.#onCreateImplant,
createPsionic: FTLNomadCharacterSheet.#onCreatePsionic,
createLanguage: FTLNomadCharacterSheet.#onCreateLanguage
},
}
@@ -26,6 +31,9 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
tabs: {
template: "templates/generic/tab-navigation.hbs",
},
talents: {
template: "systems/fvtt-ftl-nomad/templates/character-talents.hbs",
},
equipment: {
template: "systems/fvtt-ftl-nomad/templates/character-equipment.hbs",
},
@@ -36,7 +44,7 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
/** @override */
tabGroups = {
sheet: "main",
sheet: "talents",
}
/**
@@ -45,6 +53,7 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
*/
#getTabs() {
const tabs = {
talents: { id: "talents", group: "sheet", icon: "fa-solid fa-compass", label: "FTLNOMAD.Label.talents" },
equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "FTLNOMAD.Label.equipment" },
biography: { id: "biography", group: "sheet", icon: "fa-solid fa-book", label: "FTLNOMAD.Label.biography" },
}
@@ -62,7 +71,7 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
context.enrichedNotes = await TextEditor.enrichHTML(this.document.system.notes, { async: true })
return context
}
@@ -72,6 +81,17 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
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))
break
case "equipment":
context.tab = context.tabs.equipment
context.weapons = doc.itemTypes.weapon
@@ -90,8 +110,8 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
return context
}
static #onCreateGear(event, target) {
static #onCreateEquipment(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newGear"), type: "gear" }])
}
@@ -103,6 +123,22 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newArmor"), type: "armor" }])
}
static #onCreateTalent(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newTalent"), type: "talent" }])
}
static #onCreateImplant(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newImplant"), type: "implant" }])
}
static #onCreatePsionic(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newPsionic"), type: "psionic" }])
}
static #onCreateLanguage(event, target) {
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("FTLNOMAD.Label.newLanguage"), type: "language" }])
}
/**
* Handles the roll action triggered by user interaction.
@@ -122,35 +158,16 @@ export default class FTLNomadCharacterSheet extends FTLNomadActorSheet {
const rollType = $(event.currentTarget).data("roll-type")
let item
let li
// Debug : console.log(">>>>", event, target, rollType)
// Deprecated : if (this.isEditMode) return
switch (rollType) {
case "resource":
item = foundry.utils.duplicate(this.actor.system.resources)
item.name = game.i18n.localize(`FTLNOMAD.Label.Resources`)
item.targetScore = item.permanentRating
break
case "char":
let charId = $(event.currentTarget).data("char-id")
item = foundry.utils.duplicate(this.actor.system.characteristics[charId])
item.name = game.i18n.localize(`FTLNOMAD.Label.${charId}Long`)
item.targetScore = item.value * 5
break
case "skill":
li = $(event.currentTarget).parents(".item");
item = this.actor.items.get(li.data("item-id"));
let skillId = $(event.currentTarget).data("skill-id");
item = this.actor.system.skills[skillId];
break
case "weapon":
case "damage":
li = $(event.currentTarget).parents(".item");
item = this.actor.items.get(li.data("item-id"));
item.damageBonus = this.actor.system.damageBonus
break
case "san":
item = foundry.utils.duplicate(this.actor.system.san)
item.name = game.i18n.localize("FTLNOMAD.Label.SAN")
item.targetScore = item.value
break;
default:
throw new Error(`Unknown roll type ${rollType}`)
}