from ..screens_repo.list_screens import list_screens from ..scenes.list_scene_objects import list_scene_objects # Le widget "💬 Boîte de dialogue" (kind="dialogue_box") n'est pas un # acteur de la scène — il n'a pas de sens comme "qui parle" dans un # dialogue de quête, contrairement à N'IMPORTE QUEL AUTRE objet # (personnage, décor, fond). _EXCLUDED_KINDS = {"dialogue_box"} def list_named_scene_object_names(slug): """Noms distincts de tous les objets de scène nommés (voir "ℹ️ Informations", templates/scene_edit.html) — n'importe quel kind (personnage, décor, fond), toutes scènes 2D du jeu confondues : une quête (voir db/quests/) est GAME-WIDE, son dialogue peut donc mettre en scène un objet posé sur une autre scène que celle où la règle de collision se déclenche. Ordre alphabétique, jamais de doublon.""" names = set() for s in list_screens(slug): if s["kind"] != "jeu_2d": continue for o in list_scene_objects(slug, s["id"]): if o["kind"] not in _EXCLUDED_KINDS and o.get("name"): names.add(o["name"]) return sorted(names)