Datamodel + Appv2 migration, WIP
This commit is contained in:
108
MIGRATION_DATAMODELS.md
Normal file
108
MIGRATION_DATAMODELS.md
Normal file
@@ -0,0 +1,108 @@
|
||||
# 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)** :
|
||||
```javascript
|
||||
actor.system.attributes.vigor.value
|
||||
```
|
||||
|
||||
**Après (avec DataModels)** :
|
||||
```javascript
|
||||
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
|
||||
- [DataModel API](https://foundryvtt.com/api/classes/foundry.abstract.DataModel.html)
|
||||
- [Data Fields](https://foundryvtt.com/api/modules/foundry.data.fields.html)
|
||||
Reference in New Issue
Block a user