""" screens.py — écrans de jeu : un seul moteur d'écran, la scène 2D "jeu_2d" (voir screens/scenes/) — objets posés en pixels, enchaînement des écrans, et logique déclenchée par clic/collision/clavier/minuteur (voir screens/flow/). Tout est stocké dans la même base SQLite que le reste du jeu (projects//game.db) : - _screens : un écran du jeu (une scène...) - _scene_objects : chaque objet posé sur une scène (personnage, décor, fond, widgets d'interface...) - _flow_nodes/_flow_edges : le graphe de logique de chaque écran Ce fichier est désormais un package (voir les sous-dossiers) organisé selon "un fichier = une fonction, un dossier = une responsabilité" ; ce module se contente de ré-exporter l'intégralité de l'API publique utilisée par app.py et les templates, afin que `import screens` continue de fonctionner à l'identique. """ from .animations.add_animation_clip import add_animation_clip from .animations.animate_css_catalog import ANIMATE_CSS_CATALOG, ANIMATE_CSS_LABELS from .animations.delete_animation_clip import delete_animation_clip from .animations.ensure_animation_schema import ensure_animation_schema from .animations.get_animation_clip import get_animation_clip from .animations.list_animation_clips import list_animation_clips from .animations.update_animation_clip import update_animation_clip from .custom_events.delete_custom_event import delete_custom_event from .custom_events.list_custom_event_usages import list_custom_event_usages from .data_actions.apply_add_row_action import apply_add_row_action from .data_actions.apply_data_action import apply_data_action from .data_actions.apply_score_action import apply_score_action from .data_actions.apply_status_action import apply_status_action from .data_actions.apply_variable_action import apply_variable_action from .data_definitions.data_definition_options import data_definition_options from .flow.add_flow_edge import add_flow_edge from .flow.add_flow_node import add_flow_node from .flow.blocks.blocks_view import blocks_view from .flow.blocks.create_flow_block import create_flow_block from .flow.blocks.delete_flow_block import delete_flow_block from .flow.blocks.get_flow_block import get_flow_block from .flow.blocks.list_flow_blocks import list_flow_blocks from .flow.blocks.update_flow_block import update_flow_block from .flow.constants import ( CLICKED_ROW_ID, CONDITION_OPERATOR_LABELS, CONDITION_OPERATORS, LAST_INSERTED_ROW_ID, TRIGGER_EVENTS, ) from .flow.delete_flow_edge import delete_flow_edge from .flow.delete_flow_node import delete_flow_node from .flow.ensure_flow_schema import ensure_flow_schema from .flow.get_flow_node import get_flow_node from .flow.list_flow_edges import list_flow_edges from .flow.list_flow_nodes import list_flow_nodes from .flow.move_flow_node import move_flow_node from .ia.add_ia_chat_message import add_ia_chat_message from .ia.create_ia_conversation import create_ia_conversation from .ia.delete_ia_conversation import delete_ia_conversation from .ia.ensure_ia_chat_schema import ensure_ia_chat_schema from .ia.get_ia_conversation import get_ia_conversation from .ia.list_ia_chat_messages import list_ia_chat_messages from .ia.list_ia_conversations import list_ia_conversations from .labels.action_type_labels import ACTION_TYPE_LABELS from .labels.animal_sprite_library import ADMIN_SPRITE_LIBRARY from .labels.background_library import BACKGROUND_LIBRARY from .labels.data_operations import DATA_OPERATION_LABELS, DATA_OPERATIONS from .labels.element_action_properties import ( ELEMENT_ORIENTATION_LABELS, ELEMENT_ORIENTATION_VALUES, ) from .labels.element_visibility import ELEMENT_VISIBILITY_LABELS, ELEMENT_VISIBILITY_VALUES from .labels.sprite_gallery import sprite_gallery_families from .labels.sprite_library import PUBLIC_SPRITE_LIBRARY from .labels.surbrillance_values import SURBRILLANCE_LABELS, SURBRILLANCE_VALUES from .labels.video_modes import VIDEO_MODE_LABELS, VIDEO_MODES from .payload.full_game_payload import full_game_payload from .rendering.collision_rules import ( backfill_missing_leaf_ids, move_action_in_rules, remove_action_from_rules, resolve_collision_rules, sanitize_collision_rules, set_dialogue_lines_in_rules, set_then_action_in_rules, ) from .rendering.collision_settings import COLLISION_SHAPES, DEFAULT_COLLISION_SETTINGS, resolve_collision_settings from .rendering.dialogue_box_style import ( DEFAULT_DIALOGUE_BOX_STYLE, FONT_WEIGHT_CHOICES, resolve_dialogue_box_style, sanitize_dialogue_box_style, ) from .rendering.list_used_forge_characters import list_used_forge_characters from .rendering.personnage_commands import ( DEFAULT_PERSONNAGE_COMMANDS, resolve_personnage_commands, sanitize_extra_commands, ) from .rendering.personnage_data import ( resolve_personnage_animations, resolve_personnage_data, resolve_personnage_idle_frame, ) from .rendering.personnage_role import ( DEFAULT_PERSONNAGE_ROLE, PERSONNAGE_ROLE_LABELS, PERSONNAGE_ROLES, resolve_personnage_role, ) from .rendering.quiz_box_config import ( DEFAULT_QUIZ_BOX_CONFIG, QUIZ_BOX_DIALOG_TEMPLATE_LABELS, QUIZ_BOX_DIALOG_TEMPLATES, QUIZ_BOX_PAGE_TEMPLATE_LABELS, QUIZ_BOX_PAGE_TEMPLATES, TIMER_MODES, resolve_quiz_box_config, sanitize_quiz_box_config, ) from .rendering.scene_object_names import list_named_scene_object_names from .rendering.screen_triggers import TRIGGER_TYPES_SCREEN, resolve_screen_triggers, sanitize_screen_triggers from .rendering.trigger_graph import ( collect_all_dialogue_lines, list_all_collision_objects, list_all_triggers, list_completable_dialogue_ids, ) from .scenes.add_scene_object import add_scene_object from .scenes.append_action_to_trigger import append_action_to_trigger from .scenes.build_collision_rule_objects import build_collision_rule_objects from .scenes.delete_scene_object import delete_scene_object from .scenes.ensure_scene_schema import ensure_scene_schema from .scenes.flow_palette import ACTION_TYPE_LABELS_2D, OBJECT_ACTION_PROPERTIES, TRIGGER_EVENTS_2D from .scenes.get_scene_object import get_scene_object from .scenes.list_scene_objects import list_scene_objects from .scenes.move_action_in_trigger import move_action_in_trigger from .scenes.remove_action_from_trigger import remove_action_from_trigger from .scenes.render_scene_object import render_scene_object from .scenes.resolve_scene_world_size import resolve_scene_world_size from .scenes.set_scene_object_collision import set_scene_object_collision from .scenes.set_scene_object_collision_rules import set_scene_object_collision_rules from .scenes.set_scene_object_commands import set_scene_object_commands from .scenes.set_scene_object_dialogue_box_style import set_scene_object_dialogue_box_style from .scenes.set_scene_object_name import set_scene_object_name from .scenes.set_scene_object_personnage_data import set_scene_object_personnage_data from .scenes.set_scene_object_quiz_config import set_scene_object_quiz_config from .scenes.set_scene_object_role import set_scene_object_role from .scenes.update_scene_object_geometry import update_scene_object_geometry from .screens_repo.append_action_to_screen_trigger import append_action_to_screen_trigger from .screens_repo.create_screen import create_screen from .screens_repo.delete_screen import delete_screen from .screens_repo.ensure_schema import ensure_schema from .screens_repo.get_screen import get_screen from .screens_repo.list_screens import list_screens from .screens_repo.move_action_in_screen_trigger import move_action_in_screen_trigger from .screens_repo.move_screen import move_screen from .screens_repo.remove_action_from_screen_trigger import remove_action_from_screen_trigger from .screens_repo.rename_screen import rename_screen from .screens_repo.screens_referencing import screens_referencing from .screens_repo.set_scene_size import set_scene_size from .screens_repo.set_screen_background_music import set_screen_background_music from .screens_repo.set_screen_triggers import set_screen_triggers # SPRITE_LIBRARY (fusionné) : utilisé par resolve_personnage_animations # pour la résolution RUNTIME (jeu jouable, tous rôles confondus — voir le # plan "Bibliothèque de sprites animaux CraftPix" : aucun filtrage par # rôle au runtime, seulement à la galerie/l'écriture). Les routes qui # alimentent la galerie de l'éditeur doivent utiliser PUBLIC_SPRITE_LIBRARY # ou ADMIN_SPRITE_LIBRARY selon le rôle, jamais SPRITE_LIBRARY directement. SPRITE_LIBRARY = {**PUBLIC_SPRITE_LIBRARY, **ADMIN_SPRITE_LIBRARY} ADMIN_ONLY_CHARACTER_SLUGS = set(ADMIN_SPRITE_LIBRARY) # Un seul pack aujourd'hui, licence CraftPix — tout BACKGROUND_LIBRARY est # admin-only (voir core/sprite_gate.py::forbid_admin_only_background), # jamais de version "publique" comme pour les personnages Kenney. ADMIN_ONLY_BACKGROUND_SLUGS = set(BACKGROUND_LIBRARY) # Liste generee a partir des noms REELLEMENT importables depuis ce module # (introspection de vars(screens) + parsing AST des imports de ce fichier, # les deux methodes se recoupent exactement — voir discussion Phase 3) — # jamais retapee a la main. `_trigger_for` (rendering/trigger_for.py) est # volontairement exclu : prefixe underscore = prive par convention, et # confirme inutilise en dehors de ce fichier (grep sur tout le depot). __all__ = [ "data_definition_options", "ACTION_TYPE_LABELS", "ELEMENT_ORIENTATION_VALUES", "ELEMENT_ORIENTATION_LABELS", "ELEMENT_VISIBILITY_VALUES", "ELEMENT_VISIBILITY_LABELS", "DATA_OPERATIONS", "DATA_OPERATION_LABELS", "PUBLIC_SPRITE_LIBRARY", "ADMIN_SPRITE_LIBRARY", "SPRITE_LIBRARY", "ADMIN_ONLY_CHARACTER_SLUGS", "sprite_gallery_families", "BACKGROUND_LIBRARY", "ADMIN_ONLY_BACKGROUND_SLUGS", "list_used_forge_characters", "TRIGGER_EVENTS", "CONDITION_OPERATORS", "CONDITION_OPERATOR_LABELS", "CLICKED_ROW_ID", "LAST_INSERTED_ROW_ID", "resolve_personnage_data", "resolve_personnage_animations", "resolve_personnage_idle_frame", "resolve_personnage_role", "PERSONNAGE_ROLES", "PERSONNAGE_ROLE_LABELS", "DEFAULT_PERSONNAGE_ROLE", "resolve_collision_settings", "DEFAULT_COLLISION_SETTINGS", "COLLISION_SHAPES", "resolve_collision_rules", "sanitize_collision_rules", "set_dialogue_lines_in_rules", "set_then_action_in_rules", "remove_action_from_rules", "move_action_in_rules", "backfill_missing_leaf_ids", "resolve_screen_triggers", "sanitize_screen_triggers", "TRIGGER_TYPES_SCREEN", "SURBRILLANCE_VALUES", "SURBRILLANCE_LABELS", "VIDEO_MODES", "VIDEO_MODE_LABELS", "resolve_personnage_commands", "DEFAULT_PERSONNAGE_COMMANDS", "sanitize_extra_commands", "list_named_scene_object_names", "resolve_dialogue_box_style", "sanitize_dialogue_box_style", "DEFAULT_DIALOGUE_BOX_STYLE", "FONT_WEIGHT_CHOICES", "resolve_quiz_box_config", "sanitize_quiz_box_config", "DEFAULT_QUIZ_BOX_CONFIG", "TIMER_MODES", "QUIZ_BOX_DIALOG_TEMPLATES", "QUIZ_BOX_DIALOG_TEMPLATE_LABELS", "QUIZ_BOX_PAGE_TEMPLATES", "QUIZ_BOX_PAGE_TEMPLATE_LABELS", "ensure_schema", "list_screens", "get_screen", "create_screen", "rename_screen", "delete_screen", "move_screen", "screens_referencing", "set_scene_size", "set_screen_background_music", "set_screen_triggers", "append_action_to_screen_trigger", "remove_action_from_screen_trigger", "move_action_in_screen_trigger", "ensure_scene_schema", "add_scene_object", "list_scene_objects", "resolve_scene_world_size", "get_scene_object", "update_scene_object_geometry", "delete_scene_object", "set_scene_object_personnage_data", "set_scene_object_commands", "set_scene_object_role", "set_scene_object_collision", "set_scene_object_collision_rules", "set_scene_object_name", "set_scene_object_dialogue_box_style", "set_scene_object_quiz_config", "render_scene_object", "build_collision_rule_objects", "append_action_to_trigger", "remove_action_from_trigger", "move_action_in_trigger", "list_all_triggers", "list_all_collision_objects", "collect_all_dialogue_lines", "list_completable_dialogue_ids", "TRIGGER_EVENTS_2D", "ACTION_TYPE_LABELS_2D", "OBJECT_ACTION_PROPERTIES", "ensure_flow_schema", "list_flow_nodes", "list_flow_edges", "get_flow_node", "add_flow_node", "move_flow_node", "delete_flow_node", "add_flow_edge", "delete_flow_edge", "list_flow_blocks", "get_flow_block", "create_flow_block", "update_flow_block", "delete_flow_block", "blocks_view", "apply_data_action", "apply_variable_action", "apply_score_action", "apply_status_action", "apply_add_row_action", "ensure_animation_schema", "list_animation_clips", "get_animation_clip", "add_animation_clip", "update_animation_clip", "delete_animation_clip", "ANIMATE_CSS_CATALOG", "ANIMATE_CSS_LABELS", "list_custom_event_usages", "delete_custom_event", "full_game_payload", "ensure_ia_chat_schema", "list_ia_chat_messages", "add_ia_chat_message", "create_ia_conversation", "list_ia_conversations", "get_ia_conversation", "delete_ia_conversation", ]