using System.Collections; using System.Collections.Generic; using Thousandto.Core.Support; using UnityEngine; namespace Thousandto.Code.Logic { /// /// 状态system基类 /// public class BaseStateSystem : IStateSystem { #region//私有变量 private StateMachine _fsm = null; #endregion #region//属性 public StateMachine Fsm { get { return _fsm; } } #endregion #region//私有函数 private void CreateStateMachine() { _fsm = new StateMachine(this); } #endregion #region//实现接口 public void Initialize() { CreateStateMachine(); OnInitialize(); } public void UnInitialize() { OnUnInitialize(); } public IGameState GetCurState() { if (_fsm != null) return _fsm.GetCurState(); return null; } public IGameState GetNextState() { if (_fsm != null) return _fsm.GetNextState(); return null; } public IGameState GetPrevState() { if (_fsm != null) return _fsm.GetPrevState(); return null; } public IGameState GetStateById(int id) { return OnGetStateById(id); } public bool IsCurState(int stateID) { if (_fsm != null) { return _fsm.IsState(stateID); } return false; } public void ChangeState(int stateId, object arg = null) { OnChangeState(stateId, arg); } public void HandlerMessage(object msg) { OnHandlerMessage(msg); } public void Update(float dt) { OnUpdate(dt); } #endregion #region//子类继承 protected virtual void OnInitialize() { } protected virtual void OnUnInitialize() { } protected virtual IGameState OnGetStateById(int id) { return null; } protected virtual void OnChangeState(int stateId, object arg) { } protected virtual void OnHandlerMessage(object msg) { } protected virtual void OnUpdate(float dt) { } #endregion } }