This commit is contained in:
CortexCore
2024-11-03 16:38:17 +08:00
parent 056e2cada5
commit 4ba741408d
4693 changed files with 2445 additions and 5443 deletions

View File

@@ -1,4 +1,5 @@
using System;
using Microsoft.SqlServer.Server;
namespace BITKit
{
@@ -7,89 +8,63 @@ namespace BITKit
/// 支持属性
/// 支持回调
/// </summary>
public interface IBasicItemContainer
public interface IRuntimeItemContainer:IBinarySerialize
{
/// <summary>
/// 物品容器的唯一Id
/// </summary>
int Id { get; }
/// <summary>
/// 尝试获取指定Item
/// </summary>
bool TryGetItem(Func<IBasicItem, bool> func, out IBasicItem item);
/// <summary>
/// 获取所有Item的只读副本
/// </summary>
IBasicItem[] GetItems();
IRuntimeItem[] GetItems();
/// <summary>
/// 添加物品的接口
/// </summary>
bool Add(IBasicItem item);
/// <summary>
/// 通过Item本身进行移除
/// </summary>
bool Remove(IBasicItem item);
bool Add(IRuntimeItem item);
/// <summary>
/// 通过Id移除物品(推荐)
/// </summary>
bool Remove(int id);
/// <summary>
/// 通过工厂方法移除物品
/// </summary>
bool Remove(Func<IBasicItem, bool> removeFactory);
/// <summary>
/// 通过通过Id丢下物品
/// </summary>
bool Drop(int Id);
bool DropOrSpawn(IBasicItem item);
bool Drop(int id);
/// <summary>
/// 注册添加物品的工厂方法,
/// </summary>
event Func<IBasicItem, bool> AddFactory;
event Func<IRuntimeItem, bool> AddFactory;
/// <summary>
/// 注册移除物品的工厂方法
/// </summary>
event Func<IBasicItem, bool> RemoveFactory;
event Func<IRuntimeItem, bool> RemoveFactory;
/// <summary>
/// 注册丢下物品的工厂方法
/// </summary>
event Func<IBasicItem, bool> DropFactory;
event Func<IRuntimeItem, bool> DropFactory;
/// <summary>
/// 已添加Item的回调
/// </summary>
event Action<IBasicItem> OnAdd;
event Action<IRuntimeItem> OnAdd;
/// <summary>
/// 已移除Item的回调
/// </summary>
event Action<IBasicItem> OnRemove;
event Action<IRuntimeItem> OnRemove;
/// <summary>
/// 已设置Item的回调
/// </summary>
event Action<IBasicItem> OnSet;
event Action<IRuntimeItem> OnSet;
/// <summary>
/// 已丢下Item的回调
/// </summary>
event Action<IBasicItem> OnDrop;
event Action<IRuntimeItem> OnDrop;
/// <summary>
/// 已重构Items的回调
/// </summary>
event Action<IBasicItemContainer> OnRebuild;
event Action<IRuntimeItemContainer> OnRebuild;
/// <summary>
/// 是否已完成物品交换,例如false就是开始交换物品true就是已完成交换物品,可以处理物品了
/// </summary>
event Action<bool> OnRelease;
/// <summary>
/// 添加挂起句柄
/// </summary>
/// <param name="id"></param>
void AddHandle(int id);
/// <summary>
/// 移除挂起句柄
/// </summary>
/// <param name="id"></param>
void RemoveHandle(int id);
}
}