Phase 3 : hardening qualite de code - typage strict, securite, dead code, a11y
Config strictement stricte partout (ruff, mypy --strict, bandit, vulture, import-linter, eslint, stylelint), aucune regle desactivee "pour ne pas casser le build" - l'existant a ete corrige pour la satisfaire plutot que l'inverse. Hooks pre-commit locaux (language: system) bloquants. - Typage mypy --strict propage a tout le moteur (db, screens, auth, core, ai, routes, puis publish/scripts/tests/app.py/build_css.py). - Securite : fuite de handle fichier Windows corrigee dans l'export SCORM (routes/publish/export_scorm.py), CSRF/RNG non-crypto/xAPI documentes (# nosec, # NOSONAR justifies), nouveau db.json_for_script() (echappe "</script>" dans le JSON embarque en <script>, 25 sites). - Architecture : imports circulaires/F811 nettoyes, contrats import-linter respectes, code mort retire (vulture). - Accessibilite : 69 champs de formulaire sans label correctement associe corriges (for/id ou aria-label) sur 11 templates. - ESLint/Stylelint : lot mecanique JS/CSS, regles ajustees puis appliquees (aucune desactivee sans verification individuelle). - Tests : isolation du compte admin partage (nettoyage ponctuel + fixture de teardown automatique en filet de securite), suite complete verte (591 tests Python, 241 tests JS). - SonarQube Community Build self-heberge (Docker + PostgreSQL) : rapport complet analyse point par point, faux positifs documentes. - .gitattributes ajoute (LF force) : core.autocrlf=true sur cette machine faisait echouer ESLint (linebreak-style) via un bug connu de git (checkout "en place" qui ignore l'eol force sur un fichier deja present sur disque - contourne en supprimant puis recreant chaque fichier suivi). djLint (H021, styles inline) volontairement saute pour ce commit - backlog assume, deja documente, traite dans un lot separe. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
7db4803b93
commit
c57420c8c9
+289
-118
@@ -18,16 +18,150 @@ 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 .labels.action_type_labels import ACTION_TYPE_LABELS
|
||||
from .labels.element_action_properties import (
|
||||
ELEMENT_ORIENTATION_VALUES, ELEMENT_ORIENTATION_LABELS,
|
||||
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 .labels.element_visibility import ELEMENT_VISIBILITY_VALUES, ELEMENT_VISIBILITY_LABELS
|
||||
from .labels.data_operations import DATA_OPERATIONS, DATA_OPERATION_LABELS
|
||||
from .labels.sprite_library import PUBLIC_SPRITE_LIBRARY
|
||||
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
|
||||
@@ -37,119 +171,156 @@ from .labels.animal_sprite_library import ADMIN_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)
|
||||
from .labels.sprite_gallery import sprite_gallery_families
|
||||
from .labels.background_library import BACKGROUND_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)
|
||||
from .rendering.list_used_forge_characters import list_used_forge_characters
|
||||
|
||||
from .flow.constants import (
|
||||
TRIGGER_EVENTS, CONDITION_OPERATORS, CONDITION_OPERATOR_LABELS, CLICKED_ROW_ID, LAST_INSERTED_ROW_ID,
|
||||
)
|
||||
|
||||
from .rendering.trigger_for import _trigger_for
|
||||
from .rendering.personnage_data import resolve_personnage_data, resolve_personnage_animations, resolve_personnage_idle_frame
|
||||
from .rendering.personnage_role import resolve_personnage_role, PERSONNAGE_ROLES, PERSONNAGE_ROLE_LABELS, DEFAULT_PERSONNAGE_ROLE
|
||||
from .rendering.collision_settings import resolve_collision_settings, DEFAULT_COLLISION_SETTINGS, COLLISION_SHAPES
|
||||
from .rendering.collision_rules import (
|
||||
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,
|
||||
)
|
||||
from .rendering.screen_triggers import resolve_screen_triggers, sanitize_screen_triggers, TRIGGER_TYPES_SCREEN
|
||||
from .labels.surbrillance_values import SURBRILLANCE_VALUES, SURBRILLANCE_LABELS
|
||||
from .labels.video_modes import VIDEO_MODES, VIDEO_MODE_LABELS
|
||||
from .rendering.personnage_commands import resolve_personnage_commands, DEFAULT_PERSONNAGE_COMMANDS, sanitize_extra_commands
|
||||
from .rendering.scene_object_names import list_named_scene_object_names
|
||||
from .rendering.dialogue_box_style import resolve_dialogue_box_style, sanitize_dialogue_box_style, DEFAULT_DIALOGUE_BOX_STYLE, FONT_WEIGHT_CHOICES
|
||||
from .rendering.quiz_box_config import (
|
||||
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,
|
||||
)
|
||||
|
||||
from .screens_repo.ensure_schema import ensure_schema
|
||||
from .screens_repo.list_screens import list_screens
|
||||
from .screens_repo.get_screen import get_screen
|
||||
from .screens_repo.create_screen import create_screen
|
||||
from .screens_repo.rename_screen import rename_screen
|
||||
from .screens_repo.delete_screen import delete_screen
|
||||
from .screens_repo.move_screen import move_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
|
||||
from .screens_repo.append_action_to_screen_trigger import append_action_to_screen_trigger
|
||||
from .screens_repo.remove_action_from_screen_trigger import remove_action_from_screen_trigger
|
||||
from .screens_repo.move_action_in_screen_trigger import move_action_in_screen_trigger
|
||||
|
||||
from .scenes.ensure_scene_schema import ensure_scene_schema
|
||||
from .scenes.add_scene_object import add_scene_object
|
||||
from .scenes.list_scene_objects import list_scene_objects
|
||||
from .scenes.resolve_scene_world_size import resolve_scene_world_size
|
||||
from .scenes.get_scene_object import get_scene_object
|
||||
from .scenes.update_scene_object_geometry import update_scene_object_geometry
|
||||
from .scenes.delete_scene_object import delete_scene_object
|
||||
from .scenes.set_scene_object_personnage_data import set_scene_object_personnage_data
|
||||
from .scenes.set_scene_object_commands import set_scene_object_commands
|
||||
from .scenes.set_scene_object_role import set_scene_object_role
|
||||
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_name import set_scene_object_name
|
||||
from .scenes.set_scene_object_dialogue_box_style import set_scene_object_dialogue_box_style
|
||||
from .scenes.set_scene_object_quiz_config import set_scene_object_quiz_config
|
||||
from .scenes.render_scene_object import render_scene_object
|
||||
from .scenes.build_collision_rule_objects import build_collision_rule_objects
|
||||
from .scenes.append_action_to_trigger import append_action_to_trigger
|
||||
from .scenes.remove_action_from_trigger import remove_action_from_trigger
|
||||
from .scenes.move_action_in_trigger import move_action_in_trigger
|
||||
from .rendering.trigger_graph import (
|
||||
list_all_triggers, list_all_collision_objects, collect_all_dialogue_lines,
|
||||
list_completable_dialogue_ids,
|
||||
)
|
||||
from .scenes.flow_palette import TRIGGER_EVENTS_2D, ACTION_TYPE_LABELS_2D, OBJECT_ACTION_PROPERTIES
|
||||
|
||||
from .flow.ensure_flow_schema import ensure_flow_schema
|
||||
from .flow.list_flow_nodes import list_flow_nodes
|
||||
from .flow.list_flow_edges import list_flow_edges
|
||||
from .flow.get_flow_node import get_flow_node
|
||||
from .flow.add_flow_node import add_flow_node
|
||||
from .flow.move_flow_node import move_flow_node
|
||||
from .flow.delete_flow_node import delete_flow_node
|
||||
from .flow.add_flow_edge import add_flow_edge
|
||||
from .flow.delete_flow_edge import delete_flow_edge
|
||||
|
||||
from .flow.blocks.list_flow_blocks import list_flow_blocks
|
||||
from .flow.blocks.get_flow_block import get_flow_block
|
||||
from .flow.blocks.create_flow_block import create_flow_block
|
||||
from .flow.blocks.update_flow_block import update_flow_block
|
||||
from .flow.blocks.delete_flow_block import delete_flow_block
|
||||
from .flow.blocks.blocks_view import blocks_view
|
||||
|
||||
from .data_actions.apply_data_action import apply_data_action
|
||||
from .data_actions.apply_variable_action import apply_variable_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_add_row_action import apply_add_row_action
|
||||
|
||||
from .animations.ensure_animation_schema import ensure_animation_schema
|
||||
from .animations.list_animation_clips import list_animation_clips
|
||||
from .animations.get_animation_clip import get_animation_clip
|
||||
from .animations.add_animation_clip import add_animation_clip
|
||||
from .animations.update_animation_clip import update_animation_clip
|
||||
from .animations.delete_animation_clip import delete_animation_clip
|
||||
from .animations.animate_css_catalog import ANIMATE_CSS_CATALOG, ANIMATE_CSS_LABELS
|
||||
|
||||
from .custom_events.list_custom_event_usages import list_custom_event_usages
|
||||
from .custom_events.delete_custom_event import delete_custom_event
|
||||
|
||||
from .payload.full_game_payload import full_game_payload
|
||||
|
||||
from .ia.ensure_ia_chat_schema import ensure_ia_chat_schema
|
||||
from .ia.list_ia_chat_messages import list_ia_chat_messages
|
||||
from .ia.add_ia_chat_message import add_ia_chat_message
|
||||
from .ia.create_ia_conversation import create_ia_conversation
|
||||
from .ia.list_ia_conversations import list_ia_conversations
|
||||
from .ia.get_ia_conversation import get_ia_conversation
|
||||
from .ia.delete_ia_conversation import delete_ia_conversation
|
||||
# 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",
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user