Accueil Github ↗
Itération 3

Batterie d'activité physique

BatterySystemCore : conversion secondes → niveau 0-4, pourcentage, détection de passage de niveau et DailyGoalManager pour l'enregistrement en temps réel.

Le système de batterie représente la progression de l’élève vers son objectif quotidien de 10 minutes d’activité physique (Constante.APDailyGoalSeconds = 600).

BatterySystemCore

Classe statique de calcul pur. Lit PlayerData.TodayAPL + PlayerData.TodayAPMV pour connaître le temps total du jour.

Niveaux

NiveauPourcentageAffichage
00 %1 barre rouge
125 %1 barre verte
250 %2 barres vertes
375 %3 barres vertes
4100 %4 barres vertes

Chaque niveau = APDailyGoalSeconds / LevelNumber = 600 / 4 = 150 secondes (2 min 30).

[!NOTE] Un TODO dans le code signale que si APDailyGoalSeconds change, le seuil par niveau devrait s’adapter automatiquement. Pour l’instant, chaque niveau est fixé à 2 min 30.

Un niveau 5 “supercharge” est partiellement prévu dans le code (code commenté) mais non implémenté.

Méthodes

MéthodeDescription
GetBatteryPercentage(float physicalActivity)(secondes * 100) / 600. Plafonné à 100.
GetBatteryLevel()Lit PlayerData.TodayAPL + TodayAPMV. Retourne 0-4.
GetBatteryLevel(float physicalActivity)Surcharge avec valeur explicite.
GetLevelReached(int oldAPTime, int newAPTime)Retourne le nombre de nouveaux niveaux franchis. Si > 0, émet OnBatteryLevelChanged.
IsBatteryComplete(int oldAPTime, int newAPTime)true si le niveau passe au-dessus de 4 et était sous 4 avant — détecte le franchissement de l’objectif.

Événement

static event Action<int> OnBatteryLevelChanged : déclenché par GetLevelReached quand le niveau monte. Les composants d’affichage (robot, menus) s’y abonnent pour mettre à jour leur visuel.

DailyGoalManager

Gère l’enregistrement du temps d’AP en temps réel pendant les activités. Appelé par les GameManager à la fin de chaque intervalle via AddApmv(seconds) ou AddApl(seconds).

Met à jour PlayerData.TodayAPMV/TodayAPL en mémoire et sauvegarde dans les PlayerPrefs (pour survivre à un crash) via les clés de PlayerPrefsReferencer.

Composants d’affichage

ComposantEmplacementRôle
BatteryDisplayForRobotSur le robot 3DMet à jour l’animation de la jauge du robot
BatteryDisplayForMenuUIDans les menusMet à jour la jauge UI
BatteryBadgeDisplayBadge/indicateurAffiche le niveau sous forme de badge