{% 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 breadcrumb_wrap %}{% 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.
⋮⋮ 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 == '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 %}