//------------------------------------------------------------ // Game Framework // Copyright © 2013-2021 loyalsoft. All rights reserved. // Homepage: http://www.game7000.com/ // Feedback: http://www.game7000.com/ //------------------------------------------------------------ using GameFramework.Download; using GameFramework.FileSystem; using GameFramework.ObjectPool; using System; using System.Collections.Generic; namespace GameFramework.Resource { /// /// 资源管理器接口。 /// public interface IResourceManager { /// /// 获取资源只读区路径。 /// string ReadOnlyPath { get; } /// /// 获取资源读写区路径。 /// string ReadWritePath { get; } /// /// 获取资源模式。 /// ResourceMode ResourceMode { get; } /// /// 获取当前变体。 /// string CurrentVariant { get; } /// /// 获取单机模式版本资源列表序列化器。 /// PackageVersionListSerializer PackageVersionListSerializer { get; } /// /// 获取可更新模式版本资源列表序列化器。 /// UpdatableVersionListSerializer UpdatableVersionListSerializer { get; } /// /// 获取本地只读区版本资源列表序列化器。 /// ReadOnlyVersionListSerializer ReadOnlyVersionListSerializer { get; } /// /// 获取本地读写区版本资源列表序列化器。 /// ReadWriteVersionListSerializer ReadWriteVersionListSerializer { get; } /// /// 获取资源包版本资源列表序列化器。 /// ResourcePackVersionListSerializer ResourcePackVersionListSerializer { get; } /// /// 获取当前资源适用的游戏版本号。 /// string ApplicableGameVersion { get; } /// /// 获取当前内部资源版本号。 /// int InternalResourceVersion { get; } /// /// 获取资源数量。 /// int AssetCount { get; } /// /// 获取资源数量。 /// int ResourceCount { get; } /// /// 获取资源组数量。 /// int ResourceGroupCount { get; } /// /// 获取或设置资源更新下载地址。 /// string UpdatePrefixUri { get; set; } /// /// 获取或设置每更新多少字节的资源,重新生成一次版本资源列表。 /// int GenerateReadWriteVersionListLength { get; set; } /// /// 获取正在应用的资源包路径。 /// string ApplyingResourcePackPath { get; } /// /// 获取等待应用资源数量。 /// int ApplyWaitingCount { get; } /// /// 获取或设置资源更新重试次数。 /// int UpdateRetryCount { get; set; } /// /// 获取正在更新的资源组。 /// IResourceGroup UpdatingResourceGroup { get; } /// /// 获取等待更新资源数量。 /// int UpdateWaitingCount { get; } /// /// 获取使用时下载的等待更新资源数量。 /// int UpdateWaitingWhilePlayingCount { get; } /// /// 获取候选更新资源数量。 /// int UpdateCandidateCount { get; } /// /// 获取加载资源代理总数量。 /// int LoadTotalAgentCount { get; } /// /// 获取可用加载资源代理数量。 /// int LoadFreeAgentCount { get; } /// /// 获取工作中加载资源代理数量。 /// int LoadWorkingAgentCount { get; } /// /// 获取等待加载资源任务数量。 /// int LoadWaitingTaskCount { get; } /// /// 获取或设置资源对象池自动释放可释放对象的间隔秒数。 /// float AssetAutoReleaseInterval { get; set; } /// /// 获取或设置资源对象池的容量。 /// int AssetCapacity { get; set; } /// /// 获取或设置资源对象池对象过期秒数。 /// float AssetExpireTime { get; set; } /// /// 获取或设置资源对象池的优先级。 /// int AssetPriority { get; set; } /// /// 获取或设置资源对象池自动释放可释放对象的间隔秒数。 /// float ResourceAutoReleaseInterval { get; set; } /// /// 获取或设置资源对象池的容量。 /// int ResourceCapacity { get; set; } /// /// 获取或设置资源对象池对象过期秒数。 /// float ResourceExpireTime { get; set; } /// /// 获取或设置资源对象池的优先级。 /// int ResourcePriority { get; set; } /// /// 资源应用成功事件。 /// event EventHandler ResourceApplySuccess; /// /// 资源应用失败事件。 /// event EventHandler ResourceApplyFailure; /// /// 资源更新开始事件。 /// event EventHandler ResourceUpdateStart; /// /// 资源更新改变事件。 /// event EventHandler ResourceUpdateChanged; /// /// 资源更新成功事件。 /// event EventHandler ResourceUpdateSuccess; /// /// 资源更新失败事件。 /// event EventHandler ResourceUpdateFailure; /// /// 资源更新全部完成事件。 /// event EventHandler ResourceUpdateAllComplete; /// /// 设置资源只读区路径。 /// /// 资源只读区路径。 void SetReadOnlyPath(string readOnlyPath); /// /// 设置资源读写区路径。 /// /// 资源读写区路径。 void SetReadWritePath(string readWritePath); /// /// 设置资源模式。 /// /// 资源模式。 void SetResourceMode(ResourceMode resourceMode); /// /// 设置当前变体。 /// /// 当前变体。 void SetCurrentVariant(string currentVariant); /// /// 设置对象池管理器。 /// /// 对象池管理器。 void SetObjectPoolManager(IObjectPoolManager objectPoolManager); /// /// 设置文件系统管理器。 /// /// 文件系统管理器。 void SetFileSystemManager(IFileSystemManager fileSystemManager); /// /// 设置下载管理器。 /// /// 下载管理器。 void SetDownloadManager(IDownloadManager downloadManager); /// /// 设置解密资源回调函数。 /// /// 要设置的解密资源回调函数。 /// 如果不设置,将使用默认的解密资源回调函数。 void SetDecryptResourceCallback(DecryptResourceCallback decryptResourceCallback); /// /// 设置资源辅助器。 /// /// 资源辅助器。 void SetResourceHelper(IResourceHelper resourceHelper); /// /// 增加加载资源代理辅助器。 /// /// 要增加的加载资源代理辅助器。 void AddLoadResourceAgentHelper(ILoadResourceAgentHelper loadResourceAgentHelper); /// /// 使用单机模式并初始化资源。 /// /// 使用单机模式并初始化资源完成时的回调函数。 void InitResources(InitResourcesCompleteCallback initResourcesCompleteCallback); /// /// 使用可更新模式并检查版本资源列表。 /// /// 最新的内部资源版本号。 /// 检查版本资源列表结果。 CheckVersionListResult CheckVersionList(int latestInternalResourceVersion); /// /// 使用可更新模式并更新版本资源列表。 /// /// 版本资源列表大小。 /// 版本资源列表哈希值。 /// 版本资源列表压缩后大小。 /// 版本资源列表压缩后哈希值。 /// 版本资源列表更新回调函数集。 void UpdateVersionList(int versionListLength, int versionListHashCode, int versionListCompressedLength, int versionListCompressedHashCode, UpdateVersionListCallbacks updateVersionListCallbacks); /// /// 使用可更新模式并检查资源。 /// /// 是否忽略处理其它变体的资源,若不忽略,将会移除其它变体的资源。 /// 使用可更新模式并检查资源完成时的回调函数。 void CheckResources(bool ignoreOtherVariant, CheckResourcesCompleteCallback checkResourcesCompleteCallback); /// /// 使用可更新模式并应用资源包资源。 /// /// 要应用的资源包路径。 /// 使用可更新模式并应用资源包资源完成时的回调函数。 void ApplyResources(string resourcePackPath, ApplyResourcesCompleteCallback applyResourcesCompleteCallback); /// /// 使用可更新模式并更新所有资源。 /// /// 使用可更新模式并更新默认资源组完成时的回调函数。 void UpdateResources(UpdateResourcesCompleteCallback updateResourcesCompleteCallback); /// /// 使用可更新模式并更新指定资源组的资源。 /// /// 要更新的资源组名称。 /// 使用可更新模式并更新指定资源组完成时的回调函数。 void UpdateResources(string resourceGroupName, UpdateResourcesCompleteCallback updateResourcesCompleteCallback); /// /// 停止更新资源。 /// void StopUpdateResources(); /// /// 校验资源包。 /// /// 要校验的资源包路径。 /// 是否校验资源包成功。 bool VerifyResourcePack(string resourcePackPath); /// /// 获取所有加载资源任务的信息。 /// /// 所有加载资源任务的信息。 TaskInfo[] GetAllLoadAssetInfos(); /// /// 获取所有加载资源任务的信息。 /// /// 所有加载资源任务的信息。 void GetAllLoadAssetInfos(List results); /// /// 检查资源是否存在。 /// /// 要检查资源的名称。 /// 检查资源是否存在的结果。 HasAssetResult HasAsset(string assetName); /// /// 异步加载资源。 /// /// 要加载资源的名称。 /// 加载资源回调函数集。 void LoadAsset(string assetName, LoadAssetCallbacks loadAssetCallbacks); /// /// 异步加载资源。 /// /// 要加载资源的名称。 /// 要加载资源的类型。 /// 加载资源回调函数集。 void LoadAsset(string assetName, Type assetType, LoadAssetCallbacks loadAssetCallbacks); /// /// 异步加载资源。 /// /// 要加载资源的名称。 /// 加载资源的优先级。 /// 加载资源回调函数集。 void LoadAsset(string assetName, int priority, LoadAssetCallbacks loadAssetCallbacks); /// /// 异步加载资源。 /// /// 要加载资源的名称。 /// 加载资源回调函数集。 /// 用户自定义数据。 void LoadAsset(string assetName, LoadAssetCallbacks loadAssetCallbacks, object userData); /// /// 异步加载资源。 /// /// 要加载资源的名称。 /// 要加载资源的类型。 /// 加载资源的优先级。 /// 加载资源回调函数集。 void LoadAsset(string assetName, Type assetType, int priority, LoadAssetCallbacks loadAssetCallbacks); /// /// 异步加载资源。 /// /// 要加载资源的名称。 /// 要加载资源的类型。 /// 加载资源回调函数集。 /// 用户自定义数据。 void LoadAsset(string assetName, Type assetType, LoadAssetCallbacks loadAssetCallbacks, object userData); /// /// 异步加载资源。 /// /// 要加载资源的名称。 /// 加载资源的优先级。 /// 加载资源回调函数集。 /// 用户自定义数据。 void LoadAsset(string assetName, int priority, LoadAssetCallbacks loadAssetCallbacks, object userData); /// /// 异步加载资源。 /// /// 要加载资源的名称。 /// 要加载资源的类型。 /// 加载资源的优先级。 /// 加载资源回调函数集。 /// 用户自定义数据。 void LoadAsset(string assetName, Type assetType, int priority, LoadAssetCallbacks loadAssetCallbacks, object userData); /// /// 卸载资源。 /// /// 要卸载的资源。 void UnloadAsset(object asset); /// /// 异步加载场景。 /// /// 要加载场景资源的名称。 /// 加载场景回调函数集。 void LoadScene(string sceneAssetName, LoadSceneCallbacks loadSceneCallbacks); /// /// 异步加载场景。 /// /// 要加载场景资源的名称。 /// 加载场景资源的优先级。 /// 加载场景回调函数集。 void LoadScene(string sceneAssetName, int priority, LoadSceneCallbacks loadSceneCallbacks); /// /// 异步加载场景。 /// /// 要加载场景资源的名称。 /// 加载场景回调函数集。 /// 用户自定义数据。 void LoadScene(string sceneAssetName, LoadSceneCallbacks loadSceneCallbacks, object userData); /// /// 异步加载场景。 /// /// 要加载场景资源的名称。 /// 加载场景资源的优先级。 /// 加载场景回调函数集。 /// 用户自定义数据。 void LoadScene(string sceneAssetName, int priority, LoadSceneCallbacks loadSceneCallbacks, object userData); /// /// 异步卸载场景。 /// /// 要卸载场景资源的名称。 /// 卸载场景回调函数集。 void UnloadScene(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks); /// /// 异步卸载场景。 /// /// 要卸载场景资源的名称。 /// 卸载场景回调函数集。 /// 用户自定义数据。 void UnloadScene(string sceneAssetName, UnloadSceneCallbacks unloadSceneCallbacks, object userData); /// /// 获取二进制资源的实际路径。 /// /// 要获取实际路径的二进制资源的名称。 /// 二进制资源的实际路径。 /// 此方法仅适用于二进制资源存储在磁盘(而非文件系统)中的情况。若二进制资源存储在文件系统中时,返回值将始终为空。 string GetBinaryPath(string binaryAssetName); /// /// 获取二进制资源的实际路径。 /// /// 要获取实际路径的二进制资源的名称。 /// 二进制资源是否存储在只读区中。 /// 二进制资源是否存储在文件系统中。 /// 二进制资源或存储二进制资源的文件系统,相对于只读区或者读写区的相对路径。 /// 若二进制资源存储在文件系统中,则指示二进制资源在文件系统中的名称,否则此参数返回空。 /// 是否获取二进制资源的实际路径成功。 bool GetBinaryPath(string binaryAssetName, out bool storageInReadOnly, out bool storageInFileSystem, out string relativePath, out string fileName); /// /// 获取二进制资源的长度。 /// /// 要获取长度的二进制资源的名称。 /// 二进制资源的长度。 int GetBinaryLength(string binaryAssetName); /// /// 异步加载二进制资源。 /// /// 要加载二进制资源的名称。 /// 加载二进制资源回调函数集。 void LoadBinary(string binaryAssetName, LoadBinaryCallbacks loadBinaryCallbacks); /// /// 异步加载二进制资源。 /// /// 要加载二进制资源的名称。 /// 加载二进制资源回调函数集。 /// 用户自定义数据。 void LoadBinary(string binaryAssetName, LoadBinaryCallbacks loadBinaryCallbacks, object userData); /// /// 从文件系统中加载二进制资源。 /// /// 要加载二进制资源的名称。 /// 存储加载二进制资源的二进制流。 byte[] LoadBinaryFromFileSystem(string binaryAssetName); /// /// 从文件系统中加载二进制资源。 /// /// 要加载二进制资源的名称。 /// 存储加载二进制资源的二进制流。 /// 实际加载了多少字节。 int LoadBinaryFromFileSystem(string binaryAssetName, byte[] buffer); /// /// 从文件系统中加载二进制资源。 /// /// 要加载二进制资源的名称。 /// 存储加载二进制资源的二进制流。 /// 存储加载二进制资源的二进制流的起始位置。 /// 实际加载了多少字节。 int LoadBinaryFromFileSystem(string binaryAssetName, byte[] buffer, int startIndex); /// /// 从文件系统中加载二进制资源。 /// /// 要加载二进制资源的名称。 /// 存储加载二进制资源的二进制流。 /// 存储加载二进制资源的二进制流的起始位置。 /// 存储加载二进制资源的二进制流的长度。 /// 实际加载了多少字节。 int LoadBinaryFromFileSystem(string binaryAssetName, byte[] buffer, int startIndex, int length); /// /// 从文件系统中加载二进制资源的片段。 /// /// 要加载片段的二进制资源的名称。 /// 要加载片段的长度。 /// 存储加载二进制资源片段内容的二进制流。 byte[] LoadBinarySegmentFromFileSystem(string binaryAssetName, int length); /// /// 从文件系统中加载二进制资源的片段。 /// /// 要加载片段的二进制资源的名称。 /// 要加载片段的偏移。 /// 要加载片段的长度。 /// 存储加载二进制资源片段内容的二进制流。 byte[] LoadBinarySegmentFromFileSystem(string binaryAssetName, int offset, int length); /// /// 从文件系统中加载二进制资源的片段。 /// /// 要加载片段的二进制资源的名称。 /// 存储加载二进制资源片段内容的二进制流。 /// 实际加载了多少字节。 int LoadBinarySegmentFromFileSystem(string binaryAssetName, byte[] buffer); /// /// 从文件系统中加载二进制资源的片段。 /// /// 要加载片段的二进制资源的名称。 /// 存储加载二进制资源片段内容的二进制流。 /// 要加载片段的长度。 /// 实际加载了多少字节。 int LoadBinarySegmentFromFileSystem(string binaryAssetName, byte[] buffer, int length); /// /// 从文件系统中加载二进制资源的片段。 /// /// 要加载片段的二进制资源的名称。 /// 存储加载二进制资源片段内容的二进制流。 /// 存储加载二进制资源片段内容的二进制流的起始位置。 /// 要加载片段的长度。 /// 实际加载了多少字节。 int LoadBinarySegmentFromFileSystem(string binaryAssetName, byte[] buffer, int startIndex, int length); /// /// 从文件系统中加载二进制资源的片段。 /// /// 要加载片段的二进制资源的名称。 /// 要加载片段的偏移。 /// 存储加载二进制资源片段内容的二进制流。 /// 实际加载了多少字节。 int LoadBinarySegmentFromFileSystem(string binaryAssetName, int offset, byte[] buffer); /// /// 从文件系统中加载二进制资源的片段。 /// /// 要加载片段的二进制资源的名称。 /// 要加载片段的偏移。 /// 存储加载二进制资源片段内容的二进制流。 /// 要加载片段的长度。 /// 实际加载了多少字节。 int LoadBinarySegmentFromFileSystem(string binaryAssetName, int offset, byte[] buffer, int length); /// /// 从文件系统中加载二进制资源的片段。 /// /// 要加载片段的二进制资源的名称。 /// 要加载片段的偏移。 /// 存储加载二进制资源片段内容的二进制流。 /// 存储加载二进制资源片段内容的二进制流的起始位置。 /// 要加载片段的长度。 /// 实际加载了多少字节。 int LoadBinarySegmentFromFileSystem(string binaryAssetName, int offset, byte[] buffer, int startIndex, int length); /// /// 检查资源组是否存在。 /// /// 要检查资源组的名称。 /// 资源组是否存在。 bool HasResourceGroup(string resourceGroupName); /// /// 获取默认资源组。 /// /// 默认资源组。 IResourceGroup GetResourceGroup(); /// /// 获取资源组。 /// /// 要获取的资源组名称。 /// 要获取的资源组。 IResourceGroup GetResourceGroup(string resourceGroupName); /// /// 获取所有资源组。 /// /// 所有资源组。 IResourceGroup[] GetAllResourceGroups(); /// /// 获取所有资源组。 /// /// 所有资源组。 void GetAllResourceGroups(List results); /// /// 获取资源组集合。 /// /// 要获取的资源组名称的集合。 /// 要获取的资源组集合。 IResourceGroupCollection GetResourceGroupCollection(params string[] resourceGroupNames); /// /// 获取资源组集合。 /// /// 要获取的资源组名称的集合。 /// 要获取的资源组集合。 IResourceGroupCollection GetResourceGroupCollection(List resourceGroupNames); } }