DEADSOFTWARE

cleanup: remove g_main.pas
[d2df-sdl.git] / src / game / g_saveload.pas
index a7477581a189541fd1de6a9ea8f0530f44d99ef8..32f6821770c20af0affaf213d2b5ee23853e6cc2 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, g_language;
+  e_log, e_res, g_language, g_options;
 
 const
   SAVE_SIGNATURE = $56534644; // 'DFSV'
@@ -101,9 +100,7 @@ end;
 
 function buildSaveName (n: Integer): AnsiString;
 begin
-  result := '';
-  if (n < 0) or (n > 65535) then exit;
-  result := formatstrf('%sSAVGAME%s.DAT', [DataDir, n]);
+  result := 'SAVGAME' + IntToStr(n) + '.DAT'
 end;
 
 
@@ -120,7 +117,7 @@ begin
   try
     // Îòêðûâàåì ôàéë ñîõðàíåíèé
     filename := buildSaveName(n);
-    st := openDiskFileRO(filename);
+    st := e_OpenResourceRO(SaveDirs, filename);
     try
       if not utils.checkSign(st, 'DFSV') then
       begin
@@ -172,7 +169,7 @@ var
 begin
   result := false;
   try
-    st := createDiskFile(filename);
+    st := e_CreateResource(SaveDirs, filename);
     try
       utils.writeSign(st, 'DFSV');
       utils.writeInt(st, Byte(SAVE_VERSION));
@@ -182,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));
       // Êîëè÷åñòâî èãðîêîâ
@@ -280,6 +277,7 @@ begin
         e_WriteLog('SaveState Error: '+e.message, TMsgType.Warning);
         if deleteOnError then DeleteFile(filename);
         {$IF DEFINED(D2F_DEBUG)}e_WriteStackTrace(e.message);{$ENDIF}
+e_WriteStackTrace(e.message);
         result := false;
       end;
   end;
@@ -311,7 +309,7 @@ begin
   result := false;
 
   try
-    st := openDiskFileRO(filename);
+    st := e_OpenResourceRO(SaveDirs, filename);
     try
       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');
@@ -404,7 +402,8 @@ begin
         g_Game_SetupScreenSize();
 
         // Çàãðóçêà è çàïóñê êàðòû
-        if not g_Game_StartMap(WAD_Path+':\'+Map_Name, True, curmapfile) then
+        //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;
@@ -528,16 +527,12 @@ end;
 
 function g_SaveGame (n: Integer; const aname: AnsiString): Boolean;
 begin
-  result := false;
-  if (n < 0) or (n > 65535) then exit;
   result := g_SaveGameTo(buildSaveName(n), aname, true);
 end;
 
 
 function g_LoadGame (n: Integer): Boolean;
 begin
-  result := false;
-  if (n < 0) or (n > 65535) then exit;
   result := g_LoadGameFrom(buildSaveName(n));
 end;