# DataModels Ecryme

## Vue d'ensemble

Ce dossier contient les DataModels pour le système Ecryme. Les DataModels sont la méthode moderne de Foundry VTT (v10+) pour définir les structures de données des acteurs et des items.

## Migration depuis template.json

Le système Ecryme a été migré de l'ancien système `template.json` vers les DataModels. Le fichier `template.json` est conservé pour référence mais est maintenant marqué comme deprecated.

## Structure des fichiers

### Modèles d'Items

- **equipment.js** - Équipements génériques
- **weapon.js** - Armes (mêlée et distance)
- **trait.js** - Traits de personnage
- **specialization.js** - Spécialisations de compétences
- **maneuver.js** - Manœuvres de combat

### Modèles d'Acteurs

- **pc.js** - Personnages joueurs (PC)
- **npc.js** - Personnages non-joueurs (NPC)
- **annency.js** - Annency (acteurs spéciaux)

### Fichier d'index

- **_module.js** - Centralise tous les exports des DataModels

## Utilisation

Les DataModels sont automatiquement enregistrés dans `CONFIG.Actor.dataModels` et `CONFIG.Item.dataModels` lors de l'initialisation du système dans `ecryme-main.js`.

### Accès aux données

Dans les acteurs et items, les données du système sont accessibles via `actor.system` ou `item.system` :

```javascript
// Exemple avec un PC
const athletics = actor.system.skills.physical.skilllist.athletics.value;

// Exemple avec une arme
const weaponType = item.system.weapontype;
```

## Avantages des DataModels

1. **Validation automatique** - Les types de champs sont vérifiés automatiquement
2. **Valeurs par défaut** - Chaque champ a une valeur initiale définie
3. **Type safety** - Meilleure autocomplete dans les IDEs
4. **Performance** - Optimisation interne de Foundry VTT
5. **Maintenance** - Code plus propre et organisé

## Compatibilité

Les DataModels sont rétrocompatibles avec les données existantes. Les acteurs et items créés avec l'ancien système `template.json` seront automatiquement migrés vers les nouveaux DataModels lors de leur chargement.

## Développement

Pour ajouter un nouveau type d'acteur ou d'item :

1. Créer un nouveau fichier DataModel dans ce dossier
2. Définir le schema avec `static defineSchema()`
3. Exporter le modèle dans `_module.js`
4. Enregistrer le modèle dans `ecryme-main.js` (CONFIG.Actor.dataModels ou CONFIG.Item.dataModels)

### Exemple minimal

```javascript
export default class MyNewItemDataModel extends foundry.abstract.TypeDataModel {
  static defineSchema() {
    const fields = foundry.data.fields;
    return {
      description: new fields.HTMLField({ initial: "" }),
      value: new fields.NumberField({ initial: 0, integer: true, min: 0 })
    };
  }
}
```

## Documentation Foundry VTT

Pour plus d'informations sur les DataModels :
https://foundryvtt.com/article/system-data-models/
