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

44 lines
1.4 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);
2023-10-24 23:38:22 +08:00
event Action<bool> OnOverride;
2023-06-29 14:57:11 +08:00
}
public interface IEntityOverrideCallback
{
void OnEntryOverride(bool @override);
}
2023-10-24 23:38:22 +08:00
[CustomType(typeof(IEntityOverride))]
2023-06-29 14:57:11 +08:00
public class EntityOverride : EntityComponent,IEntityOverride
{
2023-10-24 23:38:22 +08:00
[SerializeField,ReadOnly] private bool isOvering;
2023-06-29 14:57:11 +08:00
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);
2023-10-24 23:38:22 +08:00
public event Action<bool> OnOverride;
2023-06-29 14:57:11 +08:00
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)
{
2023-10-24 23:38:22 +08:00
OnOverride?.Invoke(@override);
isOvering=@override;
2023-06-29 14:57:11 +08:00
}
}
}