Gamedata: save SPB Attack times separately from normal Time Attack

Bumps gamedata version! Gamedata version 10 -> 11
This commit is contained in:
James R 2024-01-27 04:23:38 -08:00
parent 05d8d83dcc
commit ff07b92f18
3 changed files with 23 additions and 3 deletions

View file

@ -162,6 +162,7 @@ struct recorddata_t
{ {
UINT8 mapvisited; UINT8 mapvisited;
recordtimes_t timeattack; ///< Best times for Time Attack recordtimes_t timeattack; ///< Best times for Time Attack
recordtimes_t spbattack; ///< Best times for SPB Attack
}; };
#define KARTSPEED_AUTO -1 #define KARTSPEED_AUTO -1

View file

@ -536,7 +536,9 @@ void G_TickTimeStickerMedals(void)
void G_UpdateRecords(void) void G_UpdateRecords(void)
{ {
UINT8 earnedEmblems; UINT8 earnedEmblems;
recordtimes_t *record = &mapheaderinfo[gamemap-1]->records.timeattack; recordtimes_t *record = (modeattacking & ATTACKING_SPB) ?
&mapheaderinfo[gamemap-1]->records.spbattack :
&mapheaderinfo[gamemap-1]->records.timeattack;
if (modeattacking & ATTACKING_TIME) if (modeattacking & ATTACKING_TIME)
{ {
@ -4685,7 +4687,7 @@ void G_LoadGameSettings(void)
} }
#define GD_VERSIONCHECK 0xBA5ED123 // Change every major version, as usual #define GD_VERSIONCHECK 0xBA5ED123 // Change every major version, as usual
#define GD_VERSIONMINOR 10 // Change every format update #define GD_VERSIONMINOR 11 // Change every format update
// You can't rearrange these without a special format update // You can't rearrange these without a special format update
typedef enum typedef enum
@ -5073,6 +5075,16 @@ void G_LoadGameData(void)
dummyrecord.timeattack.time = (tic_t)READUINT32(save.p); dummyrecord.timeattack.time = (tic_t)READUINT32(save.p);
dummyrecord.timeattack.lap = (tic_t)READUINT32(save.p); dummyrecord.timeattack.lap = (tic_t)READUINT32(save.p);
if (versionMinor < 11)
{
memset(&dummyrecord.spbattack, 0, sizeof dummyrecord.spbattack);
}
else
{
dummyrecord.spbattack.time = (tic_t)READUINT32(save.p);
dummyrecord.spbattack.lap = (tic_t)READUINT32(save.p);
}
if (mapnum < nummapheaders && mapheaderinfo[mapnum]) if (mapnum < nummapheaders && mapheaderinfo[mapnum])
{ {
// Valid mapheader, time to populate with record data. // Valid mapheader, time to populate with record data.
@ -5084,6 +5096,8 @@ void G_LoadGameData(void)
(dummyrecord.mapvisited & MV_BEATEN) (dummyrecord.mapvisited & MV_BEATEN)
|| dummyrecord.timeattack.time != 0 || dummyrecord.timeattack.time != 0
|| dummyrecord.timeattack.lap != 0 || dummyrecord.timeattack.lap != 0
|| dummyrecord.spbattack.time != 0
|| dummyrecord.spbattack.lap != 0
) )
{ {
// Invalid, but we don't want to lose all the juicy statistics. // Invalid, but we don't want to lose all the juicy statistics.
@ -5687,6 +5701,8 @@ void G_SaveGameData(void)
WRITEUINT32(save.p, mapheaderinfo[i]->records.timeattack.time); WRITEUINT32(save.p, mapheaderinfo[i]->records.timeattack.time);
WRITEUINT32(save.p, mapheaderinfo[i]->records.timeattack.lap); WRITEUINT32(save.p, mapheaderinfo[i]->records.timeattack.lap);
WRITEUINT32(save.p, mapheaderinfo[i]->records.spbattack.time);
WRITEUINT32(save.p, mapheaderinfo[i]->records.spbattack.lap);
if (--numgamedatamapheaders == 0) if (--numgamedatamapheaders == 0)
break; break;
@ -5705,6 +5721,8 @@ void G_SaveGameData(void)
WRITEUINT32(save.p, unloadedmap->records.timeattack.time); WRITEUINT32(save.p, unloadedmap->records.timeattack.time);
WRITEUINT32(save.p, unloadedmap->records.timeattack.lap); WRITEUINT32(save.p, unloadedmap->records.timeattack.lap);
WRITEUINT32(save.p, unloadedmap->records.spbattack.time);
WRITEUINT32(save.p, unloadedmap->records.spbattack.lap);
if (--numgamedatamapheaders == 0) if (--numgamedatamapheaders == 0)
break; break;

View file

@ -3503,7 +3503,8 @@ void M_DrawTimeAttack(void)
if (currentMenu == &PLAY_TimeAttackDef) if (currentMenu == &PLAY_TimeAttackDef)
{ {
recordtimes_t *record = &mapheaderinfo[map]->records.timeattack; recorddata_t *rcp = &mapheaderinfo[map]->records;
recordtimes_t *record = cv_dummyspbattack.value ? &rcp->spbattack : &rcp->timeattack;
tic_t timerec = record->time; tic_t timerec = record->time;
tic_t laprec = record->lap; tic_t laprec = record->lap;
UINT32 timeheight = 82; UINT32 timeheight = 82;