public void CreateTransition(FsmTransition stateTransition) { var sameOne = _transitions.Find((t) => { return t.trail == stateTransition.trail; }); if (sameOne == null) _transitions.Add(stateTransition); else throw new Exception("The Trastion Same"); }
public IFsmState TryGoNext() { for (int i = 0; i < _transitions.Count; i++) { if (_transitions[i].IsMetCondition) { FsmTransition transition = _transitions[i]; return transition.GoToNextState(); } } return null; }
/// <summary> /// 创建过渡线 /// </summary> /// <param name="head"></param> /// <param name="trail"></param> /// <returns></returns> public FsmTransition CreateTransition(IFsmState head, IFsmState trail) { if (!_stateInfo.ContainsKey(head)) { Log.E("Subscribe Head State Fist"); return null; } if (!_stateInfo.ContainsKey(trail)) { Log.E("Subscribe Trail State Fist"); return null; } FsmTransition transition = new FsmTransition(); transition.head = head; transition.trail = trail; _stateInfo[head].CreateTransition(transition); return transition; }