Files
Forge-Engine/routes/global_vars/create_global_var.py
T
williamandClaude Sonnet 5 b07b231a61
Build and deploy / test-python (push) Successful in 12m24s
Build and deploy / test-js (push) Successful in 1m9s
Build and deploy / build-and-push (push) Skipped
Build and deploy / deploy (push) Skipped
Ajoute l'assistant IA "Ruby" (Claude + Scenario) et corrige plusieurs bugs de la scène
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>
2026-09-09 19:40:31 +02:00

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))