private void OnRoleOperationsStatusCallBack(object p)
        {
            StateMachineEvents <RoleOperationsStatus> events = (StateMachineEvents <RoleOperationsStatus>)p;

            switch (events.CurState)
            {
            case RoleOperationsStatus.NoOperations:
                EnterNoOperations(events.PreState);
                break;

            case RoleOperationsStatus.DragTheRole:
                EnterDragTheRole();
                break;

            case RoleOperationsStatus.DragTheSkill:
                EnterDragTheSkill();
                break;

            case RoleOperationsStatus.ShowIntro:
                EnterShowIntro();
                break;

            case RoleOperationsStatus.HideTntro:
                EnterHideIntrol();
                break;
            }
        }
 public virtual void RestorePreviousState()
 {
     CurState = PreState;
     if (TriggerEvents)
     {
         StateMachineEvents <T> events = new StateMachineEvents <T>(this);
         StateMachineDispatcher.Instance.Dispatc(EventsName, events);
     }
 }
 public virtual void ChangeState(T newSate)
 {
     if (!m_StateList.Contains(newSate) || newSate.Equals(CurState))
     {
         return;
     }
     PreState = CurState;
     CurState = newSate;
     if (TriggerEvents)
     {
         StateMachineEvents <T> events = new StateMachineEvents <T>(this);
         StateMachineDispatcher.Instance.Dispatc(EventsName, events);
     }
 }
        private void OnLevelProcedureCallBack(object p)
        {
            StateMachineEvents <LevelProcedure> events = (StateMachineEvents <LevelProcedure>)p;

            switch (events.CurState)
            {
            case LevelProcedure.OpenAni:
                OpenAni();
                break;

            case LevelProcedure.LevelIntrol:
                LevelIntrol();
                break;

            case LevelProcedure.HeroEditor:
                HeroEditor();
                break;

            case LevelProcedure.Switch:
                Switch();
                break;

            case LevelProcedure.Player:
                Player();
                break;

            case LevelProcedure.Enemy:
                Enemy();
                break;

            case LevelProcedure.Win:
                Win();
                break;

            case LevelProcedure.Fail:
                Fail();
                break;
            }
        }