DEADSOFTWARE

do not save/receive absolute paths in saves/network
[d2df-sdl.git] / src / game / g_game.pas
index ec7f8f29831e03151a1da5bf2f1227a134d51964..1e518ce8b4e2b0aed7d561d4d3c755e9abf13546 100644 (file)
@@ -4693,7 +4693,7 @@ begin
           //if newResPath = '' then
           begin
             //g_Game_SetLoadingText(_lc[I_LOAD_DL_RES], 0, False);
-            newResPath := g_Res_DownloadMapWAD(WadName, gWADHash);
+            newResPath := g_Res_DownloadMapWAD(ExtractFileName(WadName), gWADHash);
             if newResPath = '' then
             begin
               g_FatalError(_lc[I_NET_ERR_HASH]);
@@ -7249,16 +7249,24 @@ begin
 end;
 
 procedure g_TakeScreenShot;
-  var s: TStream; t: TDateTime; date, name: String;
+  var s: TStream; t: TDateTime; dir, date, name: String;
 begin
   if e_NoGraphics then Exit;
-  t := Now;
-  DateTimeToString(date, 'yyyy-mm-dd-hh-nn-ss', t);
-  name := 'screenshot-' + date + '.png';
   try
-    s := e_CreateResource(ScreenshotDirs, name);
-    e_MakeScreenshot(s, gScreenWidth, gScreenHeight);
-    g_Console_Add(Format(_lc[I_CONSOLE_SCREENSHOT], [name]))
+    t := Now;
+    dir := e_GetWriteableDir(ScreenshotDirs);
+    DateTimeToString(date, 'yyyy-mm-dd-hh-nn-ss', t);
+    name := e_CatPath(dir, 'screenshot-' + date + '.png');
+    s := createDiskFile(name);
+    try
+      e_MakeScreenshot(s, gScreenWidth, gScreenHeight);
+      s.Free;
+      g_Console_Add(Format(_lc[I_CONSOLE_SCREENSHOT], [name]))
+    except
+      g_Console_Add(Format(_lc[I_CONSOLE_ERROR_WRITE], [name]));
+      s.Free;
+      DeleteFile(name)
+    end
   except
     g_Console_Add('oh shit, i can''t create screenshot!')
   end