zxl
/
CTT
forked from Cal/CTT
1
0
Fork 0
CTT/Unity/Assets/HotfixView/Entity/StackFsmComponent.cs

141 lines
4.5 KiB
C#
Raw Normal View History

2021-04-08 20:09:59 +08:00
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//namespace ET
//{
// public class StackFsmComponent:Entity
// {
// private LinkedList<FsmStateBase> m_FsmStateBases = new LinkedList<FsmStateBase>();
// public Action FsmLinkedListHasChanaged;
// public FsmStateBase GetCurrentFsmState()
// {
// return this.m_FsmStateBases.First.Value;
// }
// /// <summary>
// /// 从状态机移除一个状态
// /// </summary>
// /// <param name="stateName"></param>
// public void RemoveState(string stateName)
// {
// FsmStateBase temp = GetState(stateName);
// if (temp == null)
// return;
// this.m_FsmStateBases.Remove(temp);
// FsmLinkedListHasChanaged?.Invoke();
// }
// /// <summary>
// /// 是否存在某个状态
// /// </summary>
// /// <param name="stateName"></param>
// /// <returns></returns>
// private bool HasState(string stateName)
// {
// foreach (var VARIABLE in this.m_FsmStateBases)
// {
// if (VARIABLE.StateName == stateName)
// {
// return true;
// }
// }
// return false;
// }
// /// <summary>
// /// 获取某个状态
// /// </summary>
// /// <param name="stateName"></param>
// /// <returns></returns>
// private FsmStateBase GetState(string stateName)
// {
// foreach (var VARIABLE in this.m_FsmStateBases)
// {
// if (VARIABLE.StateName == stateName)
// {
// return VARIABLE;
// }
// }
// //Log.Error($"所请求的状态:{stateName}不存在,将会自动创建一个");
// return null;
// }
// /// <summary>
// /// 向状态机添加一个状态,如果当前已存在,说明需要把它提到同优先级状态的前面去,让他先执行
// /// </summary>
// /// <param name="stateTypes">状态类型</param>
// /// <param name="stateName">状态名称</param>
// /// <param name="priority">状态优先级</param>
// public void AddState(StateTypes stateTypes, string stateName, int priority)
// {
// //Log.Info($"意图加入一个{stateTypes}类型的状态");
// FsmStateBase fsmStateBase = this.GetState(stateName);
// if (fsmStateBase != null)
// {
// InsertState(fsmStateBase,true);
// return;
// }
// fsmStateBase = EntityFactory.Create<FsmStateBase, StateTypes, string, int>(stateTypes, stateName, priority);
// InsertState(fsmStateBase);
// }
// /// <summary>
// /// 插入State到链表中如果当前已存在说明需要把它提到同优先级状态的前面去让他先执行
// /// </summary>
// /// <param name="fsmStateBase"></param>
// private void InsertState(FsmStateBase fsmStateBase,bool containsSelf =false)
// {
// LinkedListNode<FsmStateBase> current = this.m_FsmStateBases.First;
// while (current != null)
// {
// if (fsmStateBase.Priority >= current.Value.Priority)
// {
// break;
// }
// current = current.Next;
// }
// //如果包含自身
// if (containsSelf)
// {
// if(fsmStateBase.StateName != current.Value.StateName)
// {
// m_FsmStateBases.Remove(fsmStateBase);
// m_FsmStateBases.AddBefore(current,fsmStateBase);
// }
// }
// else
// {
// if (current != null)
// {
// this.m_FsmStateBases.AddBefore(current, fsmStateBase);
// }
// else
// {
// this.m_FsmStateBases.AddLast(fsmStateBase);
// }
// }
// FsmLinkedListHasChanaged?.Invoke();
// }
// /// <summary>
// /// 刷新状态,其实就是抛出一下链表改变事件,让动画回到该有的状态
// /// </summary>
// public void RefreshState()
// {
// FsmLinkedListHasChanaged?.Invoke();
// }
// }
//}