DEADSOFTWARE

render: move screenshorts into render
[d2df-sdl.git] / src / game / g_saveload.pas
index 4e5697465bfc8b8c42ede7cc174ebc3e2dc07742..003c58b4df7f5be2923be888ebe0bdb3881ded3f 100644 (file)
@@ -18,8 +18,7 @@ unit g_saveload;
 interface
 
 uses
-  SysUtils, Classes,
-  e_graphics, g_phys, g_textures;
+  SysUtils, Classes, g_phys, g_textures;
 
 
 function g_GetSaveName (n: Integer; out valid: Boolean): AnsiString;
@@ -39,9 +38,9 @@ implementation
 uses
   MAPDEF, utils, xstreams,
   g_game, g_items, g_map, g_monsters, g_triggers,
-  g_basic, g_main, Math, wadreader,
+  g_basic, Math, wadreader,
   g_weapons, g_player, g_console,
-  e_log, e_res, g_language;
+  e_log, e_res, g_language, g_options;
 
 const
   SAVE_SIGNATURE = $56534644; // 'DFSV'
@@ -180,7 +179,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));
       // Êîëè÷åñòâî èãðîêîâ
@@ -194,7 +193,7 @@ begin
       // Ëèìèò âðåìåíè
       utils.writeInt(st, Word(gGameSettings.TimeLimit));
       // Ëèìèò î÷êîâ
-      utils.writeInt(st, Word(gGameSettings.GoalLimit));
+      utils.writeInt(st, Word(gGameSettings.ScoreLimit));
       // Ëèìèò æèçíåé
       utils.writeInt(st, Byte(gGameSettings.MaxLives));
       // Èãðîâûå îïöèè
@@ -291,7 +290,7 @@ var
   WAD_Path, Map_Name: AnsiString;
   nPlayers: Integer;
   Game_Type, Game_Mode, Game_MaxLives: Byte;
-  Game_TimeLimit, Game_GoalLimit: Word;
+  Game_TimeLimit, Game_ScoreLimit: Word;
   Game_Time, Game_Options: Cardinal;
   Game_CoopMonstersKilled,
   Game_CoopSecretsFound,
@@ -317,7 +316,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);
@@ -351,7 +352,7 @@ begin
         // Ëèìèò âðåìåíè
         Game_TimeLimit := utils.readWord(st);
         // Ëèìèò î÷êîâ
-        Game_GoalLimit := utils.readWord(st);
+        Game_ScoreLimit := utils.readWord(st);
         // Ëèìèò æèçíåé
         Game_MaxLives := utils.readByte(st);
         // Èãðîâûå îïöèè
@@ -393,21 +394,16 @@ begin
           gGameSettings.GameMode := Game_Mode;
           gSwitchGameMode := Game_Mode;
           gGameSettings.TimeLimit := Game_TimeLimit;
-          gGameSettings.GoalLimit := Game_GoalLimit;
+          gGameSettings.ScoreLimit := Game_ScoreLimit;
           gGameSettings.MaxLives := IfThen(Game_Mode = GM_CTF, 0, Game_MaxLives);
           gGameSettings.Options := Game_Options;
         end;
         g_Game_ExecuteEvent('ongamestart');
 
-        // Óñòàíîâêà ðàçìåðîâ îêîí èãðîêîâ
-        g_Game_SetupScreenSize();
-
         // Çàãðóçêà è çàïóñê êàðòû
-        if not g_Game_StartMap(WAD_Path+':\'+Map_Name, True, curmapfile) then
-        begin
-          g_FatalError(Format(_lc[I_GAME_ERROR_MAP_LOAD], [WAD_Path + ':\' + Map_Name]));
-          exit;
-        end;
+        //FIXME: save/load `asMegawad`
+        if not g_Game_StartMap(false{asMegawad}, WAD_Path+':\'+Map_Name, True, curmapfile) then
+          raise Exception.Create(Format(_lc[I_GAME_ERROR_MAP_LOAD], [WAD_Path + ':\' + Map_Name]));
 
         // Íàñòðîéêè èãðîêîâ è áîòîâ
         g_Player_Init();
@@ -487,14 +483,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;