//------------------------------------------------------------ // Game Framework // Copyright © 2013-2021 loyalsoft. All rights reserved. // Homepage: http://www.game7000.com/ // Feedback: http://www.game7000.com/ //------------------------------------------------------------ using GameFramework.Resource; using System; namespace GameFramework.DataTable { /// /// 数据表基类。 /// public abstract class DataTableBase : IDataProvider { private readonly string m_Name; private readonly DataProvider m_DataProvider; /// /// 初始化数据表基类的新实例。 /// public DataTableBase() : this(null) { } /// /// 初始化数据表基类的新实例。 /// /// 数据表名称。 public DataTableBase(string name) { m_Name = name ?? string.Empty; m_DataProvider = new DataProvider(this); } /// /// 获取数据表名称。 /// public string Name { get { return m_Name; } } /// /// 获取数据表完整名称。 /// public string FullName { get { return new TypeNamePair(Type, m_Name).ToString(); } } /// /// 获取数据表行的类型。 /// public abstract Type Type { get; } /// /// 获取数据表行数。 /// public abstract int Count { get; } /// /// 读取数据表成功事件。 /// public event EventHandler ReadDataSuccess { add { m_DataProvider.ReadDataSuccess += value; } remove { m_DataProvider.ReadDataSuccess -= value; } } /// /// 读取数据表失败事件。 /// public event EventHandler ReadDataFailure { add { m_DataProvider.ReadDataFailure += value; } remove { m_DataProvider.ReadDataFailure -= value; } } /// /// 读取数据表更新事件。 /// public event EventHandler ReadDataUpdate { add { m_DataProvider.ReadDataUpdate += value; } remove { m_DataProvider.ReadDataUpdate -= value; } } /// /// 读取数据表时加载依赖资源事件。 /// public event EventHandler ReadDataDependencyAsset { add { m_DataProvider.ReadDataDependencyAsset += value; } remove { m_DataProvider.ReadDataDependencyAsset -= value; } } /// /// 读取数据表。 /// /// 数据表资源名称。 public void ReadData(string dataTableAssetName) { m_DataProvider.ReadData(dataTableAssetName); } /// /// 读取数据表。 /// /// 数据表资源名称。 /// 加载数据表资源的优先级。 public void ReadData(string dataTableAssetName, int priority) { m_DataProvider.ReadData(dataTableAssetName, priority); } /// /// 读取数据表。 /// /// 数据表资源名称。 /// 用户自定义数据。 public void ReadData(string dataTableAssetName, object userData) { m_DataProvider.ReadData(dataTableAssetName, userData); } /// /// 读取数据表。 /// /// 数据表资源名称。 /// 加载数据表资源的优先级。 /// 用户自定义数据。 public void ReadData(string dataTableAssetName, int priority, object userData) { m_DataProvider.ReadData(dataTableAssetName, priority, userData); } /// /// 解析数据表。 /// /// 要解析的数据表字符串。 /// 是否解析数据表成功。 public bool ParseData(string dataTableString) { return m_DataProvider.ParseData(dataTableString); } /// /// 解析数据表。 /// /// 要解析的数据表字符串。 /// 用户自定义数据。 /// 是否解析数据表成功。 public bool ParseData(string dataTableString, object userData) { return m_DataProvider.ParseData(dataTableString, userData); } /// /// 解析数据表。 /// /// 要解析的数据表二进制流。 /// 是否解析数据表成功。 public bool ParseData(byte[] dataTableBytes) { return m_DataProvider.ParseData(dataTableBytes); } /// /// 解析数据表。 /// /// 要解析的数据表二进制流。 /// 用户自定义数据。 /// 是否解析数据表成功。 public bool ParseData(byte[] dataTableBytes, object userData) { return m_DataProvider.ParseData(dataTableBytes, userData); } /// /// 解析数据表。 /// /// 要解析的数据表二进制流。 /// 数据表二进制流的起始位置。 /// 数据表二进制流的长度。 /// 是否解析数据表成功。 public bool ParseData(byte[] dataTableBytes, int startIndex, int length) { return m_DataProvider.ParseData(dataTableBytes, startIndex, length); } /// /// 解析数据表。 /// /// 要解析的数据表二进制流。 /// 数据表二进制流的起始位置。 /// 数据表二进制流的长度。 /// 用户自定义数据。 /// 是否解析数据表成功。 public bool ParseData(byte[] dataTableBytes, int startIndex, int length, object userData) { return m_DataProvider.ParseData(dataTableBytes, startIndex, length, userData); } /// /// 检查是否存在数据表行。 /// /// 数据表行的编号。 /// 是否存在数据表行。 public abstract bool HasDataRow(int id); /// /// 增加数据表行。 /// /// 要解析的数据表行字符串。 /// 用户自定义数据。 /// 是否增加数据表行成功。 public abstract bool AddDataRow(string dataRowString, object userData); /// /// 增加数据表行。 /// /// 要解析的数据表行二进制流。 /// 数据表行二进制流的起始位置。 /// 数据表行二进制流的长度。 /// 用户自定义数据。 /// 是否增加数据表行成功。 public abstract bool AddDataRow(byte[] dataRowBytes, int startIndex, int length, object userData); /// /// 移除指定数据表行。 /// /// 要移除数据表行的编号。 /// 是否移除数据表行成功。 public abstract bool RemoveDataRow(int id); /// /// 清空所有数据表行。 /// public abstract void RemoveAllDataRows(); /// /// 设置资源管理器。 /// /// 资源管理器。 internal void SetResourceManager(IResourceManager resourceManager) { m_DataProvider.SetResourceManager(resourceManager); } /// /// 设置数据提供者辅助器。 /// /// 数据提供者辅助器。 internal void SetDataProviderHelper(IDataProviderHelper dataProviderHelper) { m_DataProvider.SetDataProviderHelper(dataProviderHelper); } /// /// 关闭并清理数据表。 /// internal abstract void Shutdown(); } }