59 lines
1.2 KiB
C#
59 lines
1.2 KiB
C#
|
using System;
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using BITKit.StateMachine;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace BITKit
|
||
|
{
|
||
|
public abstract class StateBasedMonoBehaviour<T> : MonoBehaviour, IStateMachine<T> where T : IState
|
||
|
{
|
||
|
[SerializeField] private MonoStateMachine<T> stateMachine;
|
||
|
|
||
|
public bool Enabled
|
||
|
{
|
||
|
get => stateMachine.Enabled;
|
||
|
set => stateMachine.Enabled = value;
|
||
|
}
|
||
|
|
||
|
public T CurrentState
|
||
|
{
|
||
|
get => stateMachine.CurrentState;
|
||
|
set => stateMachine.CurrentState = value;
|
||
|
}
|
||
|
|
||
|
public event Action<T, T> OnStateChanged
|
||
|
{
|
||
|
add => stateMachine.OnStateChanged += value;
|
||
|
remove => stateMachine.OnStateChanged -= value;
|
||
|
}
|
||
|
|
||
|
public IDictionary<Type, T> StateDictionary => stateMachine.StateDictionary;
|
||
|
|
||
|
public virtual void Initialize()
|
||
|
{
|
||
|
stateMachine.Initialize();
|
||
|
}
|
||
|
|
||
|
public virtual void UpdateState()
|
||
|
{
|
||
|
stateMachine.UpdateState();
|
||
|
}
|
||
|
|
||
|
public virtual void DisposeState()
|
||
|
{
|
||
|
stateMachine.DisposeState();
|
||
|
}
|
||
|
|
||
|
public virtual void TransitionState<State>() where State : T
|
||
|
{
|
||
|
stateMachine.TransitionState<State>();
|
||
|
}
|
||
|
|
||
|
public virtual void TransitionState(T state)
|
||
|
{
|
||
|
stateMachine.TransitionState(state);
|
||
|
}
|
||
|
}
|
||
|
}
|