コード例 #1
0
 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);
         }
     });
 }
コード例 #2
0
        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);
        }
コード例 #3
0
 protected void ClearAllStateEnterTransit()
 {
     allStateEnterTransit = null;
 }
コード例 #4
0
 protected void InitAllStateEnterTransit(StateEnterTransitDelegate enterTransit)
 {
     allStateEnterTransit = enterTransit;
 }