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]
ActivityDataManagerne couvre que APA et AS. Les activités PA (Pause Active) et RC (Retour au Calme) contournentActivityDataManageret ont chacune leur propre classe statiqueUserSettingspour 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 :
| Valeur | Type |
|---|---|
VideoAPA, InteractifAPA, ArchitecteAPA | Modes APA (physique + cognitif) |
VideoAS, InteractifChoixReponseAS, InteractifClavierAS, PenduAS | Modes AS (cognitif pur) |
[!WARNING]
ActivityDataManager.asmdef(Commons/ActivityDataManager/) etDynamicMenu.asmdefdéfinissaient tous les deux un enumModedans le namespace global → conflit CS0433. Solution :DynamicMenuutilise maintenantLegacyMode. En cas de conflit résiduel, utiliserActivityDataManager.SetModeAPA(bool isVideo)à la place.
Variables stockées
| Catégorie | Variables | Description |
|---|---|---|
| Général | Mode, IseSilent, UsePresence | Type de jeu, mode silencieux, tirage au sort des présents |
| APA | NbrPropositionsReponse, NbrRepetitions | Nombre de choix QCM, cycles d’exercices |
| AS | DelaiReponse, NbreQuestions | Temps de réponse (mode vidéo), quota de questions |
| Architecte | MouvementsSelection, ClasseSelection, nbreArchitecte | Données pour le mode où l’élève crée sa propre chorégraphie |
| Contenu | JsonFiles, TitreActivity, ConsigneActivity, AideMemoireActivity | Textes et fichiers de questions à charger |
| Animations | TagsApmv, TagsApl | Tags utilisés par le moteur d’animation pour choisir le type de mouvement (voir APL / APMV ci-dessous) |
Méthodes importantes
| Méthode | Description |
|---|---|
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égorie | Variables | Description |
|---|---|---|
| Identité | PlayerUserName, PlayerFirstName, PlayerPlayfabID, ProfilType | Qui est connecté (Professeur ou Élève) et son identifiant cloud |
| Économie | PlayerDB, DBFromClass, DBProf | Solde de Dynamo-Blocs du joueur |
| État | IsPresenceDone, IsModeExploration, IsConnected | Flags de sécurité (ex. empêche de lancer un jeu sans avoir fait l’appel) |
| Statistiques | TodayAPL, TodayAPMV, Activite, TypeActivite | Compteurs journaliers pour la batterie d’activité physique |
| Cosmétiques | Personnalisation, Boutique | Items équipés et possédés en mémoire vive |
Méthode clé
| Méthode | Description |
|---|---|
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
| Classe | Variables / Rôle |
|---|---|
Student | Un élève individuel : studentID, nom, prénom, isPresent, et son avatar (PersonnalisationData) pour générer son personnage 3D au tableau. |
StudentsData | Le conteneur de la classe entière : tableau Student[] students. |
Méthodes clés
| Méthode | Description |
|---|---|
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.
| Sigle | Signification | Rôle dans le code |
|---|---|---|
| APMV | Activité Physique Modérée à Vigoureuse | Phase d’effort : animations cardio (sauts, courses, jumping jacks). Tags APMV + activité courante (APA ou AP). |
| APL | Activité Physique Légère | Phase 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.TodayAPMVetPlayerData.TodayAPL(en secondes) alimentent la batterie d’AP pour l’objectif des 10 minutes.