Ajoute la fonctionnalite quiz autonome/plein ecran a la boite a quiz
Build and deploy / test-python (push) Successful in 12m10s
Build and deploy / test-js (push) Successful in 1m27s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped

Introduit la double categorie de modeles (boite de dialogue / page de
quiz plein ecran) avec plein ecran, minuteur, score integre et ecran de
resultat pour les modeles page ; ajoute les modeles "Manga" (boite et
page) et "Classique" (page), pilotables aussi par l'assistant IA Ruby.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
william
2026-09-13 15:07:23 +02:00
co-authored by Claude Sonnet 5
parent 559331f9cf
commit 7db4803b93
26 changed files with 3173 additions and 60 deletions
+14 -1
View File
@@ -42,6 +42,18 @@
#playFrame.sceneMode{ width:100vw; height:100vh; }
.playScreen{ position:absolute; inset:0; display:none; }
.playScreen.playScene{ inset:auto; top:50%; left:50%; transform:translate(-50%, -50%); background:#1a1d24; }
/* "La notion de caméra disparaît" quand un quiz plein écran existe sur
cet écran (demande explicite, voir screens/payload/full_game_payload.py
::any_quiz_box_fullscreen) — le réglage "Caméra (px)" (scene_width/
scene_height, qui donne à .playScene ci-dessus sa taille ET son
`transform` de centrage) ne s'applique alors plus DU TOUT : cet écran
devient lui-même plein viewport, sans transform (qui casserait
position:fixed pour tout descendant, voir dialogue-box-controller.js
::forgeEscapeCameraForFullscreen — plus nécessaire ici puisque
.playScene n'a elle-même plus de transform dans ce cas). */
.playScreen.playScene.playScene--quizFullscreen{
position:fixed; inset:0; top:0; left:0; width:100vw; height:100vh; transform:none;
}
.playElement{
position:absolute; box-sizing:border-box; font-family:system-ui,sans-serif;
}
@@ -89,7 +101,7 @@
<!-- Un seul moteur d'écran désormais (jeu_2d) : objets déjà entièrement
positionnés en pixels absolus par render_scene_object.py (voir
screens/scenes/) — juste le HTML tel quel. -->
<div class="playScreen playScene" data-screen-id="{{ s.id }}" data-kind="jeu_2d" style="width:{{ s.scene_width }}px; height:{{ s.scene_height }}px;">
<div class="playScreen playScene {{ 'playScene--quizFullscreen' if s.any_quiz_box_fullscreen else '' }}" data-screen-id="{{ s.id }}" data-kind="jeu_2d" style="{{ '' if s.any_quiz_box_fullscreen else 'width:' + s.scene_width|string + 'px; height:' + s.scene_height|string + 'px;' }}">
<!-- .sceneWorld : le "monde" (voir static/style.css et
static/js/play/personnage-controller.js) — taille par défaut 100%
(identique au viewport ci-dessus), agrandie/décalée en JS
@@ -180,6 +192,7 @@
<script src="{{ asset_url('js/play/actions.js') }}"></script>
<script src="{{ asset_url('js/play/triggers.js') }}"></script>
<script src="{{ asset_url('js/play/personnage-controller.js') }}"></script>
<script src="{{ asset_url('js/play/quiz-box-templates.js') }}"></script>
<script src="{{ asset_url('js/play/dialogue-box-controller.js') }}"></script>
<script src="{{ asset_url('js/play/video-overlay.js') }}"></script>
<script src="{{ asset_url('js/play/collision-rules-controller.js') }}"></script>