protected override void OnNewControlEvent(ControlEventBase controlEvent)
        {
            var ev = (ButtonEvent)controlEvent;

            // AD при изменении состава State'ов нотифицирует об этом CP
            // Проверить, существует ли всё ещё такой ID контрола в AccessDescriptor
            // Как получить все состояния при загрузке ControlProcessor? Вызвать функцию в AccessDescriptor?
            var hardwareId = controlEvent.Hardware.GetHardwareGuid();
            var button     = Connections.FirstOrDefault(hw => hw.GetAssignedHardware() == hardwareId);

            var direction = button.GetInverseState() ? !ev.IsPressed : ev.IsPressed;

            if (!direction)
            {
                SetRepeaterState(LastState.None);
                return;
            }

            if (button.GetConnector().Id == 1)
            {
                AccessDescriptor.SetNextState(1);
                SetRepeaterState(LastState.Next);
            }

            else
            {
                AccessDescriptor.SetPreviousState(1);
                SetRepeaterState(LastState.Prev);
            }
        }
        protected override void OnTick()
        {
            if (!(AccessDescriptor is IRepeaterInDescriptor))
            {
                return;
            }
            bool repeaterIsOn = ((IRepeaterInDescriptor)AccessDescriptor).IsRepeaterOn();

            if (!repeaterIsOn || _lastState == LastState.None)
            {
                return;
            }
            if (_repeatsPerTime[_repeatsPerTimeCounter] == 0)
            {
                _repeatsPerTimeCounter++;
                return;
            }

            if (_lastState == LastState.Next)
            {
                AccessDescriptor.SetNextState(_repeatsPerTime[_repeatsPerTimeCounter]);
            }
            else
            {
                AccessDescriptor.SetPreviousState(_repeatsPerTime[_repeatsPerTimeCounter]);
            }
            if (_repeatsPerTimeCounter < _repeatsPerTime.Length - 1)
            {
                _repeatsPerTimeCounter++;
            }
        }
예제 #3
0
        protected override void OnNewControlEvent(ControlEventBase controlEvent)
        {
            var ev = controlEvent as EncoderEvent;

            var direction = Connections[0].GetInverseState() ? !ev.RotateDirection : ev.RotateDirection;

            if (direction)
            {
                AccessDescriptor.SetNextState(ev.ClicksCount);
            }
            else
            {
                AccessDescriptor.SetPreviousState(ev.ClicksCount);
            }
        }