This commit is contained in:
CortexCore
2023-10-06 23:43:19 +08:00
parent ebf9c1f526
commit 2c4710bc5d
186 changed files with 111802 additions and 764 deletions

View File

@@ -5,17 +5,12 @@ namespace BITKit
{
public class ValidHandle
{
public ValidHandle() { Init(); }
public ValidHandle() {}
public ValidHandle(Action<bool> boolDelegate)
{
AddListener(boolDelegate);
Init();
EventOnEnableChanged?.Invoke(enableHandle);
}
void Init()
{
AddListener(OnInoke);
}
public static implicit operator bool(ValidHandle validHandle)
{
return validHandle.enableHandle;
@@ -24,8 +19,6 @@ namespace BITKit
public bool Allow => this;
private bool enableHandle;
private int enableElementCount;
private int disableElementCount;
private readonly List<object> objs = new List<object>();
private readonly List<object> disableObjs = new List<object>();
private bool tempEnable;
@@ -43,7 +36,7 @@ namespace BITKit
}
CheckEnable();
}
protected virtual void CheckEnable()
protected void CheckEnable()
{
tempEnable = objs.Count > 0 && disableObjs.Count == 0;
if (tempEnable != enableHandle)
@@ -51,13 +44,8 @@ namespace BITKit
enableHandle = tempEnable;
if (EventOnEnableChanged is not null)
EventOnEnableChanged.Invoke(enableHandle);
OnEnable(enableHandle);
}
enableElementCount = objs.Count;
disableElementCount = disableObjs.Count;
}
protected virtual void OnEnable(bool enable) { }
public virtual void RemoveElement(object obj)
{
if (objs.Contains(obj))
@@ -93,7 +81,7 @@ namespace BITKit
}
CheckEnable();
}
public virtual void RemoveDisableElements(object obj)
public void RemoveDisableElements(object obj)
{
if (disableObjs.Contains(obj))
{
@@ -104,7 +92,7 @@ namespace BITKit
}
CheckEnable();
}
public virtual void SetElements(object obj, bool add = true)
public void SetElements(object obj, bool add = true)
{
if (add)
{
@@ -126,29 +114,33 @@ namespace BITKit
RemoveDisableElements(obj);
}
}
public virtual void Invoke()
public void Invoke()
{
bool enable = disableObjs.Count == 0 && objs.Count > 0;
EventOnEnableChanged.Invoke(enable);
var enable = disableObjs.Count == 0 && objs.Count > 0;
EventOnEnableChanged?.Invoke(enable);
}
public virtual void Invoke(bool value)
public void Invoke(bool value)
{
EventOnEnableChanged.Invoke(value);
EventOnEnableChanged?.Invoke(value);
}
public virtual void OnInoke(bool value)
{
}
public virtual void AddListener(Action<bool> action)
public void AddListener(Action<bool> action)
{
EventOnEnableChanged+= action;
}
public virtual void RemoveListener(Action<bool> action)
public void RemoveListener(Action<bool> action)
{
if(EventOnEnableChanged is not null && action is not null)
{
EventOnEnableChanged -= action;
}
}
public void Clear()
{
objs.Clear();
disableObjs.Clear();
Invoke();
}
}
}