Beispiel #1
0
        /// <summary>Open specified state</summary>
        /// <param name="state">state pointer</param>
        public void SelectState(TSSState state)
        {
            if (state == null || !state.enabled)
            {
                switch (incorrectAction)
                {
                case IncorrectStateAction.openDefault: SelectDefaultState(); break;

                case IncorrectStateAction.closeAll: states.ForEach(s => s.Close()); break;
                }

                currentState = null;

                if (useEvents)
                {
                    OnIncorrectStateSelected.Invoke();
                }

                return;
            }

            currentState = state;

            states.Where(s => s.name.ToLower() != state.name.ToLower()).ToList().ForEach(s => s.Close());
            currentState.Open();

            if (!useEvents)
            {
                return;
            }

            OnStateSelected.Invoke(currentState);
            if (currentState == FirstEnabled || currentState == First)
            {
                OnFirstStateSelected.Invoke(currentState);
            }
            if (currentState == LastEnabled || currentState == Last)
            {
                OnLastStateSelected.Invoke(currentState);
            }
        }