Simplification demandée pour l'éditeur de jeu RPG : un personnage posé sur une scène 2D se déplace et s'anime TOUT SEUL avec ZQSD (+ E pour interagir) dès qu'il est posé — plus besoin de poser le moindre nœud de flow pour un mouvement de base. Le panneau "🕹️ Commandes" du personnage permet de remapper les 4 touches de déplacement et la touche d'interaction, et de bloquer un axe (horizontal/vertical seulement). Entièrement client (static/js/play/personnage-controller.js), réutilise heldKeys (triggers.js) et applyObjectProperty/clampSceneObjectPosition/ runSpriteAnimation (actions.js) — aucune logique dupliquée, et ça fonctionne aussi bien en ligne que dans l'export Web/SCORM (aucune requête serveur). "walk"/"idle"/"interact" (poses déjà présentes pour tout personnage Forge/CraftPix) sont utilisées telles quelles ; une pose absente dégrade silencieusement (déplacement sans animation) plutôt que de planter. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
27 lines
1.1 KiB
Python
27 lines
1.1 KiB
Python
import json
|
|
|
|
import db
|
|
|
|
from .ensure_scene_schema import ensure_scene_schema
|
|
|
|
|
|
def set_scene_object_commands(slug, object_id, commands):
|
|
"""Enregistre les touches de déplacement/interaction et le blocage
|
|
d'axe d'un objet de scène kind="personnage" (voir
|
|
screens/rendering/personnage_commands.py pour les valeurs par défaut,
|
|
et static/js/play/personnage-controller.js pour leur usage au jeu) —
|
|
même patron que set_scene_object_personnage_data.py, mais un attribut
|
|
JSON DISTINCT (_personnage_commandes) pour ne jamais entrer en
|
|
conflit avec _personnage_data (choix du personnage/de ses animations)."""
|
|
ensure_scene_schema(slug)
|
|
conn = db.connect(slug)
|
|
row = conn.execute("SELECT attributes FROM _scene_objects WHERE id = ?", (object_id,)).fetchone()
|
|
if not row:
|
|
conn.close()
|
|
return
|
|
attributes = json.loads(row["attributes"] or "{}")
|
|
attributes["_personnage_commandes"] = json.dumps(commands)
|
|
conn.execute("UPDATE _scene_objects SET attributes = ? WHERE id = ?", (json.dumps(attributes), object_id))
|
|
conn.commit()
|
|
conn.close()
|