3.8 KiB
Migration vers DataModels pour BoL
Vue d'ensemble
Cette migration transforme le système BoL (Barbarians of Lemuria) pour utiliser les DataModels de Foundry VTT v12+, à l'instar des systèmes fvtt-cthulhu-eternal et fvtt-mournblade.
Structure des fichiers
Nouveaux fichiers créés
module/models/
├── _module.mjs # Fichier d'export principal
├── character.mjs # DataModel pour les personnages
├── encounter.mjs # DataModel pour les rencontres
├── horde.mjs # DataModel pour les hordes
├── vehicle.mjs # DataModel pour les véhicules
├── item.mjs # DataModel pour les items
└── feature.mjs # DataModel pour les features
Fichier modifié
module/bol.js: Ajout de l'import des DataModels et configuration deCONFIG.Actor.dataModelsetCONFIG.Item.dataModels
Changements apportés
1. Structure Actor
Le template.json définissait 4 types d'acteurs :
- character : Personnages joueurs
- encounter : PNJ/Créatures
- horde : Groupes de créatures
- vehicle : Véhicules
Chaque type a maintenant son propre DataModel dans /module/models/.
2. Structure Item
Le template.json définissait 2 types d'items :
- item : Objets/équipements
- feature : Capacités/traits
Chaque type a son DataModel correspondant.
3. Migration des templates
Les templates du template.json ont été convertis en champs de DataModel :
base→ Intégré directement dans chaque DataModelequipment→ Intégré dans le DataModelitem
4. Utilisation de foundry.data.fields
Tous les champs utilisent désormais les types de champs standard de Foundry :
StringFieldpour les chaînesNumberFieldpour les nombres (avec optioninteger: truepour les entiers)BooleanFieldpour les booléensHTMLFieldpour le HTML enrichiArrayFieldpour les tableauxSchemaFieldpour les objets imbriqués
Avantages de la migration
- Validation automatique : Les DataModels valident automatiquement les données
- Performance : Meilleure gestion de la mémoire et des calculs dérivés
- Typage : Support TypeScript amélioré
- Maintenance : Code plus structuré et maintenable
- Compatibilité : Aligné sur les standards Foundry VTT v12+
Points d'attention
Compatibilité ascendante
Le template.json reste en place pour assurer la compatibilité avec les données existantes. Les DataModels utilisent la même structure de données.
Accès aux données
Avant (avec template.json seul) :
actor.system.attributes.vigor.value
Après (avec DataModels) :
actor.system.attributes.vigor.value // Identique !
Calculs dérivés
Les DataModels permettent d'ajouter facilement des méthodes prepareDerivedData() pour calculer automatiquement des valeurs dérivées. Voir exemple dans fvtt-cthulhu-eternal/module/models/protagonist.mjs.
Prochaines étapes recommandées
- Ajouter prepareDerivedData() : Pour calculer automatiquement les valeurs dérivées (HP max, initiative, etc.)
- Migrer les méthodes métier : Déplacer la logique métier depuis
actor.jsvers les DataModels - Supprimer template.json : Une fois la migration complètement testée
- Ajouter des validations : Utiliser les validateurs des DataFields
- Documentation JSDoc : Documenter les DataModels pour le développement
Référence
Exemples utilisés
- fvtt-cthulhu-eternal : Structure de DataModels complexes avec logique métier
- fvtt-mournblade : Organisation simple et claire des DataModels