DEADSOFTWARE

saves: fix incorrect map load after failed state load
[d2df-sdl.git] / src / game / g_saveload.pas
index 09f5076c9b919fc95d9f96a09f672f20193bc24b..9ab49931944e1b9e8a2051d68083ba1699a8642e 100644 (file)
@@ -180,7 +180,7 @@ begin
       //if (Length(gCurrentMapFileName) <> 0) then e_LogWritefln('SAVE: current map is ''%s''...', [gCurrentMapFileName]);
       utils.writeStr(st, gCurrentMapFileName);
       // Ïóòü ê êàðòå
-      utils.writeStr(st, gGameSettings.WAD);
+      utils.writeStr(st, ExtractFileName(gGameSettings.WAD));
       // Èìÿ êàðòû
       utils.writeStr(st, g_ExtractFileName(gMapInfo.Map));
       // Êîëè÷åñòâî èãðîêîâ
@@ -317,7 +317,9 @@ begin
 
       e_WriteLog('Loading saved game...', TMsgType.Notify);
 
-      {$IF DEFINED(D2F_DEBUG)}try{$ENDIF}
+{$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);
@@ -405,10 +407,7 @@ begin
         // Çàãðóçêà è çàïóñê êàðòû
         //FIXME: save/load `asMegawad`
         if not g_Game_StartMap(false{asMegawad}, WAD_Path+':\'+Map_Name, True, curmapfile) then
-        begin
-          g_FatalError(Format(_lc[I_GAME_ERROR_MAP_LOAD], [WAD_Path + ':\' + Map_Name]));
-          exit;
-        end;
+          raise Exception.Create(Format(_lc[I_GAME_ERROR_MAP_LOAD], [WAD_Path + ':\' + Map_Name]));
 
         // Íàñòðîéêè èãðîêîâ è áîòîâ
         g_Player_Init();
@@ -488,14 +487,14 @@ begin
         // done
         gLoadGameMode := false;
         result := true;
-      {$IF DEFINED(D2F_DEBUG)}
+{$IF DEFINED(D2F_DEBUG)}
       except
         begin
           errpos := LongWord(st.position);
           raise;
         end;
       end;
-      {$ENDIF}
+{$ENDIF}
     finally
       st.Free();
     end;