Trois retours utilisateur : - fps d'idle/interagir/touches supplémentaires alignés sur celui de la marche (8 i/s partout, était 4 pour idle — perçu comme "les autres animations sont lentes à côté de la marche"). - Nouveau menu "🏞️ Images de fond" dans "Objets de cette scène" : pose un objet kind="fond" à la taille RÉELLE de l'image choisie (pack CraftPix intégré en galerie, admin seulement — licence, voir core/sprite_gate.py), derrière tout le reste, insensible au clic. - Si ce fond dépasse la scène, elle devient le "monde" : .playScreen. playScene est désormais le viewport (overflow:hidden, taille fixe), .sceneWorld le monde à l'intérieur — la caméra centre le premier personnage trouvé, bornée pour ne jamais montrer au-delà des bords (voir personnage-controller.js::forgeUpdateSceneCamera). Le personnage peut désormais se déplacer sur tout le monde, pas seulement le petit cadre visible (clampSceneObjectPosition, actions.js). Un jeu sans fond XXL garde un comportement strictement identique à avant (monde == scène, transform vide). Bibliothèque générée une fois par scripts/generate_background_manifest.py (assets/background/, non versionné, licence CraftPix) vers static/backgrounds/ (committé), même patron que generate_animal_sprite_manifest.py. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
27 lines
1.3 KiB
Python
27 lines
1.3 KiB
Python
"""Garde d'accès aux sprites animaux CraftPix (screens.ADMIN_SPRITE_LIBRARY)
|
|
— licence CraftPix, réservés au rôle admin (voir le plan "Bibliothèque de
|
|
sprites animaux CraftPix"). La galerie de l'éditeur (routes/screens/
|
|
screen_edit.py, routes/scenes/scene_edit_view.py) ne les propose déjà pas
|
|
à un compte "user", mais un POST direct vers une route d'écriture
|
|
(element_add, scene_object_add, element_set_personnage_data,
|
|
scene_object_personnage_data) pourrait contourner ce filtrage d'UI — ce
|
|
garde-fou ferme cette brèche au moment de l'écriture."""
|
|
from flask import abort, g
|
|
|
|
import screens
|
|
|
|
|
|
def forbid_admin_only_character(forge_character):
|
|
if forge_character in screens.ADMIN_ONLY_CHARACTER_SLUGS and g.current_user["role"] != "admin":
|
|
abort(403)
|
|
|
|
|
|
# Même règle que forbid_admin_only_character ci-dessus, pour la
|
|
# bibliothèque d'images de fond CraftPix (screens.BACKGROUND_LIBRARY,
|
|
# voir screens/labels/background_library.py) — TOUJOURS admin-only
|
|
# aujourd'hui (un seul pack, tous sous licence CraftPix), contrairement
|
|
# aux personnages Forge/Kenney (domaine public, jamais gatés).
|
|
def forbid_admin_only_background(background_slug):
|
|
if background_slug in screens.ADMIN_ONLY_BACKGROUND_SLUGS and g.current_user["role"] != "admin":
|
|
abort(403)
|