fix G_MBFSaveGameName and save compatibility

This commit is contained in:
Roman Fomin 2021-05-31 14:55:35 +07:00
parent 6cde55c9bd
commit d706d2a7d4
5 changed files with 26 additions and 11 deletions

View File

@ -1496,9 +1496,11 @@ char* G_SaveGameName(int slot)
return M_StringJoin(basesavegame, DIR_SEPARATOR_S, buf, NULL);
}
void G_MBFSaveGameName(char *name, int slot)
char* G_MBFSaveGameName(int slot)
{
sprintf(name, "%s/%.7s%d.dsg", basesavegame, "MBFSAV", slot);
char buf[16] = {0};
sprintf(buf, "MBFSAV%d.dsg", slot);
return M_StringJoin(basesavegame, DIR_SEPARATOR_S, buf, NULL);
}
// killough 12/98:
@ -1548,7 +1550,7 @@ static void G_DoSaveGame(void)
memset (name2,0,sizeof(name2));
// killough 2/22/98: "proprietary" version string :-)
sprintf (name2,VERSIONID,MBF21VERSION);
sprintf (name2,VERSIONID,MBFVERSION);
memcpy (save_p, name2, VERSIONSIZE);
save_p += VERSIONSIZE;
@ -1652,7 +1654,7 @@ static void G_DoLoadGame(void)
// skip the description field
// killough 2/22/98: "proprietary" version string :-)
sprintf (vcheck,VERSIONID,MBF21VERSION);
sprintf (vcheck,VERSIONID,MBFVERSION);
// killough 2/22/98: Friendly savegame version difference message
if (!forced_loadgame && strncmp((char *) save_p, vcheck, VERSIONSIZE))

View File

@ -58,7 +58,7 @@ void G_Ticker(void);
void G_ScreenShot(void);
void G_ReloadDefaults(void); // killough 3/1/98: loads game defaults
char *G_SaveGameName(int); // killough 3/22/98: sets savegame filename
void G_MBFSaveGameName(char *,int); // MBF savegame filename
char *G_MBFSaveGameName(int); // MBF savegame filename
void G_SetFastParms(int); // killough 4/10/98: sets -fast parameters
void G_DoNewGame(void);
void G_DoReborn(int playernum);

View File

@ -867,7 +867,8 @@ void M_LoadSelect(int choice)
if (access(name, F_OK) != 0)
{
G_MBFSaveGameName(name, choice);
if (name) (free)(name);
name = G_MBFSaveGameName(choice);
saveg_compat = saveg_mbf;
}
@ -970,8 +971,9 @@ void M_ReadSaveStrings(void)
if (!fp)
{ // Ty 03/27/98 - externalized:
G_MBFSaveGameName(name, i);
name = G_MBFSaveGameName(i);
fp = fopen(name,"rb");
if (name) (free)(name);
if (!fp)
{
strcpy(&savegamestrings[i][0],s_EMPTYSTRING);

View File

@ -118,10 +118,11 @@ typedef enum {
pr_dropoff, // #60
pr_randomjump, // #61
pr_defect, // #62
pr_mbf21, // #63
// End of new entries
NUMPRCLASS // MUST be last item in list
NUMPRCLASS, // MUST be last item in list
pr_mbf21, // #63
} pr_class_t;
// The random number generator's state.

View File

@ -345,8 +345,15 @@ static void saveg_read_mobj_t(mobj_t *str)
// int flags;
str->flags = saveg_read32();
if (saveg_compat == saveg_mbf21)
{
// [Woof!]: mbf21: int flags2;
//str->flags2 = saveg_read32();
str->flags2 = saveg_read32();
}
else
{
str->flags2 = mobjinfo[str->type].flags2;
}
// int intflags
str->intflags = saveg_read32();
@ -526,8 +533,11 @@ static void saveg_write_mobj_t(mobj_t *str)
// int flags;
saveg_write32(str->flags);
if (saveg_compat == saveg_mbf21)
{
// [Woof!]: mbf21: int flags2;
// saveg_write32(str->flags2);
saveg_write32(str->flags2);
}
// int intflags;
saveg_write32(str->intflags);