Supprime le type d'écran "document" et recentre le produit sur le jeu 2D
Le document de cadrage produit cible des formateurs non techniques créant des serious games/quiz gamifiés — l'éditeur générique "document" (blocs de logique en nœuds, timeline d'animation, définitions d'objets/relations, templates réutilisables) est une complexité hors cible que l'effort d'ingénierie récent avait déjà abandonnée au profit du jeu_2d. - Onboarding : ne garde que le parcours "RPG" (jeu_2d), retire Quiz/Embranchement/Créer mon jeu de A à Z (tous document-only) - Suppression en bloc des modules exclusifs au document : routes/elements, routes/element_types, routes/objects, routes/legacy_actions, screens/elements, screens/element_types, screens/widgets, screens/legacy_actions, le rendu render_element_html.py et son cluster, templates/screen_edit.html, templates/game_dashboard.html, flow-editor.js/tabs-and-blocks.js/animation-timeline.js - Dashboard toujours simplifié (un seul mode possible désormais) - Tests document-only supprimés, tests de logique partagée (flow, événements personnalisés, animations) retargetés sur des écrans jeu_2d - Aucune régression jeu_2d : 299 tests passent Carte d'onboarding retravaillée : argumentaire RH non technique (liste à coche, badge "Compatible LMS"), taille et interaction de retournement ajustées.
This commit is contained in:
+10
-67
@@ -1,34 +1,15 @@
|
||||
"""
|
||||
screens.py — écrans de jeu : éléments posés en glisser-déposer sur un
|
||||
écran, sans jamais toucher à un fichier HTML/CSS, enchaînement des écrans,
|
||||
et actions déclenchées par clic ou soumission de formulaire.
|
||||
|
||||
Version 3 — inspirée d'Elementor / Bricks Builder : un catalogue fermé de
|
||||
WIDGETS (Texte, Titre, Image, Bouton, Case à cocher, Répéteur de
|
||||
données...), chacun avec ses propres réglages ("controls") : un réglage =
|
||||
un champ, une case à cocher, un bouton radio ou un curseur — jamais de nom
|
||||
de balise ni de nom de propriété CSS à taper. En coulisses, chaque widget
|
||||
correspond à une vraie balise HTML avec de vrais attributs et un vrai
|
||||
style CSS ; l'utilisateur ne les manipule jamais directement.
|
||||
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/<slug>/game.db) :
|
||||
- _screens : un écran du jeu (accueil, formulaire, scène...)
|
||||
- _element_types : le "catalogue" des éléments de jeu réutilisables
|
||||
(Personnage, Outil, IA...) que l'utilisateur crée
|
||||
- _screen_elements : chaque élément posé sur un écran (widget, position
|
||||
et taille en POURCENTAGE de l'écran, contenu,
|
||||
attributs et style — dérivés des réglages du
|
||||
widget, jamais saisis en texte libre)
|
||||
- _actions : ce qui se passe au clic / à la soumission d'un
|
||||
élément (écran suivant, écran précédent, aller à
|
||||
un écran précis, ne rien faire)
|
||||
|
||||
Un élément peut aussi être un "Répéteur de données" : au lieu d'un contenu
|
||||
fixe, il est relié à un objet défini dans ce jeu (voir db.py) et affiche
|
||||
automatiquement une ligne par donnée existante — par exemple, tous les
|
||||
niveaux d'un parcours — à partir d'un modèle de texte avec des
|
||||
{{nom_de_champ}}.
|
||||
- _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
|
||||
@@ -37,20 +18,10 @@ utilisée par app.py et les templates, afin que `import screens` continue
|
||||
de fonctionner à l'identique.
|
||||
"""
|
||||
|
||||
from .widgets.registry import WIDGETS
|
||||
from .widgets.container_widgets import CONTAINER_WIDGETS
|
||||
from .widgets.layout_capable_widgets import LAYOUT_CAPABLE_WIDGETS
|
||||
from .widgets.fontawesome_icons import FONTAWESOME_ICONS
|
||||
from .widgets.widget_meta import widget_meta
|
||||
from .widgets.controls_with_values import controls_with_values
|
||||
from .widgets.data_definition_options import data_definition_options
|
||||
from .data_definitions.data_definition_options import data_definition_options
|
||||
|
||||
from .labels.trigger_labels import TRIGGER_LABELS
|
||||
from .labels.action_type_labels import ACTION_TYPE_LABELS
|
||||
from .labels.element_action_properties import (
|
||||
ELEMENT_ACTION_PROPERTIES, ELEMENT_ACTION_PROPERTY_LABELS,
|
||||
ELEMENT_SURBRILLANCE_VALUES, ELEMENT_SURBRILLANCE_LABELS,
|
||||
ELEMENT_DESACTIVE_VALUES, ELEMENT_DESACTIVE_LABELS,
|
||||
ELEMENT_ORIENTATION_VALUES, ELEMENT_ORIENTATION_LABELS,
|
||||
)
|
||||
from .labels.element_visibility import ELEMENT_VISIBILITY_VALUES, ELEMENT_VISIBILITY_LABELS
|
||||
@@ -78,7 +49,6 @@ from .flow.constants import (
|
||||
TRIGGER_EVENTS, CONDITION_OPERATORS, CONDITION_OPERATOR_LABELS, CLICKED_ROW_ID, LAST_INSERTED_ROW_ID,
|
||||
)
|
||||
|
||||
from .rendering.render_element_html import render_element_html
|
||||
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
|
||||
@@ -99,27 +69,13 @@ 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_screen_aspect import set_screen_aspect
|
||||
from .screens_repo.set_scene_size import set_scene_size
|
||||
from .screens_repo.set_screen_background_music import set_screen_background_music
|
||||
|
||||
from .elements.list_elements import list_elements
|
||||
from .elements.get_element import get_element
|
||||
from .elements.add_element import add_element
|
||||
from .elements.add_tab import add_tab
|
||||
from .elements.update_element_geometry import update_element_geometry
|
||||
from .elements.reorder_element import reorder_element
|
||||
from .elements.move_element_to_container import move_element_to_container
|
||||
from .elements.save_element_controls import save_element_controls
|
||||
from .elements.delete_element import delete_element
|
||||
from .elements.flow_nodes_referencing_element import flow_nodes_referencing_element
|
||||
from .elements.duplicate_element import duplicate_element
|
||||
from .elements.rename_element import rename_element
|
||||
from .elements.set_personnage_data import set_personnage_data
|
||||
|
||||
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
|
||||
@@ -132,19 +88,6 @@ 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.render_scene_object import render_scene_object
|
||||
from .scenes.flow_palette import TRIGGER_EVENTS_2D, ACTION_TYPE_LABELS_2D, OBJECT_ACTION_PROPERTIES
|
||||
from .elements.element_label import element_label
|
||||
|
||||
from .element_types.list_element_types import list_element_types
|
||||
from .element_types.get_element_type_by_template_screen import get_element_type_by_template_screen
|
||||
from .element_types.create_element_type import create_element_type
|
||||
from .element_types.update_element_type import update_element_type
|
||||
from .element_types.element_type_usage_count import element_type_usage_count
|
||||
from .element_types.delete_element_type import delete_element_type
|
||||
|
||||
from .legacy_actions.list_actions import list_actions
|
||||
from .legacy_actions.add_action import add_action
|
||||
from .legacy_actions.get_action import get_action
|
||||
from .legacy_actions.delete_action import delete_action
|
||||
|
||||
from .flow.ensure_flow_schema import ensure_flow_schema
|
||||
from .flow.list_flow_nodes import list_flow_nodes
|
||||
|
||||
Reference in New Issue
Block a user