using KBCore.Refs; using NEG.UI.UnityUi.Window; using NegUtils.NEG.UI; using UnityEngine; namespace NEG.UI.UnityUi { public abstract class MonoController : MonoBehaviour, IController { [SerializeField] [Self] protected InterfaceRef controllable; protected MonoWindow ControllableAsWindow => (MonoWindow)controllable.Value; protected virtual void Awake() { controllable.Value.OnOpened += OnOpened; controllable.Value.OnClosed += OnClosed; controllable.Value.OnBackUsed += OnBackUsed; } private void OnValidate() => this.ValidateRefs(); public IControllable Controllable => controllable.Value; protected virtual void OnOpened(object data) { } protected virtual void OnClosed() { } protected virtual void OnBackUsed(IControllable.BackUsed obj) { } } }