// ---------- Affichage des écrans, timeline d'animation ---------- // Extrait de templates/play.html (voir plan de modularisation — un // fichier = une responsabilité, aussi pour le JS) : navigation entre // écrans, proportion de la zone de jeu, lecture des clips d'animation // posés dans l'éditeur ("Timeline d'animation"). // Élément à onglets (voir render_onglets.py) : bascule le panneau visible // sans aller-retour serveur — même fonction que dans screen_edit.html, // pour un comportement identique éditeur/jeu. function forgeShowTab(btn) { var groupId = btn.dataset.tabBtn; var targetId = btn.dataset.tabTarget; document.querySelectorAll('[data-tab-btn="' + groupId + '"]').forEach(function (b) { b.classList.toggle('is-active', b === btn); }); document.querySelectorAll('[data-tab-group="' + groupId + '"]').forEach(function (p) { p.style.display = (p.id === targetId) ? '' : 'none'; }); } function showScreen(id) { // Déjà l'écran affiché : rien à refaire. Sans ce garde-fou, l'action // "Ouvrir la ligne cliquée" (voir plus bas) — pensée pour révéler un // détail SUR LE MÊME écran qu'un Répéteur, en la combinant avec une // action "Modifier un élément → Visibilité" sur le même clic — rejouait // à chaque clic sur une ligne les déclencheurs "À l'affichage de // l'écran" et relançait la timeline d'animation depuis le début, ce qui // donnait l'impression trompeuse d'un rechargement de page (éléments // qui rejouent leur animation d'entrée, visibilité qu'un déclencheur // "affichage" repasse à son état initial en écrasant l'action "Rendre // visible" du même clic...). Aller vers un écran DIFFÉRENT continue de // tout rejouer normalement, comme un vrai premier affichage. if (id === window.currentScreenId) return; document.querySelectorAll('.playScreen').forEach(s => s.style.display = 'none'); const el = document.querySelector('.playScreen[data-screen-id="' + id + '"]'); if (el) { el.style.display = 'block'; window.currentScreenId = id; applyScreenAspect(el.dataset.aspect || '9/16'); } runScreenShowTriggers(id); runAnimationTimeline(id); } // Voir le commentaire sur #playFrame dans le