//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 loyalsoft. All rights reserved.
// Homepage: http://www.game7000.com/
// Feedback: http://www.game7000.com/
//------------------------------------------------------------
namespace GameFramework.DataNode
{
///
/// 数据结点管理器接口。
///
public interface IDataNodeManager
{
///
/// 获取根数据结点。
///
IDataNode Root
{
get;
}
///
/// 根据类型获取数据结点的数据。
///
/// 要获取的数据类型。
/// 相对于 node 的查找路径。
/// 指定类型的数据。
T GetData(string path) where T : Variable;
///
/// 获取数据结点的数据。
///
/// 相对于 node 的查找路径。
/// 数据结点的数据。
Variable GetData(string path);
///
/// 根据类型获取数据结点的数据。
///
/// 要获取的数据类型。
/// 相对于 node 的查找路径。
/// 查找起始结点。
/// 指定类型的数据。
T GetData(string path, IDataNode node) where T : Variable;
///
/// 获取数据结点的数据。
///
/// 相对于 node 的查找路径。
/// 查找起始结点。
/// 数据结点的数据。
Variable GetData(string path, IDataNode node);
///
/// 设置数据结点的数据。
///
/// 要设置的数据类型。
/// 相对于 node 的查找路径。
/// 要设置的数据。
void SetData(string path, T data) where T : Variable;
///
/// 设置数据结点的数据。
///
/// 相对于 node 的查找路径。
/// 要设置的数据。
void SetData(string path, Variable data);
///
/// 设置数据结点的数据。
///
/// 要设置的数据类型。
/// 相对于 node 的查找路径。
/// 要设置的数据。
/// 查找起始结点。
void SetData(string path, T data, IDataNode node) where T : Variable;
///
/// 设置数据结点的数据。
///
/// 相对于 node 的查找路径。
/// 要设置的数据。
/// 查找起始结点。
void SetData(string path, Variable data, IDataNode node);
///
/// 获取数据结点。
///
/// 相对于 node 的查找路径。
/// 指定位置的数据结点,如果没有找到,则返回空。
IDataNode GetNode(string path);
///
/// 获取数据结点。
///
/// 相对于 node 的查找路径。
/// 查找起始结点。
/// 指定位置的数据结点,如果没有找到,则返回空。
IDataNode GetNode(string path, IDataNode node);
///
/// 获取或增加数据结点。
///
/// 相对于 node 的查找路径。
/// 指定位置的数据结点,如果没有找到,则创建相应的数据结点。
IDataNode GetOrAddNode(string path);
///
/// 获取或增加数据结点。
///
/// 相对于 node 的查找路径。
/// 查找起始结点。
/// 指定位置的数据结点,如果没有找到,则创建相应的数据结点。
IDataNode GetOrAddNode(string path, IDataNode node);
///
/// 移除数据结点。
///
/// 相对于 node 的查找路径。
void RemoveNode(string path);
///
/// 移除数据结点。
///
/// 相对于 node 的查找路径。
/// 查找起始结点。
void RemoveNode(string path, IDataNode node);
///
/// 移除所有数据结点。
///
void Clear();
}
}