add:优化分包下载

This commit is contained in:
Weekend
2023-11-18 21:44:24 +08:00
parent 4385123976
commit ef17cd851b
2 changed files with 18 additions and 13 deletions

View File

@@ -12,7 +12,7 @@ namespace TEngine
private class GameDecryptionServices : IDecryptionServices private class GameDecryptionServices : IDecryptionServices
{ {
private const byte OffSet = 32; private const byte OffSet = 32;
public ulong LoadFromFileOffset(DecryptFileInfo fileInfo) public ulong LoadFromFileOffset(DecryptFileInfo fileInfo)
{ {
return OffSet; return OffSet;
@@ -25,7 +25,8 @@ namespace TEngine
public Stream LoadFromStream(DecryptFileInfo fileInfo) public Stream LoadFromStream(DecryptFileInfo fileInfo)
{ {
BundleStream bundleStream = new BundleStream(fileInfo.FilePath, FileMode.Open, FileAccess.Read, FileShare.Read); BundleStream bundleStream =
new BundleStream(fileInfo.FilePath, FileMode.Open, FileAccess.Read, FileShare.Read);
return bundleStream; return bundleStream;
} }
@@ -34,7 +35,7 @@ namespace TEngine
return 1024; return 1024;
} }
} }
/// <summary> /// <summary>
/// 默认的分发资源查询服务类 /// 默认的分发资源查询服务类
/// </summary> /// </summary>
@@ -44,40 +45,43 @@ namespace TEngine
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public bool QueryDeliveryFiles(string packageName, string fileName) public bool QueryDeliveryFiles(string packageName, string fileName)
{ {
return false; return false;
} }
} }
/// <summary> /// <summary>
/// 远程文件查询服务类。 /// 远程文件查询服务类。
/// </summary> /// </summary>
private class RemoteServices: IRemoteServices private class RemoteServices : IRemoteServices
{ {
private readonly string _defaultHostServer; private readonly string _defaultHostServer;
private readonly string _fallbackHostServer; private readonly string _fallbackHostServer;
private string _packageName;
public RemoteServices() public RemoteServices(string packageName)
{ {
_defaultHostServer = SettingsUtils.FrameworkGlobalSettings.HostServerURL; _defaultHostServer = SettingsUtils.FrameworkGlobalSettings.HostServerURL;
_fallbackHostServer = SettingsUtils.FrameworkGlobalSettings.FallbackHostServerURL; _fallbackHostServer = SettingsUtils.FrameworkGlobalSettings.FallbackHostServerURL;
_packageName = packageName;
} }
public RemoteServices(string defaultHostServer, string fallbackHostServer) public RemoteServices(string defaultHostServer, string fallbackHostServer)
{ {
_defaultHostServer = defaultHostServer; _defaultHostServer = defaultHostServer;
_fallbackHostServer = fallbackHostServer; _fallbackHostServer = fallbackHostServer;
} }
public string GetRemoteMainURL(string fileName) public string GetRemoteMainURL(string fileName)
{ {
return $"{_defaultHostServer}/{fileName}"; return $"{_defaultHostServer}/{_packageName}/{fileName}";
} }
public string GetRemoteFallbackURL(string fileName) public string GetRemoteFallbackURL(string fileName)
{ {
return $"{_fallbackHostServer}/{fileName}"; return $"{_defaultHostServer}/{_packageName}/{fileName}";
} }
} }
} }
@@ -86,7 +90,8 @@ namespace TEngine
{ {
public const byte KEY = 128; public const byte KEY = 128;
public BundleStream(string path, FileMode mode, FileAccess access, FileShare share) : base(path, mode, access, share) public BundleStream(string path, FileMode mode, FileAccess access, FileShare share) : base(path, mode, access,
share)
{ {
} }

View File

@@ -384,7 +384,7 @@ namespace TEngine
createParameters.DecryptionServices = new GameDecryptionServices(); createParameters.DecryptionServices = new GameDecryptionServices();
createParameters.BuildinQueryServices = new BuiltinQueryServices(); createParameters.BuildinQueryServices = new BuiltinQueryServices();
createParameters.DeliveryQueryServices = new DefaultDeliveryQueryServices(); createParameters.DeliveryQueryServices = new DefaultDeliveryQueryServices();
createParameters.RemoteServices = new RemoteServices(); createParameters.RemoteServices = new RemoteServices(targetPackageName);
initializationOperation = package.InitializeAsync(createParameters); initializationOperation = package.InitializeAsync(createParameters);
} }
@@ -395,7 +395,7 @@ namespace TEngine
var createParameters = new WebPlayModeParameters(); var createParameters = new WebPlayModeParameters();
createParameters.DecryptionServices = new GameDecryptionServices(); createParameters.DecryptionServices = new GameDecryptionServices();
createParameters.BuildinQueryServices = new BuiltinQueryServices(); createParameters.BuildinQueryServices = new BuiltinQueryServices();
createParameters.RemoteServices = new RemoteServices(); createParameters.RemoteServices = new RemoteServices(targetPackageName);
initializationOperation = package.InitializeAsync(createParameters); initializationOperation = package.InitializeAsync(createParameters);
} }