Gamedata minor version

Matches Profiles, etc (including the funny "from the future" alert)
Also updates major VERSIONCHECK, so when this starts getting tested amongst the devteam it'll be explicitly not cross-compatible
This commit is contained in:
toaster 2022-12-14 18:06:21 +00:00
parent 42f4f28e06
commit e10df0ee68

View file

@ -4297,7 +4297,8 @@ void G_LoadGameSettings(void)
Color_cons_t[MAXSKINCOLORS].strvalue = Followercolor_cons_t[MAXSKINCOLORS+2].strvalue = NULL; Color_cons_t[MAXSKINCOLORS].strvalue = Followercolor_cons_t[MAXSKINCOLORS+2].strvalue = NULL;
} }
#define GD_VERSIONCHECK 0xBA5ED444 // Change every major version, as usual #define GD_VERSIONCHECK 0xBA5ED123 // Change every major version, as usual
#define GD_VERSIONMINOR 0 // Change every format update
// G_LoadGameData // G_LoadGameData
// Loads the main data file, which stores information such as emblems found, etc. // Loads the main data file, which stores information such as emblems found, etc.
@ -4306,6 +4307,7 @@ void G_LoadGameData(void)
size_t length; size_t length;
UINT32 i, j; UINT32 i, j;
UINT32 versionID; UINT32 versionID;
UINT8 versionMinor;
UINT8 rtemp; UINT8 rtemp;
//For records //For records
@ -4358,6 +4360,14 @@ void G_LoadGameData(void)
I_Error("Game data is not for Ring Racers v2.0.\nDelete %s(maybe in %s) and try again.", gamedatafilename, gdfolder); I_Error("Game data is not for Ring Racers v2.0.\nDelete %s(maybe in %s) and try again.", gamedatafilename, gdfolder);
} }
versionMinor = READUINT8(save_p);
if (versionMinor > GD_VERSIONMINOR)
{
Z_Free(savebuffer);
save_p = NULL;
I_Error("Game data is from the future! (expected %d, got %d)", GD_VERSIONMINOR, versionMinor);
}
gamedata->totalplaytime = READUINT32(save_p); gamedata->totalplaytime = READUINT32(save_p);
gamedata->matchesplayed = READUINT32(save_p); gamedata->matchesplayed = READUINT32(save_p);
@ -4512,7 +4522,7 @@ void G_SaveGameData(void)
return; return;
} }
length = (4+4+4+1+(MAXEMBLEMS+(MAXUNLOCKABLES*2)+MAXCONDITIONSETS)+4+4+2); length = (4+1+4+4+1+(MAXEMBLEMS+(MAXUNLOCKABLES*2)+MAXCONDITIONSETS)+4+4+2);
if (gamedata->challengegrid) if (gamedata->challengegrid)
{ {
length += gamedata->challengegridwidth * CHALLENGEGRIDHEIGHT; length += gamedata->challengegridwidth * CHALLENGEGRIDHEIGHT;
@ -4529,6 +4539,7 @@ void G_SaveGameData(void)
// Version test // Version test
WRITEUINT32(save_p, GD_VERSIONCHECK); // 4 WRITEUINT32(save_p, GD_VERSIONCHECK); // 4
WRITEUINT8(save_p, GD_VERSIONMINOR); // 1
WRITEUINT32(save_p, gamedata->totalplaytime); // 4 WRITEUINT32(save_p, gamedata->totalplaytime); // 4
WRITEUINT32(save_p, gamedata->matchesplayed); // 4 WRITEUINT32(save_p, gamedata->matchesplayed); // 4
WRITEUINT32(save_p, quickncasehash(timeattackfolder, 64)); WRITEUINT32(save_p, quickncasehash(timeattackfolder, 64));