public void HandleModifierKeyDown([NotNull] WirelessNetworkAddress source, RemoteKeyModifier modifier) { Guard.NotNull(source, nameof(source)); modifierStatePerDevice.EnsureDown(source, modifier); if (numberEntryState.Mode == NumberEntryMode.None) { NumberEntryMode newEntryMode = GetMatchingEntryModeForModifier(modifier); numberEntryState.ChangeMode(newEntryMode); bool isCurrentCompetitor = modifier == RemoteKeyModifier.EnterCurrentCompetitor; var args = new CompetitorSelectionEventArgs(isCurrentCompetitor); NotifyCompetitorSelecting?.Invoke(this, args); } }
public void HandleModifierKeyUp([NotNull] WirelessNetworkAddress source, RemoteKeyModifier modifier) { Guard.NotNull(source, nameof(source)); modifierStatePerDevice.EnsureNotDown(source, modifier); NumberEntryMode matchingEntryMode = GetMatchingEntryModeForModifier(modifier); if (numberEntryState.Mode == matchingEntryMode) { int? builtNumber = numberEntryState.Number; numberEntryState.ChangeMode(NumberEntryMode.None); bool isCurrentCompetitor = modifier == RemoteKeyModifier.EnterCurrentCompetitor; if (builtNumber == null || builtNumber == 0) { var args = new CompetitorSelectionEventArgs(isCurrentCompetitor); NotifyCompetitorSelectCanceled?.Invoke(this, args); } else { var args = new CompetitorNumberSelectionEventArgs(builtNumber.Value, isCurrentCompetitor); NotifyCompetitorSelected?.Invoke(this, args); } } }