SPT-AKI-Installer/Aki.Core/Tasks/CopyClientTask.cs
2022-07-09 00:33:55 -04:00

48 lines
1.5 KiB
C#

using SPT_AKI_Installer.Aki.Core.Model;
using System;
using System.IO;
using System.Threading.Tasks;
namespace SPT_AKI_Installer.Aki.Core.Tasks
{
public class CopyClientTask : LiveTableTask
{
private InternalData _data;
public CopyClientTask(InternalData data) : base("Copy Client Files", false)
{
_data = data;
}
public override async Task<GenericResult> RunAsync()
{
SetStatus("Copying", false);
try
{
int totalFiles = Directory.GetFiles(_data.OriginalGamePath, "*.*", SearchOption.AllDirectories).Length;
int processedFiles = 0;
foreach (string dirPath in Directory.GetDirectories(_data.OriginalGamePath, "*", SearchOption.AllDirectories))
{
Directory.CreateDirectory(dirPath.Replace(_data.OriginalGamePath, _data.TargetInstallPath));
}
foreach (string newPath in Directory.GetFiles(_data.OriginalGamePath, "*.*", SearchOption.AllDirectories))
{
File.Copy(newPath, newPath.Replace(_data.OriginalGamePath, _data.TargetInstallPath), true);
processedFiles++;
Progress = (int)Math.Floor(((double)processedFiles / totalFiles) * 100);
}
return GenericResult.FromSuccess();
}
catch(Exception ex)
{
return GenericResult.FromError(ex.Message);
}
}
}
}