//------------------------------------------------------------
// 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();
}
}