public void PressSecondary() { if (activeRangeItem == null) { if (levelStack.Count > 1) { levelStack.Pop(); ActivateLevel(); } } else { activeRangeItem.ResetValue(); activeRangeItem = null; Changed?.Invoke(); } }
public void Press() { if (activeRangeItem != null) { activeRangeItem = null; Changed?.Invoke(); } else { IMenuItem item = items[selectedItemIdx]; switch (item) { case UpMenuItem upItem: levelStack.Pop(); ActivateLevel(); break; case SubLevelMenuItem subLevelItem: levelStack.Push(subLevelItem.Level); ActivateLevel(); break; case IRangeMenuItem rangeItem: activeRangeItem = rangeItem; lastPulsedValue = rangeItem.Value; Changed?.Invoke(); break; case IToggleMenuItem toggleItem: toggleItem.Toggle(); Changed?.Invoke(); break; case ActionMenuItem actionItem: actionItem.Action.Invoke(); Changed?.Invoke(); break; default: throw new InvalidOperationException(); } } }