Load games from yet-unwritten save files
This commit is contained in:
parent
380a64f989
commit
df456d85c2
|
@ -135,7 +135,7 @@
|
|||
//
|
||||
// G_game.C
|
||||
//
|
||||
#define GGSAVED "Game will save on exit"
|
||||
#define GGSAVED "Save file will be created on exit"
|
||||
|
||||
//
|
||||
// HU_stuff.C
|
||||
|
|
|
@ -924,11 +924,11 @@ void G_DoWorldDone (void)
|
|||
extern boolean setsizeneeded;
|
||||
void R_ExecuteSetViewSize (void);
|
||||
|
||||
char savename[256];
|
||||
int saveslotnumber;
|
||||
|
||||
void G_LoadGame (char* name)
|
||||
void G_LoadGame (int slot)
|
||||
{
|
||||
CGDstrcpy (savename, name);
|
||||
saveslotnumber = slot;
|
||||
gameaction = ga_loadgame;
|
||||
}
|
||||
|
||||
|
@ -940,11 +940,21 @@ void G_DoLoadGame (void)
|
|||
int i;
|
||||
int a,b,c;
|
||||
char vcheck[VERSIONSIZE];
|
||||
char savename[64];
|
||||
|
||||
gameaction = ga_nothing;
|
||||
|
||||
length = M_ReadFile (savename, &savebuffer);
|
||||
I_ReinitAfterError();
|
||||
/* Read data from yet-unsaved saves */
|
||||
if (CGD_DelayedSaves[saveslotnumber].data != NULL) {
|
||||
savebuffer = (void *)CGD_DelayedSaves[saveslotnumber].data;
|
||||
length = CGD_DelayedSaves[saveslotnumber].size;
|
||||
}
|
||||
else {
|
||||
sprintf(savename, "%s_%d.dsg", CGD_WADFileName, saveslotnumber);
|
||||
length = M_ReadFile (savename, &savebuffer);
|
||||
I_ReinitAfterError();
|
||||
}
|
||||
|
||||
save_p = savebuffer + SAVESTRINGSIZE;
|
||||
|
||||
if (length < 0)
|
||||
|
@ -982,7 +992,8 @@ void G_DoLoadGame (void)
|
|||
I_Error ("Bad savegame");
|
||||
|
||||
// done
|
||||
Z_Free (savebuffer);
|
||||
if (CGD_DelayedSaves[saveslotnumber].data == NULL)
|
||||
Z_Free (savebuffer);
|
||||
|
||||
if (setsizeneeded)
|
||||
R_ExecuteSetViewSize ();
|
||||
|
@ -1073,7 +1084,7 @@ boolean G_DoSaveGame (void)
|
|||
gameaction = ga_nothing;
|
||||
savedescription[0] = 0;
|
||||
|
||||
static char msg[40];
|
||||
static char msg[64];
|
||||
sprintf(msg, GGSAVED " (%d kB)", length >> 10);
|
||||
players[consoleplayer].message = msg;
|
||||
|
||||
|
|
|
@ -44,12 +44,11 @@ void G_DeferedPlayDemo (char* demo);
|
|||
|
||||
// Can be called by the startup code or M_Responder,
|
||||
// calls P_SetupLevel or W_EnterWorld.
|
||||
//void G_LoadGame (char* name);
|
||||
|
||||
void G_DoLoadGame (void);
|
||||
|
||||
// Called by M_Responder.
|
||||
void G_LoadGame (char* name);
|
||||
void G_LoadGame (int slot);
|
||||
void G_SaveGame (int slot, char* description);
|
||||
|
||||
void G_TimeDemo (char* name);
|
||||
|
|
|
@ -467,6 +467,14 @@ void M_ReadSaveStrings(void)
|
|||
|
||||
for (i = 0;i < load_end;i++)
|
||||
{
|
||||
/* Use the pending file write as a bypass */
|
||||
if (CGD_DelayedSaves[i].data != NULL) {
|
||||
memcpy(savegamestrings[i], CGD_DelayedSaves[i].data,
|
||||
SAVESTRINGSIZE);
|
||||
LoadMenu[i].status = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
sprintf(name, "%s_%d.dsg", CGD_WADFileName, i);
|
||||
memcpy(fc_path, u"\\\\fls0\\", 14);
|
||||
for (j = 0; name[j]; j++)
|
||||
|
@ -537,9 +545,7 @@ void M_DrawSaveLoadBorder(int x,int y,int height,int count)
|
|||
//
|
||||
void M_LoadSelect(int choice)
|
||||
{
|
||||
char name[64];
|
||||
sprintf(name, "%s_%d.dsg", CGD_WADFileName, choice);
|
||||
G_LoadGame (name);
|
||||
G_LoadGame (choice);
|
||||
M_ClearMenus ();
|
||||
}
|
||||
|
||||
|
|
|
@ -165,7 +165,7 @@ void Z_Free (const void* ptr)
|
|||
|
||||
if (block->id != ZONEID)
|
||||
{
|
||||
I_Error ("Z_Free: freed a pointer without ZONEID");
|
||||
I_Error ("Z_Free: freed a pointer without ZONEID: %p", ptr);
|
||||
}
|
||||
|
||||
if (block->user > (void **)0x100)
|
||||
|
|
Loading…
Reference in New Issue