private void HandleButtonPressed(HOTASButton button, int offset) { if (button == null) { return; } if (button.IsOneShot) { HandleOneShot(button, offset); return; } if (button.IsMacro) { HandleMacro(button, offset); return; } if (button.ShiftModePage > 0) { HandleShiftMode(button.ShiftModePage, button.IsShift); if (button.ActionCatalogItem.Actions.Count == 0) { return; } } _actionJobs.Add(new ActionJobItem() { Offset = offset, MapId = button.MapId, Actions = button.ActionCatalogItem.Actions }); }
private void HandleMacro(HOTASButton button, int offset) { if (_activeMacros.TryGetValue(offset, out _)) { //cancel a macro already in progress _activeMacros.TryRemove(offset, out _); MacroCancelled?.Invoke(this, new MacroCancelledEventArgs(offset, (int)Win32Structures.ScanCodeShort.MACRO_CANCELLED)); return; } _activeMacros.TryAdd(offset, true); Task.Run(() => PlayMacroOnce(offset, button.ActionCatalogItem.Actions)); }
private void HandleButtonReleased(HOTASButton button, int offset) { if (button == null) { return; } var mapId = button.MapId; if (button.IsShift) { ShiftReleased?.Invoke(this, new EventArgs()); } _actionJobs.Add(new ActionJobItem() { Offset = offset, MapId = mapId, Actions = null }); }
private static HOTASButton BuildButtonMap(HOTASButton map) { var newMap = new HOTASButton { MapId = map.MapId, MapName = map.MapName, ShiftModePage = 0, ActionName = map.ActionName, Type = map.Type, ActionCatalogItem = new ActionCatalogItem() { ActionName = map.ActionCatalogItem.ActionName, NoAction = map.ActionCatalogItem.NoAction, Actions = map.ActionCatalogItem.Actions.ToObservableCollection() } }; return(newMap); }
private static void ApplyShiftModePage(int mode, int activationButtonId, bool isShift, HOTASButton button) { if (button.MapId != activationButtonId) { return; } button.ShiftModePage = mode; button.IsShift = isShift; }
private void HandleOneShot(HOTASButton button, int offset) { Task.Run(() => PlayOneShot(offset, button.ActionCatalogItem.Actions)); }