fix DownloadWorkshopItemAsync

This commit is contained in:
Evil Factory
2022-05-17 20:37:51 -03:00
parent 74bf5d12ca
commit 88dedcf9c1
@@ -19,6 +19,7 @@ namespace Barotrauma
public LuaCsAction Callback; public LuaCsAction Callback;
} }
double lastTimeChecked = 0;
List<WorkshopItemDownload> itemsBeingDownloaded = new List<WorkshopItemDownload>(); List<WorkshopItemDownload> itemsBeingDownloaded = new List<WorkshopItemDownload>();
public LuaCsSteam() public LuaCsSteam()
@@ -26,7 +27,7 @@ namespace Barotrauma
} }
private async void DownloadWorkshopItemAsync(WorkshopItemDownload download) private async void DownloadWorkshopItemAsync(WorkshopItemDownload download, bool startDownload = false)
{ {
Steamworks.Ugc.Item? item = await SteamManager.Workshop.GetItem(download.ID); Steamworks.Ugc.Item? item = await SteamManager.Workshop.GetItem(download.ID);
@@ -36,15 +37,18 @@ namespace Barotrauma
{ {
if (download.Callback != null) if (download.Callback != null)
{ {
Directory.Move(item.Value.Directory, download.Destination);
download.Callback(item); download.Callback(item);
} }
itemsBeingDownloaded.Remove(download); itemsBeingDownloaded.Remove(download);
SaveUtil.CopyFolder(item.Value.Directory, download.Destination, true, true);
return; return;
} }
SteamUGC.Download(item.Value.Id, true); if (startDownload)
{
SteamUGC.Download(item.Value.Id, true);
}
if (!itemsBeingDownloaded.Contains(download)) if (!itemsBeingDownloaded.Contains(download))
{ {
@@ -62,7 +66,7 @@ namespace Barotrauma
ID = id, ID = id,
Destination = destination, Destination = destination,
Callback = callback Callback = callback
}); }, true);
} }
public void DownloadWorkshopItem(Steamworks.Ugc.Item item, string destination, LuaCsAction callback) public void DownloadWorkshopItem(Steamworks.Ugc.Item item, string destination, LuaCsAction callback)
@@ -78,12 +82,14 @@ namespace Barotrauma
public void Update() public void Update()
{ {
if (itemsBeingDownloaded.Count > 0) // SteamUGC.OnDownloadItemResult for some reason doesn't work, so i need to do this stupid thing. if (itemsBeingDownloaded.Count > 0 && Timing.TotalTime > lastTimeChecked) // SteamUGC.OnDownloadItemResult for some reason doesn't work, so i need to do this stupid thing.
{ {
foreach (var item in itemsBeingDownloaded) foreach (var item in itemsBeingDownloaded)
{ {
DownloadWorkshopItemAsync(item); DownloadWorkshopItemAsync(item);
} }
lastTimeChecked = Timing.TotalTime + 15;
} }
} }
} }