BITKit/Src/Unity/Scripts/Entity/Core/EntityOverride.cs

41 lines
1.3 KiB
C#
Raw Normal View History

2023-06-29 14:57:11 +08:00
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BITKit.Entities
{
public interface IEntityOverride
{
bool IsOvering { get; }
void AddOverride(object key);
void RemoveOverride(object key);
}
public interface IEntityOverrideCallback
{
void OnEntryOverride(bool @override);
}
public class EntityOverride : EntityComponent,IEntityOverride
{
public bool IsOvering => _allowOverrideHandle;
private readonly ValidHandle _allowOverrideHandle = new();
public void AddOverride(object key) => _allowOverrideHandle.AddElement(key);
public void RemoveOverride(object key)=>_allowOverrideHandle.RemoveElement(key);
public override void Initialize(IEntity _entity)
{
base.Initialize(_entity);
_entity.Set<IEntityOverride>(this);
}
public override void OnAwake()
{
_allowOverrideHandle.AddListener(Override);
_allowOverrideHandle.Invoke();
}
private void Override(bool @override)
{
foreach (var x in entity.GetCallbacks<IEntityOverrideCallback>())
{
x.OnEntryOverride(@override);
}
}
}
}