Accueil Github ↗
Itération 3

Flux de données

Comment les données circulent entre les managers, l'UI et le backend : ActivityDataManager, PlayerData et StudentListData.

Trois classes statiques forment l’épine dorsale du flux de données dans Cogni-Actif. Aucune n’est un MonoBehaviour — elles flottent au-dessus de toutes les scènes et restent accessibles partout dans le code.

Menu de config → ActivityDataManager → Scène de jeu (GameManager lit les params)   [APA, AS]

                                         PlayerData (état global du joueur)

Menu de config → UserSettings → Scène de jeu                                        [PA, RC]

[!WARNING] ActivityDataManager ne couvre que APA et AS. Les activités PA (Pause Active) et RC (Retour au Calme) contournent ActivityDataManager et ont chacune leur propre classe statique UserSettings pour passer les paramètres entre le menu de config et la scène de jeu. C’est un héritage de l’architecture de chaque module — à ne pas confondre avec le flux APA/AS décrit ci-dessous.

ActivityDataManager

Sert de passerelle entre les menus de configuration et les scènes de jeu pour APA et AS uniquement. Quand l’enseignant règle une activité (temps, difficulté, fichiers JSON), toutes ces valeurs s’accumulent ici. Le GameManager de la scène les lit au démarrage pour savoir comment configurer la partie.

Énumération Mode

Liste tous les formats de jeu disponibles :

ValeurType
VideoAPA, InteractifAPA, ArchitecteAPAModes APA (physique + cognitif)
VideoAS, InteractifChoixReponseAS, InteractifClavierAS, PenduASModes AS (cognitif pur)

[!WARNING] ActivityDataManager.asmdef (Commons/ActivityDataManager/) et DynamicMenu.asmdef définissaient tous les deux un enum Mode dans le namespace global → conflit CS0433. Solution : DynamicMenu utilise maintenant LegacyMode. En cas de conflit résiduel, utiliser ActivityDataManager.SetModeAPA(bool isVideo) à la place.

Variables stockées

CatégorieVariablesDescription
GénéralMode, IseSilent, UsePresenceType de jeu, mode silencieux, tirage au sort des présents
APANbrPropositionsReponse, NbrRepetitionsNombre de choix QCM, cycles d’exercices
ASDelaiReponse, NbreQuestionsTemps de réponse (mode vidéo), quota de questions
ArchitecteMouvementsSelection, ClasseSelection, nbreArchitecteDonnées pour le mode où l’élève crée sa propre chorégraphie
ContenuJsonFiles, TitreActivity, ConsigneActivity, AideMemoireActivityTextes et fichiers de questions à charger
AnimationsTagsApmv, TagsAplTags utilisés par le moteur d’animation pour choisir le type de mouvement (voir APL / APMV ci-dessous)

Méthodes importantes

MéthodeDescription
ResetTags()Remet les listes d’animation à leur état par défaut (APA + APMV pour l’effort, APA + APL pour le repos) pour éviter qu’un réglage d’activité précédente ne persiste.
AddSilentTag()Si IseSilent est vrai, ajoute le tag Silent aux animations pour choisir des mouvements sans bruit (étirements plutôt que sauts).

PlayerData

Classe statique qui stocke l’état du joueur connecté. N’importe quel script peut y accéder via PlayerData.PlayerDB ou PlayerData.TodayAPL sans recherche de composant.

Variables stockées

CatégorieVariablesDescription
IdentitéPlayerUserName, PlayerFirstName, PlayerPlayfabID, ProfilTypeQui est connecté (Professeur ou Élève) et son identifiant cloud
ÉconomiePlayerDB, DBFromClass, DBProfSolde de Dynamo-Blocs du joueur
ÉtatIsPresenceDone, IsModeExploration, IsConnectedFlags de sécurité (ex. empêche de lancer un jeu sans avoir fait l’appel)
StatistiquesTodayAPL, TodayAPMV, Activite, TypeActiviteCompteurs journaliers pour la batterie d’activité physique
CosmétiquesPersonnalisation, BoutiqueItems équipés et possédés en mémoire vive

Méthode clé

MéthodeDescription
ClearPlayerData()Remet toutes les variables à zéro. À appeler à la déconnexion pour qu’un nouvel utilisateur sur la même tablette ne récupère pas les données du précédent.

StudentListData

Deux classes [Serializable] qui modélisent une classe scolaire. Contrairement à PlayerData, elles ne sont pas statiques — elles se convertissent en JSON pour la sauvegarde cloud (PlayFab) ou locale (PlayerPrefs).

Structure

ClasseVariables / Rôle
StudentUn élève individuel : studentID, nom, prénom, isPresent, et son avatar (PersonnalisationData) pour générer son personnage 3D au tableau.
StudentsDataLe conteneur de la classe entière : tableau Student[] students.

Méthodes clés

MéthodeDescription
GetPresentStudents()Renvoie uniquement les élèves marqués isPresent. Utilisé par les mini-jeux pour le tirage au sort.
GetPresentStudentsName()Même filtre, mais formate directement une liste de textes pour l’interface (ex. “Jean D.”).
RangeStudentsByFirstName()Trie le tableau par prénom, pour que la liste de présence de l’enseignant soit toujours ordonnée.

APL / APMV

Ces deux sigles désignent les deux phases d’intensité qui structurent les exercices physiques dans Cogni-Actif.

SigleSignificationRôle dans le code
APMVActivité Physique Modérée à VigoureusePhase d’effort : animations cardio (sauts, courses, jumping jacks). Tags APMV + activité courante (APA ou AP).
APLActivité Physique LégèrePhase de récupération / repos : animations douces (étirements, marche sur place). Tags APL + activité courante.

En pratique, une séance APA ou AP alterne des intervalles APMV (effort) et APL (récup) — pattern inspiré du Tabata. Le moteur d’animation filtre la banque AnimationData par tags pour ne pioche que les mouvements du bon niveau d’intensité.

ActivityDataManager.TagsApmv et TagsApl stockent ces listes de tags. ResetTags() les remet à leurs valeurs par défaut entre deux activités pour éviter qu’un mode silencieux précédent ne persiste.

[!NOTE] Les compteurs journaliers PlayerData.TodayAPMV et PlayerData.TodayAPL (en secondes) alimentent la batterie d’AP pour l’objectif des 10 minutes.