Unstable 0.17.0.0
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Barotrauma.Networking
|
||||
{
|
||||
class ModSender : IDisposable
|
||||
{
|
||||
public const string UploadFolder = "TempMods_Upload";
|
||||
public const string Extension = ".barodir.gz";
|
||||
|
||||
public bool Ready { get; private set; } = false;
|
||||
|
||||
public ModSender()
|
||||
{
|
||||
DeleteDir();
|
||||
Directory.CreateDirectory(UploadFolder);
|
||||
TaskPool.Add(
|
||||
"ModSender",
|
||||
Task.WhenAll(
|
||||
ContentPackageManager.EnabledPackages.All
|
||||
.Where(p => p != ContentPackageManager.VanillaCorePackage && p.HasMultiplayerIncompatibleContent)
|
||||
.Select(CompressMod)),
|
||||
(t) => Ready = true);
|
||||
}
|
||||
|
||||
public static string GetCompressedModPath(ContentPackage mod)
|
||||
{
|
||||
string dir = mod.Dir;
|
||||
string resultFileName = dir.Replace('\\', '_').Replace('/', '_');
|
||||
resultFileName = $"{resultFileName}{Extension}";
|
||||
return Path.Combine(UploadFolder, resultFileName);
|
||||
}
|
||||
|
||||
public async Task CompressMod(ContentPackage mod)
|
||||
{
|
||||
await Task.Yield();
|
||||
string dir = mod.Dir;
|
||||
SaveUtil.CompressDirectory(dir, GetCompressedModPath(mod), fileName => { });
|
||||
}
|
||||
|
||||
private void DeleteDir()
|
||||
{
|
||||
if (Directory.Exists(UploadFolder)) { Directory.Delete(UploadFolder, recursive: true); }
|
||||
}
|
||||
|
||||
public bool IsDisposed { get; private set; } = false;
|
||||
public void Dispose()
|
||||
{
|
||||
IsDisposed = true;
|
||||
DeleteDir();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user