{% extends "base.html" %} {% block title %}{{ screen.name }} — {{ game.name }}{% endblock %} {% block content_class %}content-builder{% endblock %} {% block body_class %}builderBody{% endblock %} {% block extra_head %} {% endblock %} {% block content %} {% if screen.is_template %}

đŸ§© Contenu d'un Ă©lĂ©ment de jeu rĂ©utilisable.

{% endif %} {% macro render_tree_node(el) %} {% set kids = children_of.get(el.id, []) %}
{% if kids %} {% else %} {% endif %} {{ widgets.get(el.widget, {}).get('icon', '❔') }} {{ el|elabel }}
{% if kids %}
{% for child in kids %} {{ render_tree_node(child) }} {% endfor %}
{% endif %}
{% endmacro %}
{% set el = elements|selectattr("id", "equalto", selected_id)|first if selected_id else none %}
⋼⋼ ÉlĂ©ments de cet Ă©cran
{% if not screen.is_template %} ▶ Jouer depuis le dĂ©but {% endif %} {% set current_aspect = screen.preview_aspect or '9/16' %}

ÉlĂ©ments de cet Ă©cran

{% if top_level_elements %}
{% for el in top_level_elements %} {{ render_tree_node(el) }} {% endfor %}
{% else %}

Aucun élément pour l'instant.

{% endif %}
Ajouter un élément sur l'écran
{% for wkey, w in widgets.items() if wkey != 'icone' %}
{% endfor %}
đŸ”€ IcĂŽnes
{% for slug in fontawesome_icons %} {% endfor %}

Glisse une icĂŽne sur le canevas, ou clique dessus pour l'ajouter — sa couleur et sa taille se rĂšglent ensuite dans ses propriĂ©tĂ©s ("IcĂŽne"). SĂ©lection non exhaustive : d'autres icĂŽnes pourront ĂȘtre ajoutĂ©es Ă  cette liste plus tard si besoin.

đŸ§© Mes Ă©lĂ©ments de jeu{{ ' (' ~ element_types|length ~ ')' if element_types else '' }}
{% if element_types %}
{% for et in element_types %}
{% endfor %}
{% else %}

Pas encore d'Ă©lĂ©ment de jeu personnalisĂ© — crĂ©es-en un.

{% endif %}
{% set current_aspect = screen.preview_aspect or '9/16' %}
{% for el in top_level_elements %}
{{ el.rendered_html|safe }}
{% endfor %}

Glisse pour déplacer, tire le coin pour redimensionner, clique pour sélectionner.

Clique un point de sortie d'un nƓud, puis le point d'entrĂ©e d'un autre nƓud, pour les relier. Reclique une connexion pour la supprimer.

ÉvĂ©nements personnalisĂ©s

{% if custom_events %} {% for ev in custom_events %}
{% endfor %}
{% for ev in custom_events %} {% endfor %}
NomDescriptionParamÚtreUtilisé par
{{ ev.name }} {% set usages = custom_event_usages.get(ev.id, []) %} {% if usages %} {% for u in usages %} {{ '🔔' if u.role == 'ecoute' else '📣' }} {{ u.screen_name }}{{ ' (modĂšle)' if u.is_template else '' }}{{ ', ' if not loop.last else '' }} {% endfor %} {% else %} InutilisĂ© {% endif %}
{% else %}

Aucun Ă©vĂ©nement pour l'instant — crĂ©e le premier ci-dessus, puis pose un nƓud "Sur un Ă©vĂ©nement personnalisĂ©" (DĂ©clencheur) ou "DĂ©clencher un Ă©vĂ©nement" (Action) dans la Logique de la scĂšne.

{% endif %}
⋼⋼ PropriĂ©tĂ©s
{% if not selected_id %}
Sélectionne un élément (sur l'écran ou dans la liste) pour voir et modifier ses propriétés ici.
{% else %} {% set el = elements|selectattr("id", "equalto", selected_id)|first %} {% if el %} {% set w = widgets.get(el.widget, {}) %}

{{ w.get('icon','❔') }} {{ el|elabel }}{% if el.name %} — {{ w.get('label', el.widget) }}{% endif %}

{% if el.widget == 'onglets' %} {% set tabs = children_of.get(el.id, []) %}
đŸ—‚ïž Onglets{{ ' (' ~ tabs|length ~ ')' if tabs else '' }}
{% if tabs %} {% for tab in tabs %}
{% endfor %} {% else %}

Aucun onglet pour l'instant.

{% endif %}
{% endif %} {% set size_ctrl_keys = ['child-width', 'child-height'] %} {% set size_ctrls = {} %} {% for c in selected_controls if c.key in size_ctrl_keys %}{% set _ = size_ctrls.update({c.key: c}) %}{% endfor %}
Position & taille
{% if el.parent_id %}
{% else %}
{% endif %}
{% if el.parent_id %}

X/Y ne s'appliquent qu'Ă  un Ă©lĂ©ment posĂ© directement sur l'Ă©cran — celui-ci suit la disposition de son conteneur. Largeur/Hauteur : laisser vide garde la taille automatique ; "%" (relatif au conteneur) convient Ă  la plupart des cas, "px" pour une taille prĂ©cise.

{% endif %}
{% set ns = namespace(last_group=None, started=False) %} {% for c in selected_controls if c.key not in size_ctrl_keys %} {% if c.group != ns.last_group %} {% if ns.started %}
{% endif %}
{{ c.group or 'Propriétés' }}
{% set ns.last_group = c.group %} {% set ns.started = True %} {% endif %}
{% if c.type in ('checkbox', 'toggle_token') %}
{% else %} {% if c.key == 'icon_class' %}
{% elif c.key.endswith('_valeur') %}
{% elif c.type in ('text', 'url') %}
{% if c.allow_upload %}

Colle une adresse (URL) ci-dessus, ou choisis un fichier sur ton ordinateur — il sera hĂ©bergĂ© automatiquement avec ce jeu.

{% endif %} {% if c.field_options %}
{% endif %} {% elif c.type == 'textarea' %}
{% if c.field_options %}

InsĂšre "{{champ}}" Ă  l'emplacement du curseur — affichera la valeur de ce champ, sur la ligne trouvĂ©e par "DonnĂ©e liĂ©e" ci-dessous.

{% endif %} {% elif c.type == 'color' %}
{% elif c.type == 'slider' %}
{{ c.value }}{{ c.unit }}
{% elif c.type == 'scale' %}
x{{ c.value }}
{% elif c.type == 'clause_list' %}
{% for clause in c.value.clauses %} {% include "partials/clause_row.html" with context %} {% endfor %}

Aucune condition = la ligne la plus récente de cet objet.

{% set clause = {"champ": "", "operateur": "egal", "valeur": ""} %} {% elif c.type == 'shadow' %}
{{ (c.value.opacity * 100)|round|int }}%

Décalages, flou et étendue tous à 0 = pas d'ombre.

{% elif c.type == 'align' %}
{% for val, icon in [('left','âŹ…ïž'),('center','⬛'),('right','âžĄïž'),('justify','☰')] %} {% endfor %}
{% elif c.type in ('select', 'preset') %}
{% if c.key == 'visibilite_cond_variable' %}

Pas la variable qu'il te faut ? GĂ©rer les variables du jeu ↗

{% endif %} {% endif %} {% endif %}
{% endfor %} {% if ns.started %}
{% endif %}
Enregistré automatiquement
{% endif %} {% endif %}
{% endblock %}