index dec46f1ec720c21b68354583873296986d5f161a..194b8337a06813310aacb4a7b39a808fbdc8da02 100644 (file)
--- a/src/game/g_saveload.pas
+++ b/src/game/g_saveload.pas
-(* Copyright (C) DooM 2D:Forever Developers
+(* Copyright (C) Doom 2D: Forever Developers
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
st: TStream = nil;
ver: Byte;
stlen: Word;
+ filename: AnsiString;
begin
valid := false;
result := '';
if (n < 0) or (n > 65535) then exit;
try
// Îòêðûâàåì ôàéë ñîõðàíåíèé
- st := openDiskFileRO(buildSaveName(n));
+ filename := buildSaveName(n);
+ st := openDiskFileRO(filename);
try
- if not utils.checkSign(st, 'DFSV') then raise XStreamError.Create('invalid save game signature');
+ if not utils.checkSign(st, 'DFSV') then
+ begin
+ e_LogWritefln('GetSaveName: not a save file: ''%s''', [st], TMsgType.Warning);
+ //raise XStreamError.Create('invalid save game signature');
+ exit;
+ end;
ver := utils.readByte(st);
if (ver < 7) then
begin
utils.readLongWord(st); // section size
stlen := utils.readWord(st);
- if (stlen < 1) or (stlen > 64) then raise XStreamError.Create('invalid save game version');
+ if (stlen < 1) or (stlen > 64) then
+ begin
+ e_LogWritefln('GetSaveName: not a save file: ''%s''', [st], TMsgType.Warning);
+ //raise XStreamError.Create('invalid save game version');
+ exit;
+ end;
// Èìÿ ñýéâà
SetLength(result, stlen);
st.ReadBuffer(result[1], stlen);
st.Free();
end;
except
- on e: Exception do
begin
- e_WriteLog('GetSaveName Error: '+e.message, MSG_WARNING);
- {$IF DEFINED(D2F_DEBUG)}e_WriteStackTrace(e.message);{$ENDIF}
+ //e_WriteLog('GetSaveName Error: '+e.message, MSG_WARNING);
+ //{$IF DEFINED(D2F_DEBUG)}e_WriteStackTrace(e.message);{$ENDIF}
result := '';
end;
end;
begin
st.Free();
g_Console_Add(_lc[I_GAME_ERROR_SAVE]);
- e_WriteLog('SaveState Error: '+e.message, MSG_WARNING);
+ e_WriteLog('SaveState Error: '+e.message, TMsgType.Warning);
if deleteOnError then DeleteFile(filename);
{$IF DEFINED(D2F_DEBUG)}e_WriteStackTrace(e.message);{$ENDIF}
result := false;
if not utils.checkSign(st, 'DFSV') then raise XStreamError.Create('invalid save game signature');
if (utils.readByte(st) <> SAVE_VERSION) then raise XStreamError.Create('invalid save game version');
- e_WriteLog('Loading saved game...', MSG_NOTIFY);
+ e_WriteLog('Loading saved game...', TMsgType.Notify);
{$IF DEFINED(D2F_DEBUG)}try{$ENDIF}
//g_Game_Free(false); // don't free textures for the same map
on e: Exception do
begin
g_Console_Add(_lc[I_GAME_ERROR_LOAD]);
- e_WriteLog('LoadState Error: '+e.message, MSG_WARNING);
- {$IF DEFINED(D2F_DEBUG)}e_LogWritefln('stream error position: 0x%08x', [errpos], MSG_WARNING);{$ENDIF}
+ e_WriteLog('LoadState Error: '+e.message, TMsgType.Warning);
+ {$IF DEFINED(D2F_DEBUG)}e_LogWritefln('stream error position: 0x%08x', [errpos], TMsgType.Warning);{$ENDIF}
gLoadGameMode := false;
- result := true;
+ result := false;
if not gameCleared then g_Game_Free();
{$IF DEFINED(D2F_DEBUG)}e_WriteStackTrace(e.message);{$ENDIF}
end;