@@ -99,6 +99,11 @@ void DoTelemetry(STelemetryData* pTelemetry)
99
99
pTelemetry->Previous .Game .State = pTelemetry->Current .Game .State ;
100
100
}
101
101
102
+ // Trackmania 2020 updates the telemetry data at least once while we are in the menu.
103
+ // Let's ignore them.
104
+ if (pTelemetry->Current .Game .State == STelemetry::EState_Menus)
105
+ return ;
106
+
102
107
// Race state
103
108
if (pTelemetry->Current .Race .State != pTelemetry->Previous .Race .State )
104
109
{
@@ -268,7 +273,7 @@ void DoTelemetry(STelemetryData* pTelemetry)
268
273
{
269
274
if (pTelemetry->Current .Header .Version >= 3 )
270
275
{
271
- uCheckpointsPerLap++; // In Trackmania 2020, the finish is not a checkpoint
276
+ uCheckpointsPerLap++; // In Trackmania 2020, the finish is not a checkpoint (bug?)
272
277
273
278
if (uNumberOfLaps == 0 ) // Since Trackmania 2020 supports this data field,
274
279
uNumberOfLaps = 1 ; // we can set it to 1 if the value is 0 (no lap race)
@@ -575,9 +580,9 @@ void InitTelemetryData(STelemetryData* pTelemetry)
575
580
memset (&pTelemetry->Previous , 0 , sizeof (pTelemetry->Previous ));
576
581
577
582
// Set all variables that can be zero at startup to a different value
578
- pTelemetry->Previous .Game .State = (STelemetry::EGameState)-1 ;
583
+ pTelemetry->Previous .Game .State = (STelemetry::EGameState)-16 ;
579
584
580
- pTelemetry->Previous .Race .State = (STelemetry::ERaceState)-1 ;
585
+ pTelemetry->Previous .Race .State = (STelemetry::ERaceState)-16 ;
581
586
pTelemetry->Previous .Race .Time = (Nat32)-2 ; // -1 is a regular value
582
587
pTelemetry->Previous .Race .NbRespawns = (Nat32)-2 ; // -1 is a regular value
583
588
pTelemetry->Previous .Race .NbCheckpoints = (Nat32)-1 ;
0 commit comments