Inclut les écrans-modèles dans gameData.flows/animations
Cause du "la logique posée sur le modèle ne s'applique pas dans la scène" (persistant malgré les 2 commits précédents) : full_game_payload() appelait list_screens(slug) SANS include_templates=True — un écran-modèle (ex. "Modèle : mail content") n'apparaissait donc jamais dans gameData.flows ni gameData.animations côté client. findTriggerNode() cherche pourtant bien un déclencheur dans TOUTES les clés de gameData.flows — mais si l'écran-modèle n'y a même pas d'entrée, il n'y a rien à trouver, quelle que soit la justesse de cette recherche. Fix : les nœuds/fils de logique et les clips d'animation sont désormais lus pour TOUS les écrans (list_screens(slug, include_templates=True)), dans une boucle séparée de celle qui construit payload_screens — celle- ci continue de ne lister que les vrais écrans, pour ne jamais rendre un écran-modèle comme un <div class="playScreen"> à part entière (il n'est jamais affiché tel quel, seulement rechargé en direct à l'intérieur d'un élément qui l'utilise). Vérifié sur les vraies données du jeu de test : gameData.flows contient désormais bien l'écran 3 (le modèle "mail content"), avec son déclencheur "Au survol" et son action "Rendre visible" ; payload_screens ne contient toujours que l'écran réel (1). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
e653f95d37
commit
ffedb16d8a
@@ -24,6 +24,21 @@ def full_game_payload(slug):
|
||||
for s in screens_:
|
||||
elements = list_elements(slug, s["id"], enforce_visibility=True)
|
||||
payload_screens.append({**s, "elements": elements})
|
||||
|
||||
# Le graphe de logique et les animations sont, eux, lus pour TOUS les
|
||||
# écrans, écrans-modèles compris (include_templates=True) — pas
|
||||
# seulement les "vrais" écrans ci-dessus. Un élément de jeu réutilisable
|
||||
# (ex. "mail content") peut avoir son propre déclencheur/sa propre
|
||||
# animation posée dans l'éditeur de SON écran-modèle (voir
|
||||
# screen_edit.html) : sans ses entrées ici, gameData.flows/
|
||||
# gameData.animations n'auraient jamais contenu cet écran-modèle côté
|
||||
# client, et findTriggerNode()/collectAnimationClips() (templates/
|
||||
# play.html) — pourtant déjà écrits pour les chercher — n'auraient
|
||||
# jamais rien trouvé. On ne les ajoute PAS à payload_screens : un
|
||||
# écran-modèle ne doit jamais être rendu comme un vrai <div
|
||||
# class="playScreen"> (il n'est jamais affiché tel quel, seulement
|
||||
# rechargé en direct à l'intérieur d'un élément qui l'utilise).
|
||||
for s in list_screens(slug, include_templates=True):
|
||||
flows[str(s["id"])] = {
|
||||
"nodes": list_flow_nodes(slug, s["id"]),
|
||||
"edges": list_flow_edges(slug, s["id"]),
|
||||
|
||||
Reference in New Issue
Block a user