public void Init(GameWindow game) { if (_game != null) { return; } _game = game; this._originalOSCursor = _game.Cursor; game.MouseDown += (sender, e) => { if (isInputBlocked()) { return; } var button = convert(e.Button); _actions.Enqueue(() => MouseDown.InvokeAsync(new AGS.API.MouseButtonEventArgs(null, button, MousePosition))); }; game.MouseUp += (sender, e) => { if (isInputBlocked()) { return; } var button = convert(e.Button); _actions.Enqueue(() => MouseUp.InvokeAsync(new AGS.API.MouseButtonEventArgs(null, button, MousePosition))); }; game.MouseMove += (sender, e) => { if (isInputBlocked()) { return; } _mouseX = e.Mouse.X; _mouseY = e.Mouse.Y; _actions.Enqueue(() => MouseMove.InvokeAsync(new MousePositionEventArgs(MousePosition))); }; game.KeyDown += (sender, e) => { API.Key key = convert(e.Key); _keysDown.Add(key); if (isInputBlocked()) { return; } _actions.Enqueue(() => KeyDown.InvokeAsync(new KeyboardEventArgs(key))); }; game.KeyUp += (sender, e) => { API.Key key = convert(e.Key); _keysDown.Remove(key); if (isInputBlocked()) { return; } _actions.Enqueue(() => KeyUp.InvokeAsync(new KeyboardEventArgs(key))); }; _events.OnRepeatedlyExecuteAlways.Subscribe(onRepeatedlyExecute); }
private async void onKeyDown(object sender, Tuple <Keycode, KeyEvent> args) { var key = args.Item1.Convert(); if (key == null) { return; } await KeyDown.InvokeAsync(sender, new KeyboardEventArgs(key.Value)); }
private void init(GameWindow game) { if (_game != null) { return; } _game = game; _originalOSCursor = game.Cursor; _cursor.PropertyChanged += (sender, e) => { if (_cursor.Cursor != null) { _game.Cursor = MouseCursor.Empty; } }; game.MouseDown += (sender, e) => { if (isInputBlocked()) { return; } var button = convert(e.Button); _actions.Enqueue(() => MouseDown.InvokeAsync(new API.MouseButtonEventArgs(_hitTest.ObjectAtMousePosition, button, MousePosition))); }; game.MouseUp += (sender, e) => { if (isInputBlocked()) { return; } var button = convert(e.Button); _actions.Enqueue(() => MouseUp.InvokeAsync(new API.MouseButtonEventArgs(_hitTest.ObjectAtMousePosition, button, MousePosition))); }; game.MouseMove += (sender, e) => { _mouseX = e.Mouse.X; _mouseY = e.Mouse.Y; _actions.Enqueue(() => MouseMove.InvokeAsync(new MousePositionEventArgs(MousePosition))); }; game.KeyDown += (sender, e) => { API.Key key = convert(e.Key); _keysDown.Add(key); if (isInputBlocked()) { return; } _actions.Enqueue(() => KeyDown.InvokeAsync(new KeyboardEventArgs(key))); }; game.KeyUp += (sender, e) => { API.Key key = convert(e.Key); _keysDown.Remove(key); if (isInputBlocked()) { return; } _actions.Enqueue(() => KeyUp.InvokeAsync(new KeyboardEventArgs(key))); }; _events.OnRepeatedlyExecuteAlways.Subscribe(onRepeatedlyExecute); }
private async Task OnKeyDownAsync(KeyboardEventArgs args) { if (IsEditing) { switch (args.Code) { case "Escape": CancelEdit(); break; case "Enter": case "Return": await CommitEditAsync().ConfigureAwait(true); break; } } else { switch (args.Code) { case "F2": await BeginEditAsync().ConfigureAwait(true); break; case "KeyA": if (args.CtrlKey && SelectionMode == TableSelectionMode.Multiple) { await ClearSelectionAsync().ConfigureAwait(true); Selection.AddRange(ItemsToDisplay.Select(x => KeyField !(x).ToString())); await SelectionChanged.InvokeAsync(null).ConfigureAwait(true); } break; case "ArrowUp": case "ArrowDown": if (Selection.Count == 1 && KeyField != null) { var items = ItemsToDisplay.ToList(); var item = items.Find(x => KeyField(x).ToString() == Selection[0]); if (item != null) { var idx = items.IndexOf(item); if (args.Code == "ArrowUp" && idx > 0) { Selection.Clear(); Selection.Add(KeyField(items[idx - 1]).ToString()); } else if (args.Code == "ArrowDown" && idx < items.Count - 1) { Selection.Clear(); Selection.Add(KeyField(items[idx + 1]).ToString()); } } } break; } } await KeyDown.InvokeAsync(args).ConfigureAwait(true); }