From 9034e63d857ef01baa7d0c1aca9f45eaa1d0fada Mon Sep 17 00:00:00 2001 From: Stas'M Date: Fri, 18 May 2018 18:23:59 +0300 Subject: [PATCH] Res Downloader: Better handle download cancel --- src/game/g_game.pas | 2 +- src/game/g_res_downloader.pas | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/game/g_game.pas b/src/game/g_game.pas index 3accde9..81eade6 100644 --- a/src/game/g_game.pas +++ b/src/game/g_game.pas @@ -4527,7 +4527,7 @@ begin gWADHash := MD5File(MapsDir + NewWAD); g_Game_LoadWAD(NewWAD); end else - // hash recieved in MC_RECV_GameEvent -> NET_EV_MAPSTART + // hash received in MC_RECV_GameEvent -> NET_EV_MAPSTART g_Game_ClientWAD(NewWAD, gWADHash); end else ResName := Map; diff --git a/src/game/g_res_downloader.pas b/src/game/g_res_downloader.pas index fcb4ad9..78b0b28 100644 --- a/src/game/g_res_downloader.pas +++ b/src/game/g_res_downloader.pas @@ -140,7 +140,8 @@ begin begin mapData := MapDataFromMsgStream(msgStream); msgStream.Free; - end; + end else + mapData.FileSize := 0; for i := 0 to High(mapData.ExternalResources) do begin @@ -156,6 +157,9 @@ begin MC_SEND_ResRequest(mapData.ExternalResources[i].Name); msgStream := g_Net_Wait_Event(NET_MSG_RES_RESPONSE); + if msgStream = nil then + continue; + resData := ResDataFromMsgStream(msgStream); resStream := createDiskFile(GameDir+'/wads/'+mapData.ExternalResources[i].Name); @@ -168,6 +172,8 @@ begin end; Result := SaveWAD(MapsDir, ExtractFileName(FileName), mapData.FileData); + if mapData.FileSize = 0 then + DeleteFile(Result); end; end. -- 2.29.2