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++; } }
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); } }