{% 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 %}
  • {{ game.name }}
  • Écrans
  • {{ screen.name }}
  • {% endblock %} {% block content %}
    {% if not screen.is_template %} ▶️ Jouer depuis le début {% endif %}
    {% 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 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() %}
    {% endfor %}
    🧩 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' %}
    Aperçu :
    {% for el in top_level_elements %}
    {{ el.rendered_html|safe }}
    {% endfor %}

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

    {% 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 in container_widgets %}
    📥 Ajouter DANS ce conteneur
    {% for wkey, w in widgets.items() %}
    {% endfor %}
    {% 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.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 %} {% elif c.type == 'textarea' %}
    {% elif c.type == 'color' %}
    {% elif c.type == 'slider' %}
    {{ c.value }}{{ c.unit }}
    {% elif c.type == 'scale' %}
    x{{ c.value }}
    {% elif c.type == 'align' %}
    {% for val, icon in [('left','⬅️'),('center','⬛'),('right','➡️'),('justify','☰')] %} {% endfor %}
    {% elif c.type in ('select', 'preset') %}
    {% endif %} {% endif %}
    {% endfor %} {% if ns.started %}
    {% endif %}
    Enregistré automatiquement
    {% endif %} {% endif %}
    {% if not screen.is_template %}
    ▸ 🔀 Logique de la scène — nœuds et connexions
    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.
    ▸ 🎬 Timeline d'animation
    {% endif %} {% endblock %}