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
| Niveau | Pourcentage | Affichage |
|---|---|---|
| 0 | 0 % | 1 barre rouge |
| 1 | 25 % | 1 barre verte |
| 2 | 50 % | 2 barres vertes |
| 3 | 75 % | 3 barres vertes |
| 4 | 100 % | 4 barres vertes |
Chaque niveau = APDailyGoalSeconds / LevelNumber = 600 / 4 = 150 secondes (2 min 30).
[!NOTE] Un TODO dans le code signale que si
APDailyGoalSecondschange, 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éthode | Description |
|---|---|
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
| Composant | Emplacement | Rôle |
|---|---|---|
BatteryDisplayForRobot | Sur le robot 3D | Met à jour l’animation de la jauge du robot |
BatteryDisplayForMenuUI | Dans les menus | Met à jour la jauge UI |
BatteryBadgeDisplay | Badge/indicateur | Affiche le niveau sous forme de badge |