BITFALL/Assets/Artists/Scripts/UX/UXBase.cs

63 lines
1.6 KiB
C#

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;
}
}
}