77 lines
2.6 KiB
JavaScript
77 lines
2.6 KiB
JavaScript
import VermineBaseActorSheet from "./base-actor-sheet.mjs"
|
|
|
|
export default class VermineVehicleSheetV2 extends VermineBaseActorSheet {
|
|
|
|
static DEFAULT_OPTIONS = {
|
|
classes: ["vehicle"],
|
|
position: { width: 640, height: 580 },
|
|
window: { contentClasses: ["vehicle-content"] }
|
|
}
|
|
|
|
static PARTS = {
|
|
main: { template: "systems/vermine2047/templates/actor/appv2/vehicle-main.hbs", scrollable: [""] },
|
|
tabs: { template: "templates/generic/tab-navigation.hbs" },
|
|
specs: { template: "systems/vermine2047/templates/actor/appv2/vehicle-specs.hbs", scrollable: [""] }
|
|
}
|
|
|
|
tabGroups = { sheet: "specs" }
|
|
|
|
#getTabs() {
|
|
const tabs = {
|
|
specs: { id: "specs", group: "sheet", icon: "fas fa-car-side", label: "VERMINE.vehicle_specs" }
|
|
}
|
|
for (const v of Object.values(tabs)) {
|
|
v.active = this.tabGroups[v.group] === v.id
|
|
v.cssClass = v.active ? "active" : ""
|
|
}
|
|
return tabs
|
|
}
|
|
|
|
async _prepareContext() {
|
|
const context = await super._prepareContext()
|
|
context.tabs = this.#getTabs()
|
|
// Compétences d'Entretien possibles (mécanique, technologie, artisanat, animalisme…)
|
|
const maintenanceKeys = ["mecanical", "technology", "crafting", "animalism", "environment", "wildlife", "flora", "repulsion", "toxics"]
|
|
const current = this.document.system.maintenance || []
|
|
context.maintenanceSkills = maintenanceKeys.map(key => ({
|
|
key,
|
|
label: game.i18n.localize("SKILLS." + key + ".name"),
|
|
checked: current.includes(key)
|
|
}))
|
|
// Propriétaire (groupe ou personnage) résolu
|
|
context.resolvedOwner = null
|
|
if (this.document.system.ownerId) {
|
|
const owner = game.actors.get(this.document.system.ownerId)
|
|
if (owner) context.resolvedOwner = { id: owner.id, name: owner.name }
|
|
}
|
|
return context
|
|
}
|
|
|
|
async _preparePartContext(partId, context) {
|
|
switch (partId) {
|
|
case "main": break
|
|
case "specs":
|
|
context.tab = context.tabs.specs
|
|
break
|
|
}
|
|
return context
|
|
}
|
|
|
|
changeTab(tab, group, options = {}) {
|
|
super.changeTab(tab, group, options)
|
|
if (group === "sheet") {
|
|
const main = this.element?.querySelector('[data-group="sheet"][data-tab="main"]')
|
|
if (main) main.classList.add("active")
|
|
}
|
|
}
|
|
|
|
/** @override - nettoie le tableau d'Entretien (retire les cases non cochées). */
|
|
_prepareSubmitData(event, form, formData, updateData) {
|
|
const result = super._prepareSubmitData(event, form, formData, updateData)
|
|
if (Array.isArray(result?.system?.maintenance)) {
|
|
result.system.maintenance = result.system.maintenance.filter(v => typeof v === "string" && v.trim() !== "")
|
|
}
|
|
return result
|
|
}
|
|
}
|