This commit is contained in:
CortexCore
2024-03-31 23:31:00 +08:00
parent e179d2eb53
commit b7b89ee71a
641 changed files with 31286 additions and 22134 deletions

View File

@@ -4,21 +4,52 @@ using System.Collections.Generic;
using UnityEngine;
namespace BITKit.Entities
{
public interface IEntityOverride
{
/// <summary>
/// 是否正在被覆盖
/// </summary>
bool IsOvering { get; }
void AddOverride(object key);
void RemoveOverride(object key);
/// <summary>
/// 当前对象,用于判断是否是自己的覆盖
/// </summary>
object CurrentObject { get; }
/// <summary>
/// 当开始覆盖或者结束覆盖时触发
/// </summary>
event Action<bool> OnOverride;
/// <summary>
/// 添加覆盖
/// </summary>
void AddOverride(object key,int priority=0);
/// <summary>
/// 移除覆盖
/// </summary>
void RemoveOverride(object key,int priority=0);
}
[CustomType(typeof(IEntityOverride))]
public class EntityOverride : EntityBehavior,IEntityOverride
{
[SerializeField,ReadOnly] private bool isOvering;
[SerializeField, ReadOnly(HideLabel = true)] private string overrideKeys;
public bool IsOvering => _allowOverrideHandle;
public object CurrentObject => _prioritySelector.Current;
private readonly ValidHandle _allowOverrideHandle = new();
public void AddOverride(object key) => _allowOverrideHandle.AddElement(key);
public void RemoveOverride(object key)=>_allowOverrideHandle.RemoveElement(key);
private readonly PrioritySelector<object> _prioritySelector = new();
public void AddOverride(object key,int priority=0)
{
_prioritySelector.Set(priority,key);
_allowOverrideHandle.AddElement(key);
}
public void RemoveOverride(object key,int priority=0)
{
_prioritySelector.Remove(priority);
_allowOverrideHandle.RemoveElement(key);
}
public event Action<bool> OnOverride;
public override void Initialize(IEntity entity)
@@ -35,6 +66,7 @@ namespace BITKit.Entities
{
OnOverride?.Invoke(@override);
isOvering=@override;
overrideKeys = _allowOverrideHandle.ToString();
}
}
}