Files
bol/MIGRATION_DATAMODELS.md

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 de CONFIG.Actor.dataModels et CONFIG.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 DataModel
  • equipment → Intégré dans le DataModel item

4. Utilisation de foundry.data.fields

Tous les champs utilisent désormais les types de champs standard de Foundry :

  • StringField pour les chaînes
  • NumberField pour les nombres (avec option integer: true pour les entiers)
  • BooleanField pour les booléens
  • HTMLField pour le HTML enrichi
  • ArrayField pour les tableaux
  • SchemaField pour les objets imbriqués

Avantages de la migration

  1. Validation automatique : Les DataModels valident automatiquement les données
  2. Performance : Meilleure gestion de la mémoire et des calculs dérivés
  3. Typage : Support TypeScript amélioré
  4. Maintenance : Code plus structuré et maintenable
  5. 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

  1. Ajouter prepareDerivedData() : Pour calculer automatiquement les valeurs dérivées (HP max, initiative, etc.)
  2. Migrer les méthodes métier : Déplacer la logique métier depuis actor.js vers les DataModels
  3. Supprimer template.json : Une fois la migration complètement testée
  4. Ajouter des validations : Utiliser les validateurs des DataFields
  5. 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

Documentation Foundry