import { LESOUBLIES_CONFIG } from "./les-oublies-config.js" import { LesOubliesUtility } from "./les-oublies-utility.js" import { LesOubliesActor } from "./les-oublies-actor.js" import { LesOubliesItem } from "./les-oublies-item.js" import { LesOubliesRolls } from "./les-oublies-rolls.js" import * as models from "./models/index.mjs" import * as sheets from "./applications/sheets/_module.mjs" const DEFAULT_PERSONNAGE_TOKEN_TEXTURE = "systems/fvtt-les-oublies/assets/tokens/border_token_oublies.webp" function ensureSystemStyles() { const href = `systems/${game.system.id}/css/les-oublies.css` const existingLink = document.querySelector(`link[href$="${href}"]`) if (existingLink) return const link = document.createElement("link") link.rel = "stylesheet" link.type = "text/css" link.href = href link.dataset.systemStyle = game.system.id document.head.append(link) } function usesFoundryDefaultTokenTexture(actor, data) { const tokenTexture = foundry.utils.getProperty(data, "prototypeToken.texture.src") ?? foundry.utils.getProperty(actor, "prototypeToken.texture.src") ?? "" return !tokenTexture || tokenTexture === CONST.DEFAULT_TOKEN || tokenTexture === "icons/svg/mystery-man.svg" } Hooks.once("init", function () { console.info("Les Oubliés | Initialisation du système") ensureSystemStyles() CONFIG.Actor.documentClass = LesOubliesActor CONFIG.Actor.dataModels = { personnage: models.PersonnageDataModel, compagnie: models.CompagnieDataModel, creature: models.CreatureDataModel, } CONFIG.Item.documentClass = LesOubliesItem CONFIG.Item.dataModels = { race: models.RaceDataModel, tribu: models.TribuDataModel, metier: models.MetierDataModel, competence: models.CompetenceDataModel, sortilege: models.SortilegeDataModel, arme: models.ArmeDataModel, armure: models.ArmureDataModel, equipement: models.EquipementDataModel, pouvoircompagnie: models.PouvoirCompagnieDataModel, } CONFIG.LESOUBLIES = LESOUBLIES_CONFIG game.system.lesOublies = { config: LESOUBLIES_CONFIG, models, sheets, rolls: LesOubliesRolls, utility: LesOubliesUtility, } foundry.documents.collections.Actors.registerSheet("fvtt-les-oublies", sheets.LesOubliesPersonnageSheet, { types: ["personnage"], makeDefault: true }) foundry.documents.collections.Actors.registerSheet("fvtt-les-oublies", sheets.LesOubliesCompagnieSheet, { types: ["compagnie"], makeDefault: true }) foundry.documents.collections.Actors.registerSheet("fvtt-les-oublies", sheets.LesOubliesCreatureSheet, { types: ["creature"], makeDefault: true }) foundry.documents.collections.Items.registerSheet("fvtt-les-oublies", sheets.LesOubliesReferenceItemSheet, { types: ["race", "tribu", "metier"], makeDefault: true }) foundry.documents.collections.Items.registerSheet("fvtt-les-oublies", sheets.LesOubliesCompetenceSheet, { types: ["competence"], makeDefault: true }) foundry.documents.collections.Items.registerSheet("fvtt-les-oublies", sheets.LesOubliesSortilegeSheet, { types: ["sortilege"], makeDefault: true }) foundry.documents.collections.Items.registerSheet("fvtt-les-oublies", sheets.LesOubliesArmeSheet, { types: ["arme"], makeDefault: true }) foundry.documents.collections.Items.registerSheet("fvtt-les-oublies", sheets.LesOubliesArmureSheet, { types: ["armure"], makeDefault: true }) foundry.documents.collections.Items.registerSheet("fvtt-les-oublies", sheets.LesOubliesEquipementSheet, { types: ["equipement"], makeDefault: true }) foundry.documents.collections.Items.registerSheet("fvtt-les-oublies", sheets.LesOubliesPouvoirCompagnieSheet, { types: ["pouvoircompagnie"], makeDefault: true }) LesOubliesUtility.registerHandlebarsHelpers() }) Hooks.on("preCreateActor", function (actor, data) { if (actor.type !== "personnage") return if (!usesFoundryDefaultTokenTexture(actor, data)) return actor.updateSource({ prototypeToken: { texture: { src: DEFAULT_PERSONNAGE_TOKEN_TEXTURE, }, }, }) })