//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 loyalsoft. All rights reserved.
// Homepage: http://www.game7000.com/
// Feedback: http://www.game7000.com/
//------------------------------------------------------------
using GameFramework;
using GameFramework.FileSystem;
using System.Collections.Generic;
using UnityEngine;
namespace UnityGameFramework.Runtime
{
///
/// 文件系统件。
///
[DisallowMultipleComponent]
[AddComponentMenu("Game Framework/File System")]
public sealed class FileSystemComponent : GameFrameworkComponent
{
private IFileSystemManager m_FileSystemManager = null;
[SerializeField]
private string m_FileSystemHelperTypeName = "UnityGameFramework.Runtime.DefaultFileSystemHelper";
[SerializeField]
private FileSystemHelperBase m_CustomFileSystemHelper = null;
///
/// 获取文件系统数量。
///
public int Count
{
get
{
return m_FileSystemManager.Count;
}
}
///
/// 游戏框架组件初始化。
///
protected override void Awake()
{
base.Awake();
m_FileSystemManager = GameFrameworkEntry.GetModule();
if (m_FileSystemManager == null)
{
Log.Fatal("File system manager is invalid.");
return;
}
FileSystemHelperBase fileSystemHelper = Helper.CreateHelper(m_FileSystemHelperTypeName, m_CustomFileSystemHelper);
if (fileSystemHelper == null)
{
Log.Error("Can not create fileSystem helper.");
return;
}
fileSystemHelper.name = "FileSystem Helper";
Transform transform = fileSystemHelper.transform;
transform.SetParent(this.transform);
transform.localScale = Vector3.one;
m_FileSystemManager.SetFileSystemHelper(fileSystemHelper);
}
private void Start()
{
}
///
/// 检查是否存在文件系统。
///
/// 要检查的文件系统的完整路径。
/// 是否存在文件系统。
public bool HasFileSystem(string fullPath)
{
return m_FileSystemManager.HasFileSystem(fullPath);
}
///
/// 获取文件系统。
///
/// 要获取的文件系统的完整路径。
/// 获取的文件系统。
public IFileSystem GetFileSystem(string fullPath)
{
return m_FileSystemManager.GetFileSystem(fullPath);
}
///
/// 创建文件系统。
///
/// 要创建的文件系统的完整路径。
/// 要创建的文件系统的访问方式。
/// 要创建的文件系统的最大文件数量。
/// 要创建的文件系统的最大块数据数量。
/// 创建的文件系统。
public IFileSystem CreateFileSystem(string fullPath, FileSystemAccess access, int maxFileCount, int maxBlockCount)
{
return m_FileSystemManager.CreateFileSystem(fullPath, access, maxFileCount, maxBlockCount);
}
///
/// 加载文件系统。
///
/// 要加载的文件系统的完整路径。
/// 要加载的文件系统的访问方式。
/// 加载的文件系统。
public IFileSystem LoadFileSystem(string fullPath, FileSystemAccess access)
{
return m_FileSystemManager.LoadFileSystem(fullPath, access);
}
///
/// 销毁文件系统。
///
/// 要销毁的文件系统。
/// 是否删除文件系统对应的物理文件。
public void DestroyFileSystem(IFileSystem fileSystem, bool deletePhysicalFile)
{
m_FileSystemManager.DestroyFileSystem(fileSystem, deletePhysicalFile);
}
///
/// 获取所有文件系统集合。
///
/// 获取的所有文件系统集合。
public IFileSystem[] GetAllFileSystems()
{
return m_FileSystemManager.GetAllFileSystems();
}
///
/// 获取所有文件系统集合。
///
/// 获取的所有文件系统集合。
public void GetAllFileSystems(List results)
{
m_FileSystemManager.GetAllFileSystems(results);
}
}
}