X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_saveload.pas;h=ad438f89174172171fa0d05b6b174cc982c5cd20;hb=d7d166dc3cd287276202e862746208892c4cc89f;hp=dec46f1ec720c21b68354583873296986d5f161a;hpb=cde380b2a554f452f7c2e2c6694bc29ce597ece9;p=d2df-sdl.git diff --git a/src/game/g_saveload.pas b/src/game/g_saveload.pas index dec46f1..ad438f8 100644 --- a/src/game/g_saveload.pas +++ b/src/game/g_saveload.pas @@ -113,21 +113,33 @@ var 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); @@ -144,10 +156,9 @@ begin 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; @@ -267,7 +278,7 @@ begin 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; @@ -306,7 +317,7 @@ begin 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 @@ -493,8 +504,8 @@ begin 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; if not gameCleared then g_Game_Free();