2023-06-05 19:57:17 +08:00
|
|
|
using System;
|
2023-06-29 14:57:11 +08:00
|
|
|
|
2023-06-05 19:57:17 +08:00
|
|
|
namespace BITKit
|
|
|
|
{
|
|
|
|
/// <summary>
|
|
|
|
/// 支持二进制化的的物品容器,适用于网络化物品容器
|
|
|
|
/// 支持属性
|
|
|
|
/// 支持回调
|
|
|
|
/// </summary>
|
|
|
|
public interface IBasicItemContainer
|
|
|
|
{
|
|
|
|
/// <summary>
|
|
|
|
/// 物品容器的唯一Id
|
|
|
|
/// </summary>
|
|
|
|
int Id { get; }
|
|
|
|
/// <summary>
|
|
|
|
/// 尝试获取指定Item
|
|
|
|
/// </summary>
|
|
|
|
bool TryGetItem(Func<IBasicItem, bool> func, out IBasicItem item);
|
|
|
|
/// <summary>
|
|
|
|
/// 获取所有Item的只读副本
|
|
|
|
/// </summary>
|
|
|
|
IBasicItem[] GetItems();
|
|
|
|
/// <summary>
|
|
|
|
/// 添加物品的接口
|
|
|
|
/// </summary>
|
|
|
|
bool Add(IBasicItem item);
|
|
|
|
/// <summary>
|
|
|
|
/// 通过Item本身进行移除
|
|
|
|
/// </summary>
|
|
|
|
bool Remove(IBasicItem item);
|
|
|
|
/// <summary>
|
|
|
|
/// 通过Id移除物品(推荐)
|
|
|
|
/// </summary>
|
|
|
|
bool Remove(int id);
|
|
|
|
/// <summary>
|
|
|
|
/// 通过工厂方法移除物品
|
|
|
|
/// </summary>
|
|
|
|
bool Remove(Func<IBasicItem, bool> removeFactory);
|
|
|
|
/// <summary>
|
|
|
|
/// 通过通过Id丢下物品
|
|
|
|
/// </summary>
|
|
|
|
bool Drop(int Id);
|
|
|
|
/// <summary>
|
|
|
|
/// 注册添加物品的工厂方法,
|
|
|
|
/// </summary>
|
|
|
|
event Func<IBasicItem, bool> AddFactory;
|
|
|
|
/// <summary>
|
|
|
|
/// 注册移除物品的工厂方法
|
|
|
|
/// </summary>
|
|
|
|
event Func<IBasicItem, bool> RemoveFactory;
|
|
|
|
/// <summary>
|
|
|
|
/// 注册丢下物品的工厂方法
|
|
|
|
/// </summary>
|
|
|
|
event Func<IBasicItem, bool> DropFactory;
|
|
|
|
/// <summary>
|
|
|
|
/// 已添加Item的回调
|
|
|
|
/// </summary>
|
|
|
|
event Action<IBasicItem> OnAdd;
|
|
|
|
/// <summary>
|
|
|
|
/// 已移除Item的回调
|
|
|
|
/// </summary>
|
|
|
|
event Action<IBasicItem> OnRemove;
|
|
|
|
/// <summary>
|
|
|
|
/// 已设置Item的回调
|
|
|
|
/// </summary>
|
|
|
|
event Action<IBasicItem> OnSet;
|
|
|
|
/// <summary>
|
|
|
|
/// 已丢下Item的回调
|
|
|
|
/// </summary>
|
|
|
|
event Action<IBasicItem> OnDrop;
|
|
|
|
/// <summary>
|
|
|
|
/// 已重构Items的回调
|
|
|
|
/// </summary>
|
|
|
|
event Action<IBasicItemContainer> OnRebuild;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|