41 lines
1.3 KiB
C#
41 lines
1.3 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);
|
||
|
}
|
||
|
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);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|