Migration datamodels !
All checks were successful
Release Creation / build (release) Successful in 53s
All checks were successful
Release Creation / build (release) Successful in 53s
This commit is contained in:
@@ -1,298 +0,0 @@
|
||||
# Améliorations de la Fiche Créature
|
||||
|
||||
## Vue d'ensemble
|
||||
La fiche créature a été complètement alignée avec les dernières améliorations de la fiche personnage pour assurer une expérience utilisateur cohérente à travers tout le système.
|
||||
|
||||
## Changements Apportés
|
||||
|
||||
## PARTIE 1 : ONGLET ATTRIBUTS (STATS)
|
||||
|
||||
### 1. Attributs avec Liste Déroulante (Dropdown)
|
||||
**Avant:**
|
||||
```handlebars
|
||||
<input type="number" name="system.attributs.{{key}}.value" value="{{attr.value}}" />
|
||||
```
|
||||
|
||||
**Après:**
|
||||
```handlebars
|
||||
<select name="system.attributs.{{key}}.value" value="{{attr.value}}" data-dtype="Number">
|
||||
{{selectOptions @root.config.listeNiveauCreature selected=attr.value}}
|
||||
</select>
|
||||
```
|
||||
|
||||
**Raison:**
|
||||
- Les créatures peuvent avoir des attributs de 0 à 35 (vs 0-10 pour personnages)
|
||||
- Utilise `listeNiveauCreature` créé dynamiquement dans `wasteland-main.js`
|
||||
- Interface plus propre et empêche les valeurs invalides
|
||||
|
||||
### 2. Attributs Cliquables (Rollable)
|
||||
**Avant:**
|
||||
```handlebars
|
||||
<span class="item-name">{{attr.label}}</span>
|
||||
```
|
||||
|
||||
**Après:**
|
||||
```handlebars
|
||||
<span class="item-name">
|
||||
<a class="rollable" data-action="rollAttribut" data-attr-key="{{key}}">{{attr.label}}</a>
|
||||
</span>
|
||||
```
|
||||
|
||||
**Raison:**
|
||||
- Permet de cliquer sur le nom de l'attribut pour faire un jet
|
||||
|
||||
### 3-5. Boutons +/- pour Santé et Psyché
|
||||
Ajouté des boutons d'ajustement pour:
|
||||
- Dégâts non létaux
|
||||
- Dégâts létaux
|
||||
- Psyché actuelle
|
||||
|
||||
**Raison:**
|
||||
- Facilite l'ajustement rapide en combat
|
||||
|
||||
### 6. Terminologie
|
||||
Changé "Courante" → "Actuelle" pour la psyché
|
||||
|
||||
## PARTIE 2 : ONGLET COMBAT
|
||||
|
||||
### 7. Valeurs de Combat - Grille 2x2 avec Champs Bonus
|
||||
**Layout:**
|
||||
```
|
||||
┌──────────────────────────────┬──────────────────────────────┐
|
||||
│ Initiative 12 [+2] = 14 │ Défense 15 [+2] = 17 │
|
||||
├──────────────────────────────┼──────────────────────────────┤
|
||||
│ Vitesse 8 [+0] = 8 │ Bonus Dég. +3 [+1] = +4 │
|
||||
└──────────────────────────────┴──────────────────────────────┘
|
||||
```
|
||||
|
||||
**Code:**
|
||||
```handlebars
|
||||
<div class="grid grid-2col">
|
||||
<div class="combat-stat-row">
|
||||
<label class="stat-label">Initiative</label>
|
||||
<div class="stat-values">
|
||||
<span class="stat-base">{{combat.initBase}}</span>
|
||||
<input type="number" class="input-numeric-short" name="system.combat.initbonus"
|
||||
value="{{system.combat.initbonus}}" data-tooltip="Bonus" />
|
||||
<span class="stat-total">= {{combat.initTotal}}</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 3 autres similaires -->
|
||||
</div>
|
||||
```
|
||||
|
||||
**Raison:**
|
||||
- **DIFFÉRENCE IMPORTANTE AVEC PERSONNAGE**: Créatures ont besoin des champs bonus éditables
|
||||
- **Grille 2x2**: Compacte mais lisible, 2 valeurs par ligne
|
||||
- Format: Nom | Base | [Bonus] | = Total
|
||||
|
||||
### 8. Compétences avec Boutons de Roll et Dropdown Niveau
|
||||
**Avant:**
|
||||
```handlebars
|
||||
<span class="item-niveau">Niveau: {{skill.system.niveau}}</span>
|
||||
```
|
||||
|
||||
**Après:**
|
||||
```handlebars
|
||||
<select class="status-small-label color-class-common edit-item-data competence-niveau"
|
||||
data-item-field="niveau" data-dtype="Number">
|
||||
{{selectOptions @root.config.listeNiveauSkill selected=skill.system.niveau}}
|
||||
</select>
|
||||
```
|
||||
|
||||
**Raison:**
|
||||
- **Liste déroulante pour le niveau** (0-10) au lieu de texte statique
|
||||
- Modification directe depuis la liste sans ouvrir la fiche
|
||||
- Utilise le handler `edit-item-data` existant
|
||||
- Appelle `editItemField()` pour mise à jour automatique
|
||||
- **Comportement identique** à la fiche personnage
|
||||
|
||||
**Ajouts:**
|
||||
- Boutons de roll par attribut (ADR:15, PUI:12, etc.)
|
||||
- Nom cliquable pour éditer
|
||||
- Bouton "Ajouter une compétence" en bas
|
||||
|
||||
### 9. Armes avec Format Moderne
|
||||
**Avant:**
|
||||
```handlebars
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-name-label-header">Armes</span>
|
||||
<span>Attaque</span> <span>Défense</span> <span>Dégâts</span>
|
||||
</li>
|
||||
```
|
||||
|
||||
**Après:**
|
||||
```handlebars
|
||||
<span class="weapon-stats">
|
||||
<span class="stat-offensif" data-tooltip="Attaque">
|
||||
<i class="fas fa-crosshairs"></i> {{arme.system.totalOffensif}}
|
||||
</span>
|
||||
{{#if arme.system.isdefense}}
|
||||
<span class="stat-defensif" data-tooltip="Défense">
|
||||
<i class="fas fa-shield"></i> {{arme.system.totalDefensif}}
|
||||
</span>
|
||||
{{/if}}
|
||||
</span>
|
||||
<button class="button-sheet-roll" data-action="rollArmeOffensif">
|
||||
<i class="fas fa-dice-d20"></i>
|
||||
</button>
|
||||
<button class="button-sheet-roll" data-action="rollArmeDegats">
|
||||
<i class="fas fa-burst"></i>
|
||||
</button>
|
||||
```
|
||||
|
||||
**Raison:**
|
||||
- Stats avec icônes visuelles (🎯 crosshairs, 🛡️ shield)
|
||||
- Boutons avec icônes au lieu de texte
|
||||
- Suppression du header colonnes
|
||||
- Nom cliquable pour éditer
|
||||
- Bouton "Ajouter une arme" en bas
|
||||
|
||||
### 10. Capacités
|
||||
**Ajouts:**
|
||||
- Nom cliquable pour éditer
|
||||
- Bouton "Ajouter une capacité" en bas
|
||||
|
||||
## Fichiers Modifiés
|
||||
|
||||
### templates/actor-creature-sheet.hbs
|
||||
- **Lignes 26-37**: Attributs avec dropdown et rollable links
|
||||
- **Lignes 39-110**: Santé et Psyché avec boutons +/-
|
||||
- **Lignes 107-146**: Valeurs combat en grille 2x2 avec inputs bonus
|
||||
- **Lignes 148-189**: Compétences avec dropdown niveau et boutons de roll
|
||||
- **Lignes 191-243**: Armes au format moderne avec icônes
|
||||
- **Lignes 245-261**: Capacités avec nom cliquable
|
||||
- **Total**: ~140 lignes modifiées/ajoutées
|
||||
|
||||
### less/actor-styles.less
|
||||
- **Lignes 279-331**: Nouveaux styles pour `.combat-stats` (grille 2x2 créatures)
|
||||
- **Total**: 52 lignes ajoutées
|
||||
|
||||
## Styles CSS Ajoutés
|
||||
|
||||
```less
|
||||
.combat-stats {
|
||||
margin-bottom: 1rem;
|
||||
|
||||
.grid-2col {
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
.combat-stat-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border: 1px solid #6a0606;
|
||||
border-radius: 3px;
|
||||
padding: 0.4rem 0.6rem;
|
||||
gap: 0.5rem;
|
||||
|
||||
.stat-label {
|
||||
font-weight: bold;
|
||||
font-size: 0.85rem;
|
||||
min-width: 90px;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
|
||||
.stat-values {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.3rem;
|
||||
flex: 1;
|
||||
|
||||
.stat-base { font-weight: bold; min-width: 30px; text-align: center; }
|
||||
.input-numeric-short { width: 50px; text-align: center; padding: 0.2rem; }
|
||||
.stat-total { font-weight: bold; color: #6a0606; min-width: 40px; }
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Actions Utilisées
|
||||
|
||||
Toutes réutilisées depuis `base-actor-sheet.mjs`:
|
||||
- `rollAttribut` - Jets d'attributs
|
||||
- `incDecSante` - Boutons +/- santé/psyché
|
||||
- `rollCompetence` - Jets de compétence
|
||||
- `rollArmeOffensif` / `rollArmeDegats` - Jets d'arme
|
||||
- `createItem` / `editItem` / `deleteItem` - Gestion items
|
||||
|
||||
Handler spécial:
|
||||
- `edit-item-data` - Modification dropdown niveau compétence
|
||||
- Appelle `editItemField(itemId, itemType, itemField, dataType, value)` dans wasteland-actor.js
|
||||
|
||||
## Bénéfices
|
||||
|
||||
### Onglet Attributs
|
||||
1. **Cohérence**: Même interface que fiche personnage
|
||||
2. **Facilité**: Boutons +/- pour ajustements rapides
|
||||
3. **Prévention d'erreurs**: Dropdowns empêchent valeurs invalides
|
||||
4. **Ergonomie**: Attributs cliquables pour jets rapides
|
||||
|
||||
### Onglet Combat
|
||||
1. **Layout 2x2**: Valeurs de combat compactes
|
||||
2. **Champs Bonus**: Créatures peuvent ajuster leurs stats
|
||||
3. **Dropdown Niveau**: Modification compétences sans ouvrir fiche
|
||||
4. **Jets Rapides**: Boutons directement sur compétences/armes
|
||||
5. **Interface Moderne**: Icônes et layout épuré
|
||||
|
||||
## Comparaison Avant/Après
|
||||
|
||||
| Élément | Avant | Après | Bénéfice |
|
||||
|---------|-------|-------|----------|
|
||||
| **Attributs** | Input number | Select dropdown (0-35) + rollable | Prévention erreurs + jets rapides |
|
||||
| **Santé/Psyché** | Input seul | Input + boutons -/+ | Ajustement rapide en combat |
|
||||
| **Valeurs Combat** | Liste 4 lignes verticale | Grille 2x2 Base [Bonus] = Total | Layout compact + édition |
|
||||
| **Niveau Compétence** | Texte statique | Dropdown (0-10) éditable | Modification directe |
|
||||
| **Compétences** | Nom + niveau | Dropdown + boutons roll attributs | Jets + édition rapide |
|
||||
| **Armes** | Header + colonnes texte | Stats icônes + boutons icônes | Interface moderne |
|
||||
| **Capacités** | Nom statique | Nom cliquable + bouton ajout | Édition rapide |
|
||||
|
||||
## Tests Recommandés
|
||||
|
||||
### Onglet Attributs
|
||||
1. Vérifier dropdown attributs (0-35)
|
||||
2. Cliquer sur nom d'attribut pour jet
|
||||
3. Tester boutons +/- santé/psyché
|
||||
4. Vérifier sauvegarde modifications
|
||||
|
||||
### Onglet Combat
|
||||
1. Vérifier grille 2x2 valeurs combat
|
||||
2. Modifier les champs bonus
|
||||
3. **Tester dropdown niveau compétence** (nouveau)
|
||||
4. Tester boutons roll compétences
|
||||
5. Cliquer boutons attaque/dégâts armes
|
||||
6. Vérifier tooltips
|
||||
7. Tester ajout compétence/arme/capacité
|
||||
8. Cliquer noms pour éditer
|
||||
|
||||
## Notes Importantes
|
||||
|
||||
- **Aucune modification JavaScript nécessaire** (actions/handlers déjà existants)
|
||||
- **Modification CSS mineure** (52 lignes pour grille combat)
|
||||
- **Changements principalement template Handlebars**
|
||||
- **Compatible AppV2**
|
||||
- **Différence clé avec personnage**: Créatures ont champs bonus combat éditables
|
||||
- **Nouveau**: Dropdown niveau compétence avec modification directe (handler `edit-item-data`)
|
||||
|
||||
## Impact Visuel
|
||||
|
||||
```
|
||||
CRÉATURE (Valeurs Combat) - Grille 2x2:
|
||||
┌──────────────────────────────┬──────────────────────────────┐
|
||||
│ Initiative 12 [+2] = 14 │ Défense 15 [+2] = 17 │
|
||||
├──────────────────────────────┼──────────────────────────────┤
|
||||
│ Vitesse 8 [+0] = 8 │ Bonus Dég. +3 [+1] = +4 │
|
||||
└──────────────────────────────┴──────────────────────────────┘
|
||||
|
||||
CRÉATURE (Compétences):
|
||||
[🖼️] Mouvements [Dropdown 0-10: 3]
|
||||
[ADR : 15] [PUI : 12] [✏️] [🗑️]
|
||||
|
||||
PERSONNAGE (Compétences):
|
||||
[🖼️] Mouvements [Dropdown 0-10: 3]
|
||||
[ADR : 15] [PUI : 12] [✏️] [🗑️]
|
||||
Prédilections: Escalade, Course
|
||||
```
|
||||
|
||||
Total: ~140 lignes template + 52 lignes CSS = 192 lignes modifiées
|
||||
@@ -1,180 +0,0 @@
|
||||
# Workflow de Release Gitea pour Wasteland
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
Ce workflow automatise la création de releases pour le système Wasteland dans Foundry VTT via Gitea Actions.
|
||||
|
||||
## Déclenchement
|
||||
|
||||
Le workflow se déclenche automatiquement lors de la **publication d'une release** sur Gitea :
|
||||
|
||||
```yaml
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
```
|
||||
|
||||
## Étapes du Workflow
|
||||
|
||||
### 1. Clone du Repository
|
||||
- Clone le repository Wasteland
|
||||
- Utilise `RouxAntoine/checkout@v3.5.4`
|
||||
|
||||
### 2. Extraction du Numéro de Version
|
||||
- Extrait la version depuis le tag de release
|
||||
- Exemple: tag `v1.2.3` → version `1.2.3`
|
||||
- Utilise `battila7/get-version-action@v2`
|
||||
|
||||
### 3. Substitution des URLs dans system.json
|
||||
Met à jour automatiquement le `system.json` avec :
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "1.2.3",
|
||||
"url": "https://www.uberwald.me/gitea/public/fvtt-wasteland",
|
||||
"manifest": "https://www.uberwald.me/gitea/public/fvtt-wasteland/releases/download/latest/system.json",
|
||||
"download": "https://www.uberwald.me/gitea/public/fvtt-wasteland/releases/download/v1.2.3/fvtt-wasteland.zip"
|
||||
}
|
||||
```
|
||||
|
||||
### 4. Création du ZIP
|
||||
Crée `fvtt-wasteland.zip` contenant :
|
||||
- `system.json` (mis à jour)
|
||||
- `README.md`
|
||||
- `changelog.md`
|
||||
- `assets/`
|
||||
- `lang/`
|
||||
- `modules/`
|
||||
- `packs/`
|
||||
- `styles/`
|
||||
- `templates/`
|
||||
- `template.json`
|
||||
|
||||
**Note:** Exclut `node_modules/`, `less/`, `gulpfile.js`, etc.
|
||||
|
||||
### 5. Upload vers Gitea
|
||||
- Upload du ZIP et du system.json vers la release
|
||||
- Utilise le secret `ALLOW_PUSH_RELEASE`
|
||||
|
||||
### 6. Publication sur Foundry VTT
|
||||
- Notifie le site officiel Foundry VTT de la nouvelle version
|
||||
- Utilise le secret `FOUNDRYVTT_RELEASE_TOKEN`
|
||||
- Compatibilité: Foundry V13
|
||||
|
||||
## Secrets Requis
|
||||
|
||||
Dans les paramètres du repository Gitea, configurer :
|
||||
|
||||
1. **`ALLOW_PUSH_RELEASE`**
|
||||
- Token Gitea avec droits d'écriture sur releases
|
||||
- Généré dans : Paramètres utilisateur → Applications → Tokens
|
||||
|
||||
2. **`FOUNDRYVTT_RELEASE_TOKEN`**
|
||||
- Token du Foundry Package Creator
|
||||
- Obtenu sur : https://foundryvtt.com/packages/edit/fvtt-wasteland
|
||||
|
||||
## Comment Créer une Release
|
||||
|
||||
### Méthode 1: Via l'Interface Gitea
|
||||
|
||||
1. Aller sur `https://www.uberwald.me/gitea/public/fvtt-wasteland`
|
||||
2. Cliquer sur "Releases"
|
||||
3. Cliquer sur "New Release"
|
||||
4. Remplir :
|
||||
- **Tag version**: `v1.2.3` (respecter le format `vX.Y.Z`)
|
||||
- **Release title**: `Version 1.2.3 - Description courte`
|
||||
- **Description**: Changelog détaillé
|
||||
5. Cocher "This is a pre-release" si applicable
|
||||
6. Cliquer sur "Publish Release"
|
||||
|
||||
### Méthode 2: Via Git CLI
|
||||
|
||||
```bash
|
||||
# Créer et pousser le tag
|
||||
git tag -a v1.2.3 -m "Version 1.2.3 - Description"
|
||||
git push origin v1.2.3
|
||||
|
||||
# Puis créer la release via l'interface Gitea
|
||||
```
|
||||
|
||||
## Déroulement Automatique
|
||||
|
||||
1. ✅ Détection de la publication de release
|
||||
2. ✅ Clone du repository
|
||||
3. ✅ Extraction de la version depuis le tag
|
||||
4. ✅ Mise à jour du system.json
|
||||
5. ✅ Création du ZIP
|
||||
6. ✅ Upload sur Gitea
|
||||
7. ✅ Publication sur Foundry VTT
|
||||
|
||||
## Vérification
|
||||
|
||||
Après publication, vérifier :
|
||||
|
||||
1. **Sur Gitea** : `https://www.uberwald.me/gitea/public/fvtt-wasteland/releases`
|
||||
- Le ZIP `fvtt-wasteland.zip` est disponible
|
||||
- Le `system.json` est disponible
|
||||
- Les URLs sont correctes
|
||||
|
||||
2. **Sur Foundry VTT** : https://foundryvtt.com/packages/fvtt-wasteland
|
||||
- La nouvelle version apparaît
|
||||
- Le manifest pointe vers le bon fichier
|
||||
|
||||
3. **Dans Foundry** :
|
||||
- Installer/Mettre à jour le système
|
||||
- Vérifier que tout fonctionne
|
||||
|
||||
## URLs Importantes
|
||||
|
||||
- **Repository**: https://www.uberwald.me/gitea/public/fvtt-wasteland
|
||||
- **Releases**: https://www.uberwald.me/gitea/public/fvtt-wasteland/releases
|
||||
- **Manifest (latest)**: https://www.uberwald.me/gitea/public/fvtt-wasteland/releases/download/latest/system.json
|
||||
- **Foundry Package**: https://foundryvtt.com/packages/fvtt-wasteland
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Le workflow ne se déclenche pas
|
||||
- Vérifier que la release est bien **published** (pas draft)
|
||||
- Vérifier que le fichier `.gitea/workflows/release.yaml` existe
|
||||
|
||||
### Erreur lors de la création du ZIP
|
||||
- Vérifier que tous les dossiers existent
|
||||
- Vérifier les permissions
|
||||
|
||||
### Erreur lors de la publication Foundry
|
||||
- Vérifier que `FOUNDRYVTT_RELEASE_TOKEN` est configuré
|
||||
- Vérifier que l'ID du package est correct (`fvtt-wasteland`)
|
||||
|
||||
### Les URLs ne sont pas mises à jour
|
||||
- Vérifier le format du tag (doit être `vX.Y.Z`)
|
||||
- Vérifier que `microsoft/variable-substitution` fonctionne
|
||||
|
||||
## Exemple de Changelog
|
||||
|
||||
Pour `v1.2.3` :
|
||||
|
||||
```markdown
|
||||
# Version 1.2.3 - Améliorations Fiches Créatures
|
||||
|
||||
## Nouvelles Fonctionnalités
|
||||
- Ajout de dropdowns pour niveaux de compétences créatures
|
||||
- Message de bienvenue stylé
|
||||
- Grille 2x2 pour valeurs de combat
|
||||
|
||||
## Corrections
|
||||
- Fix dialog render error
|
||||
- Fix attribute selection
|
||||
- Fix predilection reroll
|
||||
|
||||
## Améliorations
|
||||
- Interface créature alignée avec personnage
|
||||
- Styles cohérents pour tous les messages
|
||||
- Documentation complète
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- Le workflow utilise Ubuntu latest
|
||||
- Go 1.20.1+ est installé pour l'action de release
|
||||
- Le système est compatible avec Foundry V13
|
||||
- Les packs sont inclus dans le ZIP (format NeDB/LevelDB)
|
||||
Reference in New Issue
Block a user