Ajoute la fonctionnalite quiz autonome/plein ecran a la boite a quiz
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:
co-authored by
Claude Sonnet 5
parent
559331f9cf
commit
7db4803b93
@@ -11,6 +11,7 @@ from ..rendering.collision_settings import resolve_collision_settings
|
||||
from ..rendering.collision_rules import resolve_collision_rules
|
||||
from ..rendering.screen_triggers import resolve_screen_triggers
|
||||
from ..rendering.dialogue_box_style import resolve_dialogue_box_style
|
||||
from ..rendering.quiz_box_config import resolve_quiz_box_config
|
||||
from ..rendering.trigger_graph import list_completable_dialogue_ids
|
||||
from ..scenes.list_scene_objects import list_scene_objects
|
||||
from ..scenes.render_scene_object import render_scene_object
|
||||
@@ -62,6 +63,13 @@ def full_game_payload(slug, player_id=db.PLAYER_SHARED):
|
||||
# collision, ni cible/source de règle — juste leur
|
||||
# style, lu par static/js/play/dialogue-box-controller.js.
|
||||
o["dialogue_box_style"] = resolve_dialogue_box_style(o)
|
||||
if o["kind"] == "quiz_box":
|
||||
# Plein écran/minuteur/modèle (voir screens/rendering/
|
||||
# quiz_box_config.py) — même convention que
|
||||
# dialogue_box_style ci-dessus (cohérence de contrat),
|
||||
# même si le JS runtime lit en pratique les data-*
|
||||
# déjà posés sur rendered_html.
|
||||
o["quiz_config"] = resolve_quiz_box_config(o)
|
||||
continue
|
||||
# Boîte de collision (voir static/js/play/conditions.js::
|
||||
# elementsOverlap) : posée sur TOUT objet de scène, pas
|
||||
@@ -83,6 +91,19 @@ def full_game_payload(slug, player_id=db.PLAYER_SHARED):
|
||||
# colonne brute _screen_triggers (laissée telle quelle par ailleurs
|
||||
# dans `s`, comme le reste des colonnes _screens).
|
||||
s["screen_triggers"] = resolve_screen_triggers(s)
|
||||
# "La notion de caméra disparaît" quand un quiz plein écran existe
|
||||
# sur cet écran (demande explicite) — pas seulement le widget lui-
|
||||
# même : ".playScreen.playScene" (templates/play.html), dont la
|
||||
# taille EST la "caméra" (scene_width/scene_height) et qui reste
|
||||
# centré via un `transform`, casse `position:fixed` pour tout
|
||||
# descendant (voir static/js/play/dialogue-box-controller.js::
|
||||
# forgeEscapeCameraForFullscreen). Exposé ici pour que play.html
|
||||
# rende directement CET écran en plein viewport, sans transform ni
|
||||
# taille caméra — le réglage "Caméra (px)" ne s'applique alors plus
|
||||
# du tout tant que ce quiz reste plein écran.
|
||||
s["any_quiz_box_fullscreen"] = any(
|
||||
o["kind"] == "quiz_box" and o.get("quiz_config", {}).get("fullscreen") for o in objects
|
||||
)
|
||||
payload_screens.append({**s, "elements": objects})
|
||||
|
||||
# Le graphe de logique et les animations sont, eux, lus pour TOUS les
|
||||
|
||||
Reference in New Issue
Block a user