X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_saveload.pas;h=a7477581a189541fd1de6a9ea8f0530f44d99ef8;hb=b171ccb122f9084809e739b19baf68bba80a9dab;hp=dee199260879344aab173bd924a2a88af89631b7;hpb=20114d602d19e4e913ea1a7c22f2031bd7f54677;p=d2df-sdl.git diff --git a/src/game/g_saveload.pas b/src/game/g_saveload.pas index dee1992..a747758 100644 --- a/src/game/g_saveload.pas +++ b/src/game/g_saveload.pas @@ -1,9 +1,8 @@ -(* 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 - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * the Free Software Foundation, version 3 of the License ONLY. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -125,7 +124,7 @@ begin try if not utils.checkSign(st, 'DFSV') then begin - e_LogWritefln('GetSaveName: not a save file: ''%s''', [st], MSG_WARNING); + e_LogWritefln('GetSaveName: not a save file: ''%s''', [st], TMsgType.Warning); //raise XStreamError.Create('invalid save game signature'); exit; end; @@ -136,7 +135,7 @@ begin stlen := utils.readWord(st); if (stlen < 1) or (stlen > 64) then begin - e_LogWritefln('GetSaveName: not a save file: ''%s''', [st], MSG_WARNING); + e_LogWritefln('GetSaveName: not a save file: ''%s''', [st], TMsgType.Warning); //raise XStreamError.Create('invalid save game version'); exit; end; @@ -278,7 +277,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; @@ -317,7 +316,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 @@ -501,14 +500,26 @@ begin st.Free(); end; except + on e: EFileNotFoundException do + begin + g_Console_Add(_lc[I_GAME_ERROR_LOAD]); + g_Console_Add('LoadState Error: '+e.message); + e_WriteLog('LoadState Error: '+e.message, TMsgType.Warning); + gLoadGameMode := false; + result := false; + end; 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} + g_Console_Add('LoadState Error: '+e.message); + 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(); + result := false; + if gState <> STATE_MENU then + g_FatalError(_lc[I_GAME_ERROR_LOAD]) + else if not gameCleared then + g_Game_Free(); {$IF DEFINED(D2F_DEBUG)}e_WriteStackTrace(e.message);{$ENDIF} end; end;