113 lines
3.0 KiB
Markdown
113 lines
3.0 KiB
Markdown
# 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
|