protected void AddStateEnterTransit(int stateFlags, StateEnterTransitDelegate enterTransit) { if (stateEnterTransitDic == null) { stateEnterTransitDic = new Dictionary <int, StateEnterTransitDelegate>(); } stateMachine.FindContainState(stateFlags, stateType => { if (!stateEnterTransitDic.ContainsKey(stateType)) { stateEnterTransitDic.Add(stateType, enterTransit); } }); }
public bool CanEnter(IState leaveState, IStateEvent evt) { bool canEnter = false;//还是默认不能进入,如果默认可以进入,那么在不加状态之间的切换链接情况下,可以默认退出可以默认进入,那么切换链接就没有意义了 StateEnterTransitDelegate enterDel = null; if (stateEnterTransitDic != null) { stateEnterTransitDic.TryGetValue(leaveState, out enterDel); if (enterDel != null) { canEnter = enterDel(leaveState, evt); } } if (allStateEnterTransit != null) { canEnter |= allStateEnterTransit(leaveState, evt); } return(canEnter); }
protected void ClearAllStateEnterTransit() { allStateEnterTransit = null; }
protected void InitAllStateEnterTransit(StateEnterTransitDelegate enterTransit) { allStateEnterTransit = enterTransit; }