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

44 lines
1.4 KiB
C#

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);
event Action<bool> OnOverride;
}
public interface IEntityOverrideCallback
{
void OnEntryOverride(bool @override);
}
[CustomType(typeof(IEntityOverride))]
public class EntityOverride : EntityComponent,IEntityOverride
{
[SerializeField,ReadOnly] private bool isOvering;
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 event Action<bool> OnOverride;
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)
{
OnOverride?.Invoke(@override);
isOvering=@override;
}
}
}