Beispiel #1
0
 protected void AddStateLeaveTransit(int stateFlags, StateLeaveTransitDelegate leaveTransit)
 {
     if (stateLeaveTransitDic == null)
     {
         stateLeaveTransitDic = new Dictionary <int, StateLeaveTransitDelegate>();
     }
     stateMachine.FindContainState(stateFlags, stateType =>
     {
         if (!stateLeaveTransitDic.ContainsKey(stateType))
         {
             stateLeaveTransitDic.Add(stateType, leaveTransit);
         }
     });
 }
Beispiel #2
0
        public bool CanLeave(IState enterState, IStateEvent evt)
        {
            bool canLeave = true;
            StateLeaveTransitDelegate leaveDel = null;

            if (stateLeaveTransitDic != null)
            {
                stateLeaveTransitDic.TryGetValue(enterState, out leaveDel);
                if (leaveDel != null)
                {
                    canLeave = leaveDel(enterState, evt);
                }
            }
            return(canLeave);
        }