Saves: implement isAutoSave for headers

git-svn-id: https://svn.eduke32.com/eduke32@6743 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
hendricks266 2018-03-08 03:55:17 +00:00
parent b80501b2c2
commit b437636528
3 changed files with 14 additions and 9 deletions

View file

@ -6803,7 +6803,7 @@ MAIN_LOOP_RESTART:
G_DrawRooms(myconnectindex, 65536); G_DrawRooms(myconnectindex, 65536);
g_screenCapture = 0; g_screenCapture = 0;
G_SavePlayerMaybeMulti(g_lastautosave); G_SavePlayerMaybeMulti(g_lastautosave, true);
g_quickload = &g_lastautosave; g_quickload = &g_lastautosave;
OSD_Printf("Saved: %s\n", g_lastautosave.path); OSD_Printf("Saved: %s\n", g_lastautosave.path);

View file

@ -176,6 +176,8 @@ static void ReadSaveGameHeaders_CACHE1D(CACHE1D_FIND_REC *f)
else else
msv.isOldVer = 0; msv.isOldVer = 0;
msv.isAutoSave = h.isAutoSave();
if (k >= 0 && h.savename[0] != '\0') if (k >= 0 && h.savename[0] != '\0')
{ {
memcpy(msv.brief.name, h.savename, ARRAY_SIZE(msv.brief.name)); memcpy(msv.brief.name, h.savename, ARRAY_SIZE(msv.brief.name));
@ -412,7 +414,7 @@ static void G_SavePalette(void)
} }
#endif #endif
int32_t G_SavePlayer(savebrief_t & sv) int32_t G_SavePlayer(savebrief_t & sv, bool isAutoSave)
{ {
#ifdef __ANDROID__ #ifdef __ANDROID__
G_SavePalette(); G_SavePalette();
@ -471,7 +473,7 @@ int32_t G_SavePlayer(savebrief_t & sv)
VM_OnEvent(EVENT_SAVEGAME, g_player[screenpeek].ps->i, screenpeek); VM_OnEvent(EVENT_SAVEGAME, g_player[screenpeek].ps->i, screenpeek);
// SAVE! // SAVE!
sv_saveandmakesnapshot(fil, sv.name, 0, 0, 0, 0); sv_saveandmakesnapshot(fil, sv.name, 0, 0, 0, 0, isAutoSave);
fclose(fil); fclose(fil);
@ -523,7 +525,7 @@ void G_LoadPlayerMaybeMulti(savebrief_t & sv)
} }
} }
void G_SavePlayerMaybeMulti(savebrief_t & sv) void G_SavePlayerMaybeMulti(savebrief_t & sv, bool isAutoSave)
{ {
CONFIG_WriteSetup(2); CONFIG_WriteSetup(2);
@ -534,7 +536,7 @@ void G_SavePlayerMaybeMulti(savebrief_t & sv)
} }
else else
{ {
G_SavePlayer(sv); G_SavePlayer(sv, isAutoSave);
} }
} }
@ -1315,7 +1317,7 @@ static void SV_AllocSnap(int32_t allocinit)
} }
// make snapshot only if spot < 0 (demo) // make snapshot only if spot < 0 (demo)
int32_t sv_saveandmakesnapshot(FILE *fil, char const *name, int8_t spot, int8_t recdiffsp, int8_t diffcompress, int8_t synccompress) int32_t sv_saveandmakesnapshot(FILE *fil, char const *name, int8_t spot, int8_t recdiffsp, int8_t diffcompress, int8_t synccompress, bool isAutoSave)
{ {
savehead_t h; savehead_t h;
@ -1338,6 +1340,8 @@ int32_t sv_saveandmakesnapshot(FILE *fil, char const *name, int8_t spot, int8_t
h.majorver = SV_MAJOR_VER; h.majorver = SV_MAJOR_VER;
h.minorver = SV_MINOR_VER; h.minorver = SV_MINOR_VER;
h.ptrsize = sizeof(intptr_t); h.ptrsize = sizeof(intptr_t);
if (isAutoSave)
h.ptrsize |= 1u<<7u;
h.bytever = BYTEVERSION; h.bytever = BYTEVERSION;
h.userbytever = ud.userbytever; h.userbytever = ud.userbytever;

View file

@ -96,6 +96,7 @@ struct menusave_t
{ {
savebrief_t brief; savebrief_t brief;
uint8_t isOldVer = 0; uint8_t isOldVer = 0;
uint8_t isAutoSave = 0;
}; };
extern savebrief_t g_lastautosave, g_lastusersave, g_freshload; extern savebrief_t g_lastautosave, g_lastusersave, g_freshload;
@ -111,13 +112,13 @@ int32_t sv_readdiff(int32_t fil);
uint32_t sv_writediff(FILE *fil); uint32_t sv_writediff(FILE *fil);
int32_t sv_loadheader(int32_t fil, int32_t spot, savehead_t *h); int32_t sv_loadheader(int32_t fil, int32_t spot, savehead_t *h);
int32_t sv_loadsnapshot(int32_t fil, int32_t spot, savehead_t *h); int32_t sv_loadsnapshot(int32_t fil, int32_t spot, savehead_t *h);
int32_t sv_saveandmakesnapshot(FILE *fil, char const *name, int8_t spot, int8_t recdiffsp, int8_t diffcompress, int8_t synccompress); int32_t sv_saveandmakesnapshot(FILE *fil, char const *name, int8_t spot, int8_t recdiffsp, int8_t diffcompress, int8_t synccompress, bool isAutoSave = false);
void sv_freemem(); void sv_freemem();
int32_t G_SavePlayer(savebrief_t & sv); int32_t G_SavePlayer(savebrief_t & sv, bool isAutoSave);
int32_t G_LoadPlayer(savebrief_t & sv); int32_t G_LoadPlayer(savebrief_t & sv);
int32_t G_LoadSaveHeaderNew(char const *fn, savehead_t *saveh); int32_t G_LoadSaveHeaderNew(char const *fn, savehead_t *saveh);
void ReadSaveGameHeaders(void); void ReadSaveGameHeaders(void);
void G_SavePlayerMaybeMulti(savebrief_t & sv); void G_SavePlayerMaybeMulti(savebrief_t & sv, bool isAutoSave = false);
void G_LoadPlayerMaybeMulti(savebrief_t & sv); void G_LoadPlayerMaybeMulti(savebrief_t & sv);
#ifdef YAX_ENABLE #ifdef YAX_ENABLE