# Fonctionnalités par écran — Minuteur Dragodinde --- ## 1. Shell principal (App) ### Header - Bouton hamburger (☰) pour ouvrir/fermer la sidebar - Logo "⚔ MINUTEUR DRAGODINDE" - Sous-titre "Dofus 3 · Gestion multi-enclos en temps réel · vX.X.X" - Version injectée dynamiquement via Electron API - Badge "DEV" en mode développement ### Barre d'onglets - Onglet Dashboard (📊) - Un onglet par enclos : - Icône 🐉 + nom de l'enclos - Dot animé : vert pulsant si timer en cours, gris si inactif - Bouton supprimer (✕), visible si plus d'1 enclos - Drag-and-drop pour réordonner les onglets - Bouton "+ Enclos" (désactivé si max atteint) ### Bannière de mise à jour - États : disponible → téléchargement (barre de progression %) → prête → erreur - Bouton "Installer et redémarrer" - Bouton fermer (✕) sur erreur ### Zoom clavier - Ctrl + (+) : zoom avant - Ctrl + (-) : zoom arrière - Ctrl + 0 : reset 100% --- ## 2. Sidebar — Navigation latérale - **Dashboard** (📊) - **Section "Enclos"** : liste dynamique de chaque enclos - Icône 🐉 + nom + dot coloré (vert=running, gris=idle) - **Section "Outils"** : - Accouplement (💑) - Réappro (🧬) - Inventaire (📦) - Workflows (📋) - **Paramètres** (⚙) - Indicateur visuel de la vue active - Fermeture auto au clic sur l'overlay --- ## 3. Dashboard — Vue d'ensemble ### Cartes des enclos Pour chaque enclos : - Nom de l'enclos - Dot animé + statut textuel ("En cours" / "Pause" / "Inactif") - Liste des jauges actives (badges colorés avec icônes) - Nombre de dragodindes + terminées (ex: "5 DD · 3/5 ✅") - Temps restant (countdown live) ou "✅ Terminé !" - Temps écoulé (live) - Bouton "→ Gérer cet enclos" (navigation) ### Statistiques globales - **KPI** : - Bébés au total - Dragodindes actives - Couples accouplés - Taux de réussite (%) - Races obtenues - **Histogramme des races** : barres horizontales triées par quantité, colorées par race - **Bouton "Réinitialiser"** : efface stats et accouplements ### Temps réel - Countdowns et temps écoulés mis à jour en continu - Dots animés sur les enclos en cours --- ## 4. Enclos — Vue timer principale ### En-tête - **Nom de l'enclos** : input éditable (focus vide, blur sauvegarde, Escape annule, Enter valide) - **Bouton "🗑 Vider l'enclos"** : supprime toutes les DD et reset ### Carte Jauges (max 2 actives) - **6 boutons toggle** : Baffeur (➖), Caresseur (➕), Foudroyeur (⚡), Abreuvoir (💧), Dragofesse (❤), Mangeoire (🍖) - État actif : bordure colorée - Verrouillé si timer en cours - **Exclusion mutuelle** baffeur ↔ caresseur (l'un bloque l'autre) - **Par jauge active** : - Icône + nom + badge Tier ("Tier X · ±Y/tick") - Input niveau (0–100 000, step 1000) - Avant timer : modifie le niveau - Pendant timer : recharge la jauge (style visuel distinct) - Barre de progression (% de remplissage) - Info : "Jauge : {niveau} · Vide en {durée}" ### Barre timer - **Bouton** : "▶ Démarrer" / "⏸ Pause" / "▶ Reprendre" - **Temps écoulé** (gauche) : HH:MM:SS live - **Alarme dans** (droite) : countdown global ou "✅" ou "--:--:--" ### Bannière de fin - "✅ Session terminée !" (visible quand toutes les cibles atteintes) - Bouton "🔄 Nouvelle fournée" (reset timer, conserve les niveaux de jauges) ### Section Dragodindes - Compteur "X/10" - Bouton "+ Ajouter une Dragodinde" (désactivé si 10 atteint) - Grille de cartes DD (drag-and-drop pour réordonner) --- ## 5. Carte Dragodinde (sous-composant d'Enclos) ### En-tête - Poignée de drag (⠿) - Nom éditable (même comportement focus/blur) - Bouton supprimer (✕) ### Pilules de stats (5) | Stat | Icône | Plage | Couleur | |------|-------|-------|---------| | Sérénité | 😊 | -5000 à +5000 | Violet | | Endurance | ⚡ | 0 à 20 000 | Jaune | | Maturité | 💧 | 0 à 20 000 | Cyan | | Amour | ❤️ | 0 à 20 000 | Rouge | | XP (niveau) | ⭐ | 1 à 200 | Orange | - Input éditable par pilule (focus/blur) - Mise à jour live pendant le timer - Effet lumineux (glow) quand la stat atteint un cap - Animation delta (+X / -X) qui pop à chaque tick de 10s ### Cible sérénité (😊) - Input numérique (bornes selon jauge active : négatif si baffeur, positif si caresseur) - Bouton effacer (✕) - ETA affiché : "~Xm XXs" ou "✅" ou "➕/➖" (si jauge nécessaire non active) - Placeholder dynamique ("-5000 à 0" ou "0 à 5000") ### Cible niveau (⭐) - Input numérique (1–200) - Bouton effacer (✕) - ETA affiché ### Blocs jauges actives **Pour chaque jauge active :** **Mangeoire (XP) — bloc spécial :** - En-tête : icône + "XP / NIVEAU" - ETA niveau 200 : "→ NIV. 200 : ~Xj Xh" - Barre de progression vers 200 + pourcentage - Valeur live (NIV. X), delta (+X xp), countdown **Autres jauges :** - En-tête : icône + nom (coloré) - Valeur live, delta (pop animé), countdown - Barre de progression vers la cible ### Badge "✓ TERMINÉ" - Affiché quand toutes les jauges actives de cette DD ont atteint leur cible --- ## 6. Accouplement — Enregistrement de croisements ### Étape 1 : Sélection du parent 1 - Barre de recherche (🔍) avec bouton effacer - Filtres par génération (onglets colorés : Toutes, Gen 1–10) - Grille de cartes race (image, nom, badge gen) - Message vide si aucun résultat ### Étape 2 : Sélection du parent 2 - Bouton "← Retour" - Carte du parent 1 affichée (non cliquable) - Label "Choisir le partenaire :" - Grille des partenaires compatibles uniquement - Chaque carte montre "→ {bébé}" en dessous ### Étape 3 : Résultat - Bouton "← Retour" - Affichage en ligne : Parent 1 + Parent 2 = Bébé (cartes avec images et badges gen) - Input "Couples" (nombre) - Input "Bébés obtenus" (nombre) - Bouton "Enregistrer" → commande `register-accouplement` --- ## 7. Réapprovisionnement — Calcul de plan d'élevage ### Étape 1 : Sélection de la race cible - Barre de recherche (🔍) avec bouton effacer - Filtres par génération (Gen 2–10 uniquement) - Grille de cartes race (gen 2+ seulement) ### Étape 2 : Plan d'élevage - Bouton "← Retour" - Carte cible + input quantité (mise à jour live du plan) **Matériaux (Gen 1) :** - Mini-cartes par race de base : image, nom, badge gen, ♂X ♀Y **Étapes (Gen 2+) :** Par génération, pour chaque croisement : - En-tête "Étape X — Gen Y" (coloré) - Affichage : Parent A + Parent B → Bébé (mini-cartes) - Input "Reproducteurs" (nombre, par croisement) - Bouton inversion ♂/♀ (swap la direction de reproduction) **Actions :** - Bouton "Sauvegarder le workflow" --- ## 8. Inventaire — Gestion du stock & simulation ### Saisie du stock - Résumé : "X DD en stock (Y races)" - Bouton "Réinitialiser" (remet tout à 0) - Bouton "Calculer les bébés" (lance la simulation) - Barre de recherche (🔍) - Filtres par génération (Gen 1–10) - Grille de cartes race : - Image, nom, badge gen - Input ♂ (mâles) + input ♀ (femelles) - Mise à jour du résumé en temps réel pendant la saisie - Persistance automatique du stock entre les changements d'écran ### Résultats de simulation - En-tête global : "{N} bébés possibles sur {G} génération(s)" - Bouton "Sauvegarder le workflow" - Par génération : - Badge gen + total bébés - Par croisement : Parent A (♂X ♀Y) + Parent B (♂X ♀Y) → Bébé (×Z) - Section "DD restantes (non utilisées)" : mini-cartes du stock inutilisé ### Algorithme - Allocation proportionnelle (pas glouton) : chaque parent est réparti équitablement entre les croisements qui l'utilisent - Cascade multi-générations (Gen 2 → Gen 10) --- ## 9. Workflows — Suivi des plans d'élevage ### Vue liste - Titre "Plans d'élevage" - Barre de recherche (🔍) - Filtres par génération (uniquement les gens qui ont des workflows) - Message vide si aucun workflow **Par carte workflow :** - Image de la race cible + badge gen - Nom du workflow (tronqué) - "Cible × Quantité — Date de création" - Barre de progression globale (colorée) + "X/Y — Z%" - Bouton supprimer (✕) - Clic → vue détail ### Vue détail - Bouton "← Retour" - **Carte d'en-tête** : - Image + badge gen - Nom, cible × quantité, date - Barre de progression globale + pourcentage **Section Matériaux de base (si présents) :** - Par matériau : - Nom de la race (coloré) - Mini barre de progression - Input de progression (nombre) - Label "X / Y" **Sections par génération :** - En-tête "Génération X" (coloré) - Par croisement : - Nom race (coloré) - "ParentA × ParentB — X couples, repro ×Y" - Input de progression (nombre) - Label "X / Y" - Mini barre de progression ### Temps réel - La barre de progression globale se met à jour pendant la saisie - Les barres individuelles se mettent à jour en direct --- ## 10. Paramètres ### Carte 🔊 Son d'alarme - Select : Arpège, Pulsation, Fanfare, Cloche - Bouton ▶ (test du son sélectionné, joue directement via WebAudio) ### Carte 🔔 Notifications - **Bouton Notifs PC** : "🔔 Notifs PC activées" / "🔕 Notifs PC désactivées" (toggle) - **Bouton Mobile** : "📱 Mobile activé" / "📱 Activer mobile" (ouvre la modal) ### Modal ntfy (notifications mobiles) **Si non activé :** - Texte explicatif - Bouton "🔔 Activer les notifications mobiles" (génère un topic automatique) **Si activé :** - ① QR code pour télécharger l'app ntfy (Play Store / App Store) - ② QR code pour s'abonner automatiquement aux notifications - Bouton "🔔 Tester" (envoie une notification de test) - Bouton "✕ Désactiver" (supprime le topic) - Bouton "Fermer" --- ## Comportements transversaux ### Focus/blur des inputs (tous les écrans) - Focus : vide le champ, sauvegarde la valeur précédente - Blur sans valeur : restaure la valeur précédente - Blur avec valeur : applique et sauvegarde - Escape : annule et restaure - Enter : valide (blur) ### Système de timer - Snapshot des jauges et stats au démarrage - Calcul par segments (recharges en cours de session) - Gel au cap absolu de chaque stat - Alarme unique quand toutes les cibles sont atteintes (son + notification PC + ntfy mobile) - Temps réel : requestAnimationFrame continu ### Persistance - Sauvegarde automatique après chaque mutation d'état - LocalStorage (web) ou fichier JSON (Electron userData) - Isolation des données DEV / production ### Drag-and-drop - Onglets enclos : réordonnancement par glisser-déposer - Cartes dragodindes : réordonnancement dans le même enclos