Trois correctifs remontés en test manuel sur l'éditeur de scène : 1. Personnage écrasé/déformé dans sa boîte de sélection : les frames CraftPix (screens/labels/animal_sprite_library.py) sont de grands canevas très paddés (~788×504 px), très différents des sprites Kenney déjà recadrés serré (~96×128 px) — sans object-fit, l'image remplissait quand même sa boîte (width/height:100%, voir la règle .canvasElementInner > img de scene_edit.html) mais DÉFORMÉE. Nouvelle classe .sceneObjectSprite (object-fit:contain) posée sur le <img> rendu par render_scene_object.py, éditeur ET jeu jouable. 2. Aucun clip de Timeline (sprite, Animate.css ou personnalisé) ne se jouait jamais sur un objet de scène : applyAnimationClip() (static/js/play/screens.js) et animation-timeline.js sélectionnent TOUJOURS leur cible via l'attribut data-anim-target (posé sur .canvasElement/.playElement pour le DOM), jamais data-element-id/ data-object-id — cet attribut n'était simplement jamais posé sur les objets de scène. Ajouté sur le <img> rendu (render_scene_object.py). 3. Boîte par défaut d'un nouvel objet de scène trop petite (64×64 px sur une scène de 960×540) pour bien voir le personnage ou saisir la poignée de redimensionnement confortablement — portée à 128×128 (ensure_scene_schema.py ; n'affecte que les NOUVEAUX objets, les objets déjà posés gardent leur taille actuelle). Au passage : galerie de personnages ~3x plus grande (2 colonnes au lieu de 6 dans .iconGallery.personnageGallery) — les tuiles étaient trop petites pour bien distinguer les personnages. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
import db
|
|
|
|
|
|
def ensure_scene_schema(slug):
|
|
"""Crée _scene_objects si nécessaire — le contenu d'une scène pour un
|
|
jeu "jeu_2d" (voir db/games/get_game_type.py), équivalent de
|
|
_screen_elements pour un jeu "document" mais en coordonnées PIXEL
|
|
fixes (pas des % fluides — indispensable pour la collision/
|
|
l'animation), sans arbre de nesting (pas de conteneurs imbriqués dans
|
|
une scène de jeu 2D)."""
|
|
conn = db.connect(slug)
|
|
conn.executescript(
|
|
"""
|
|
CREATE TABLE IF NOT EXISTS _scene_objects (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
scene_id INTEGER NOT NULL REFERENCES _screens(id) ON DELETE CASCADE,
|
|
kind TEXT NOT NULL DEFAULT 'personnage',
|
|
name TEXT,
|
|
x REAL NOT NULL DEFAULT 100,
|
|
y REAL NOT NULL DEFAULT 100,
|
|
width REAL NOT NULL DEFAULT 128,
|
|
height REAL NOT NULL DEFAULT 128,
|
|
z_index INTEGER NOT NULL DEFAULT 1,
|
|
attributes TEXT NOT NULL DEFAULT '{}',
|
|
created_at TEXT DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
"""
|
|
)
|
|
conn.commit()
|
|
conn.close()
|