Intègre un chat IA capable de manipuler la scène via les mêmes fonctions que l'éditeur manuel (objets, variables, déclencheurs, images générées), avec conversations multiples par écran façon Claude. Corrige au passage le rafraîchissement pjax hors-ordre, l'onglet IA/déclencheurs vide après sélection d'un objet, la comparaison de booléens dans les conditions, et le blocage du glisser-déposer hors du cadre caméra après un redimensionnement de fond par l'IA. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
38 lines
1.8 KiB
Python
38 lines
1.8 KiB
Python
from flask import request, redirect, render_template, url_for, jsonify
|
|
|
|
import db
|
|
|
|
from core.flask_app import app
|
|
|
|
|
|
@app.route("/game/<slug>/variables/new", methods=["POST"])
|
|
def create_global_var(slug):
|
|
"""Depuis l'onglet "Variables" de l'éditeur de scène (screen_edit.html)
|
|
— idempotent par nom (voir db.create_global_variable), donc sans
|
|
risque en cas de double soumission. Réponse AJAX (voir
|
|
static/js/scenes/global-variables.js) : renvoie le HTML de la LIGNE
|
|
créée (templates/_global_variable_row.html, partagé avec le rendu
|
|
initial de la page — jamais dupliqué), que le JS insère sans recharger."""
|
|
name = (request.form.get("name") or "").strip()
|
|
var_type = request.form.get("type") or "texte"
|
|
default_value = request.form.get("default_value") or ""
|
|
screen_id = request.form.get("screen_id", type=int)
|
|
# État par joueur (Phase 1) : coché par défaut (une case DÉCOCHÉE
|
|
# explicitement rend la variable partagée par tous les joueurs, voir
|
|
# db/global_vars/create_global_variable.py) — absent du formulaire
|
|
# (jeux/pages qui n'ont pas encore ce champ) => reste per_player.
|
|
per_player = request.form.get("per_player", "1") == "1"
|
|
if name:
|
|
db.create_global_variable(slug, name, var_type, default_value, per_player=per_player)
|
|
if request.headers.get("X-Requested-With") == "fetch":
|
|
row_html = ""
|
|
if name:
|
|
variable = db.get_global_variable(slug, name)
|
|
row_html = render_template(
|
|
"_global_variable_row.html", v=variable, global_variable_types=db.GLOBAL_VARIABLE_TYPES,
|
|
)
|
|
return jsonify({"ok": True, "row_html": row_html})
|
|
if screen_id:
|
|
return redirect(url_for("screen_edit", slug=slug, screen_id=screen_id, tab="variables"))
|
|
return redirect(url_for("game_dashboard", slug=slug))
|