mirror of https://github.com/tuyoogame/YooAsset
71 lines
2.0 KiB
C#
71 lines
2.0 KiB
C#
|
|
namespace YooAsset
|
|
{
|
|
internal class DownloadFileWrapper : FSDownloadFileOperation
|
|
{
|
|
private enum ESteps
|
|
{
|
|
None,
|
|
Download,
|
|
Done,
|
|
}
|
|
|
|
private readonly FSDownloadFileOperation _downloadFileOp;
|
|
private ESteps _steps = ESteps.None;
|
|
|
|
internal DownloadFileWrapper(FSDownloadFileOperation downloadFileOp) : base(downloadFileOp.Bundle)
|
|
{
|
|
_downloadFileOp = downloadFileOp;
|
|
}
|
|
internal override void InternalStart()
|
|
{
|
|
_steps = ESteps.Download;
|
|
}
|
|
internal override void InternalUpdate()
|
|
{
|
|
if (_steps == ESteps.None || _steps == ESteps.Done)
|
|
return;
|
|
|
|
if (_steps == ESteps.Download)
|
|
{
|
|
if (IsWaitForAsyncComplete)
|
|
_downloadFileOp.WaitForAsyncComplete();
|
|
|
|
if (_downloadFileOp.Status == EOperationStatus.None)
|
|
return;
|
|
|
|
_downloadFileOp.UpdateOperation();
|
|
Progress = _downloadFileOp.Progress;
|
|
DownloadedBytes = _downloadFileOp.DownloadedBytes;
|
|
DownloadProgress = _downloadFileOp.DownloadProgress;
|
|
if (_downloadFileOp.IsDone == false)
|
|
return;
|
|
|
|
_steps = ESteps.Done;
|
|
Status = _downloadFileOp.Status;
|
|
Error = _downloadFileOp.Error;
|
|
HttpCode = _downloadFileOp.HttpCode;
|
|
}
|
|
}
|
|
internal override void InternalWaitForAsyncComplete()
|
|
{
|
|
while (true)
|
|
{
|
|
if (ExecuteWhileDone())
|
|
{
|
|
_steps = ESteps.Done;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void Release()
|
|
{
|
|
_downloadFileOp.Release();
|
|
}
|
|
public override void Reference()
|
|
{
|
|
_downloadFileOp.Reference();
|
|
}
|
|
}
|
|
} |