using System.Collections; using System.Collections.Generic; using BITFALL.Hotkey; using BITKit; using BITKit.Entities; using BITKit.Entities.Player; using BITKit.Selection; using BITKit.UX; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.UIElements; namespace BITFALL.UX { public abstract class UXBase : MonoBehaviour { [SerializeReference, SubclassSelector] private IPlayerService playerService; protected virtual void Start() { BITKit.UX.UXUtils.Inject(this); destroyCancellationToken.Register(Dispose); playerService.OnPlayerInitialized += OnPlayerInitialized; playerService.OnPlayerDisposed += OnPlayerDisposed; } protected virtual void OnPlayerDisposed(Entity obj) { InjectAttribute.Clear(this); } protected virtual void OnPlayerInitialized(Entity obj) { obj.Inject(this); } protected virtual void Dispose() { playerService.OnPlayerInitialized -= OnPlayerInitialized; } } public abstract class UXPanelBase : UIToolKitPanel { [SerializeReference, SubclassSelector] private IPlayerService playerService; protected override void Start() { base.Start(); destroyCancellationToken.Register(Dispose); playerService.OnPlayerInitialized += OnPlayerInitialized; playerService.OnPlayerDisposed += OnPlayerDisposed; } protected virtual void OnPlayerDisposed(Entity obj) { InjectAttribute.Clear(this); } protected virtual void OnPlayerInitialized(Entity obj) { obj.Inject(this); } protected virtual void Dispose() { playerService.OnPlayerInitialized -= OnPlayerInitialized; } } }