Datamodel + Appv2 migration, WIP
This commit is contained in:
112
module/models/README.md
Normal file
112
module/models/README.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user