Ajoute le positionnement absolu (pos_x/pos_y, réutilise left/top en % déjà en place) et relatif (pos_x_relatif/pos_y_relatif, ajoute un delta à la position actuelle plutôt que de l'écraser) comme nouvelles propriétés de l'action "Modifier un élément". Ajoute une nouvelle source de condition "collision" (aux côtés de "objet"/"variable") : deux éléments (cond_element_a/cond_element_b, ALTER TABLE sans contrainte FK, même patron que block_id/ trigger_custom_event_id) dont on compare les rectangles à l'écran via getBoundingClientRect() côté client (elementsOverlap(), dans conditions.js). Pas d'opérateur/valeur à choisir : le chevauchement EST directement le booléen vrai/faux du nœud — le créateur relie le port "Faux" pour "ne se touchent pas", exactement comme pour n'importe quelle autre condition (design plus simple que réinterpréter égal/différent, qui n'a pas de sens pour superieur/inferieur). delete_element.py et flow_nodes_referencing_element.py nettoient désormais aussi les nœuds de collision référençant un élément supprimé (ou l'un de ses descendants), pour rester cohérents avec le nettoyage déjà en place pour trigger_element_id/target_element_id. Combiné à la Phase 3 (minuteur récurrent) et au déplacement au clavier, ça couvre des jeux type casse-briques/Pong/ramasse-objets sans construire un vrai moteur physique (pas de vélocité/accélération/ gravité continues, cadrage volontairement limité). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
58 lines
3.1 KiB
Python
58 lines
3.1 KiB
Python
# ---------- Actions : modifier un élément ----------
|
|
|
|
ELEMENT_ACTION_PROPERTIES = [
|
|
("visibilite", "Visibilité"),
|
|
# Voir TRIGGER_EVENTS ("survol"/"fin_survol") : c'est ce qui permet à un
|
|
# créateur de reconstruire l'ancien comportement "texte affiché au
|
|
# survol" (et bien d'autres) à la main dans la Logique de la scène —
|
|
# poser "Modifier un élément → Contenu" sur un déclencheur "Au survol"
|
|
# d'un AUTRE élément. La valeur est un texte littéral (pas encore de
|
|
# binding vers un champ d'objet ici — voir applyOpenRowBindings pour le
|
|
# mécanisme équivalent, propre à "Ouvrir la ligne cliquée").
|
|
("contenu", "Contenu — texte affiché"),
|
|
("bg_color", "Couleur de fond"),
|
|
("border_color", "Couleur de bordure"),
|
|
("width", "Largeur en %"),
|
|
("height", "Hauteur en %"),
|
|
# 3.3 (Confort) — surbrillance générique dynamique : un liseré qui
|
|
# clignote autour de l'élément, pour attirer l'attention du joueur vers
|
|
# ce qu'il doit toucher ensuite (ex. un mentor qui "montre" un bouton) —
|
|
# sans avoir à poser une bordure de couleur togglée à la main. Voir
|
|
# ELEMENT_SURBRILLANCE_VALUES et applyElementProperty() dans play.html.
|
|
("surbrillance", "Surbrillance — liseré clignotant"),
|
|
# 3.5 (Confort) — verrouillage d'un élément après décision : grisé +
|
|
# ignore les clics, DISTINCT de "invisible" (qui garde sa place mais
|
|
# disparaît visuellement) — un bouton "Répondre" qui reste visible mais
|
|
# devient inerte une fois le mail traité, par exemple. Voir
|
|
# ELEMENT_DESACTIVE_VALUES et applyElementProperty() / bindClicks() dans
|
|
# play.html (pointer-events:none empêche aussi le déclencheur "Au clic"
|
|
# de se redéclencher tant que l'élément est désactivé).
|
|
("desactive", "Désactivé — grisé, ignore les clics"),
|
|
# Phase 5 (moteur) — déplacement d'élément : "absolu" fixe la position
|
|
# (en % du cadre, comme Largeur/Hauteur ci-dessus — les éléments sont
|
|
# déjà positionnés ainsi, voir filters/element_style_filter.py) ;
|
|
# "relatif" AJOUTE la valeur à la position actuelle plutôt que de
|
|
# l'écraser (voir applyElementProperty() dans static/js/play/actions.js)
|
|
# — combiné à un déclencheur clavier (Phase 3), ça permet un
|
|
# personnage/objet qui se déplace pas à pas à chaque appui de touche.
|
|
("pos_x", "Position horizontale en % (absolue)"),
|
|
("pos_y", "Position verticale en % (absolue)"),
|
|
("pos_x_relatif", "Déplacer horizontalement de... % (relatif)"),
|
|
("pos_y_relatif", "Déplacer verticalement de... % (relatif)"),
|
|
]
|
|
ELEMENT_ACTION_PROPERTY_LABELS = dict(ELEMENT_ACTION_PROPERTIES)
|
|
|
|
ELEMENT_SURBRILLANCE_VALUES = [
|
|
("on", "Activer la surbrillance"),
|
|
("off", "Désactiver la surbrillance"),
|
|
("toggle", "Basculer activée / désactivée"),
|
|
]
|
|
ELEMENT_SURBRILLANCE_LABELS = dict(ELEMENT_SURBRILLANCE_VALUES)
|
|
|
|
ELEMENT_DESACTIVE_VALUES = [
|
|
("on", "Désactiver — griser, ignorer les clics"),
|
|
("off", "Réactiver"),
|
|
("toggle", "Basculer désactivé / réactivé"),
|
|
]
|
|
ELEMENT_DESACTIVE_LABELS = dict(ELEMENT_DESACTIVE_VALUES)
|