# BoL DataModels Ce dossier contient les DataModels pour le système Barbarians of Lemuria (BoL). ## Structure ### Actors DataModels - **character.mjs** : Personnages joueurs - Attributs (Vigor, Agility, Mind, Appeal) - Aptitudes (Initiative, Mêlée, Distance, Défense) - Ressources (HP, Hero Points, Faith, Power, Alchemy, Astrology) - XP et création - Bougette (argent) - **encounter.mjs** : PNJ et créatures - Mêmes attributs que character - Champs spécifiques : chartype (tough/villain), isundead, size, environment - **horde.mjs** : Hordes de créatures - Mêmes attributs de base - Champs spécifiques : hordesize, hordebasehp, hasdamagerule, damagerule - **vehicle.mjs** : Véhicules (navires, chars, etc.) - Attributs véhicules : hull, crew, resources - Champs spécifiques : vehicletype, row, spur, status ### Items DataModels - **item.mjs** : Équipements et objets - Propriétés (weapon, armor, magical, etc.) - Équipement (quantity, weight, price, worn) - Category et subtype - **feature.mjs** : Capacités, traits, sorts - Rank (niveau/rang) - Description - Category et subtype ## Architecture Tous les DataModels héritent de `foundry.abstract.TypeDataModel` et définissent leur schéma via `defineSchema()`. Exemple de structure : ```javascript export default class BoLCharacterDataModel extends foundry.abstract.TypeDataModel { static defineSchema() { const fields = foundry.data.fields; const requiredInteger = { required: true, nullable: false, integer: true }; return { // Définition des champs }; } static LOCALIZATION_PREFIXES = ["BOL.Character"]; // Méthodes personnalisées (à ajouter) } ``` ## Types de champs utilisés - `StringField` : Chaînes de caractères - `NumberField` : Nombres (avec option `integer: true` pour entiers) - `BooleanField` : Booléens - `HTMLField` : HTML enrichi (descriptions, biographies) - `ArrayField` : Tableaux - `SchemaField` : Objets imbriqués ## Export Le fichier `_module.mjs` exporte tous les DataModels : ```javascript export { default as BoLCharacter } from "./character.mjs" export { default as BoLEncounter } from "./encounter.mjs" export { default as BoLHorde } from "./horde.mjs" export { default as BoLVehicle } from "./vehicle.mjs" export { default as BoLItem } from "./item.mjs" export { default as BoLFeature } from "./feature.mjs" ``` ## Configuration dans bol.js Les DataModels sont enregistrés dans `CONFIG` : ```javascript CONFIG.Actor.dataModels = { character: models.BoLCharacter, encounter: models.BoLEncounter, horde: models.BoLHorde, vehicle: models.BoLVehicle } CONFIG.Item.dataModels = { item: models.BoLItem, feature: models.BoLFeature } ``` ## Compatibilité Les DataModels sont compatibles avec le `template.json` existant. La migration est transparente pour les données existantes. ## Prochaines étapes 1. Ajouter `prepareDerivedData()` pour les calculs automatiques 2. Migrer la logique métier depuis actor.js 3. Ajouter des validations personnalisées 4. Documenter avec JSDoc