Files
fvtt-hawkmoon-cyd/modules/applications/sheets/personnage-sheet.mjs

105 lines
3.3 KiB
JavaScript

import HawkmoonActorSheet from "./base-actor-sheet.mjs"
import { HawkmoonUtility } from "../../hawkmoon-utility.js"
export default class HawkmoonPersonnageSheet extends HawkmoonActorSheet {
/** @override */
static DEFAULT_OPTIONS = {
...super.DEFAULT_OPTIONS,
classes: [...super.DEFAULT_OPTIONS.classes],
window: {
...super.DEFAULT_OPTIONS.window,
title: "SHEETS.Actor.personnage",
},
actions: {
...super.DEFAULT_OPTIONS.actions,
openCellule: HawkmoonPersonnageSheet.#onOpenCellule,
},
}
/** @override */
static PARTS = {
sheet: {
template: "systems/fvtt-hawkmoon-cyd/templates/actor-sheet.hbs",
},
}
/** @override */
tabGroups = { primary: "principal" }
/** @override */
async _prepareContext() {
const context = await super._prepareContext()
const actor = this.document
// Add personnage-specific data
context.skills = actor.getSkills()
context.armes = foundry.utils.duplicate(actor.getWeapons())
context.monnaies = foundry.utils.duplicate(actor.getMonnaies())
context.protections = foundry.utils.duplicate(actor.getArmors())
context.historiques = foundry.utils.duplicate(actor.getHistoriques() || [])
context.talents = foundry.utils.duplicate(actor.getTalents() || [])
context.mutations = foundry.utils.duplicate(actor.getMutations() || [])
context.talentsCell = this.#getCelluleTalents()
context.celluleId = this.#getCelluleId()
context.profils = foundry.utils.duplicate(actor.getProfils() || [])
context.combat = actor.getCombatValues()
context.equipements = foundry.utils.duplicate(actor.getEquipments())
context.artefacts = foundry.utils.duplicate(actor.getArtefacts())
context.richesse = actor.computeRichesse()
context.coupDevastateur = actor.items.find(it => it.type == "talent" && it.name.toLowerCase() == "coup devastateur" && !it.system.used)
context.valeurEquipement = actor.computeValeurEquipement()
context.nbCombativite = actor.system.sante.nbcombativite
context.combativiteList = HawkmoonUtility.getCombativiteList(actor.system.sante.nbcombativite)
context.initiative = actor.getFlag("world", "last-initiative") || -1
return context
}
/**
* Get talents from cellules this actor is a member of
* @returns {Array}
* @private
*/
#getCelluleTalents() {
let talents = []
for (let cellule of game.actors) {
if (cellule.type == "cellule") {
let found = cellule.system.members.includes(this.actor.id)
if (found) {
talents = talents.concat(cellule.getTalents())
}
}
}
return talents
}
/**
* Get the ID of the cellule this actor is a member of
* @returns {string|null}
* @private
*/
#getCelluleId() {
for (let cellule of game.actors) {
if (cellule.type == "cellule") {
if (cellule.system.members.includes(this.actor.id)) {
return cellule.id
}
}
}
return null
}
/**
* Open cellule sheet
* @param {Event} event
* @param {HTMLElement} target
* @private
*/
static async #onOpenCellule(event, target) {
const celluleId = target.dataset.celluleId
if (!celluleId) return
const cellule = game.actors.get(celluleId)
if (cellule) cellule.sheet.render(true)
}
}