DEADSOFTWARE

save/load UI cosmetix
[d2df-sdl.git] / src / game / g_saveload.pas
index 4391bf51b1bda3f9b76d5b02beb706ddf46c4a05..dee199260879344aab173bd924a2a88af89631b7 100644 (file)
@@ -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], MSG_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], MSG_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;
@@ -294,7 +305,9 @@ var
   i: Integer;
   gameCleared: Boolean = false;
   curmapfile: AnsiString = '';
+  {$IF DEFINED(D2F_DEBUG)}
   errpos: LongWord = 0;
+  {$ENDIF}
 begin
   result := false;
 
@@ -306,7 +319,7 @@ begin
 
       e_WriteLog('Loading saved game...', MSG_NOTIFY);
 
-      try
+      {$IF DEFINED(D2F_DEBUG)}try{$ENDIF}
         //g_Game_Free(false); // don't free textures for the same map
         g_Game_ClearLoading();
         g_Game_SetLoadingText(_lc[I_LOAD_SAVE_FILE], 0, False);
@@ -476,12 +489,14 @@ begin
         // done
         gLoadGameMode := false;
         result := true;
+      {$IF DEFINED(D2F_DEBUG)}
       except
         begin
           errpos := LongWord(st.position);
           raise;
         end;
       end;
+      {$ENDIF}
     finally
       st.Free();
     end;