/// <summary> /// Handle selection change events (when the caret changes the position). /// </summary> /// <param name="s"></param> /// <param name="e"></param> private void HandleUpdateUI(object s, UpdateUIEventArgs e) { // handle selection changed events switch (e.Change) { case UpdateChange.Selection: // Update indicators only if the editor is in focus. This // is necessary, because they are also used by 'Find & Replace'. if (Focused) { // get whole words from selections and get ranges from these words var ranges = FindWordRanges(GetWordsFromSelections()); // highlight all selected words ClearIndicators(HighlightIndicatorIndex); AddIndicators(HighlightIndicatorIndex, ranges); } break; case UpdateChange.HScroll: case UpdateChange.VScroll: // call mouse scroll events MouseScroll?.Invoke(this, e); // update code folding UpdateCodeFolding(FirstVisibleLine, LastVisibleLine); break; } }
/// <param name="gameTime">Snapshot of the application's timing values.</param> /// <param name="state">Current mouse state.</param> /// <summary> /// Updates the mouse device. /// </summary> private void UpdateMouse(MouseState state, GameTime gameTime) { if ((state.X != mouseState.X) || (state.Y != mouseState.Y)) { var e = new MouseEventArgs(); var btn = MouseButton.None; if (state.LeftButton == ButtonState.Pressed) { btn = MouseButton.Left; } else if (state.RightButton == ButtonState.Pressed) { btn = MouseButton.Right; } else if (state.MiddleButton == ButtonState.Pressed) { btn = MouseButton.Middle; } else if (state.XButton1 == ButtonState.Pressed) { btn = MouseButton.XButton1; } else if (state.XButton2 == ButtonState.Pressed) { btn = MouseButton.XButton2; } BuildMouseEvent(state, btn, ref e); if (MouseMove != null) { MouseMove.Invoke(this, e); } } // Mouse wheel position changed if (state.ScrollWheelValue != mouseState.ScrollWheelValue) { var e = new MouseEventArgs(); var direction = state.ScrollWheelValue < mouseState.ScrollWheelValue ? MouseScrollDirection.Down : MouseScrollDirection.Up; BuildMouseEvent(state, MouseButton.None, direction, ref e); MouseScroll?.Invoke(this, e); } UpdateButtons(state, gameTime); mouseState = state; }
public void UpdateMouse(MouseState state, GameTime gameTime) { #if (!XBOX && !XBOX_FAKE) if ((state.X != mouseState.X) || (state.Y != mouseState.Y)) { MouseEventArgs e = new MouseEventArgs(); MouseButtons btn = MouseButtons.None; if (state.LeftButton == ButtonState.Pressed) { btn = MouseButtons.Left; } else if (state.RightButton == ButtonState.Pressed) { btn = MouseButtons.Right; } else if (state.MiddleButton == ButtonState.Pressed) { btn = MouseButtons.Middle; } else if (state.XButton1 == ButtonState.Pressed) { btn = MouseButtons.XButton1; } else if (state.XButton2 == ButtonState.Pressed) { btn = MouseButtons.XButton2; } BuildMouseEvent(state, btn, ref e); if (MouseMove != null) { MouseMove.Invoke(this, e); } } if (state.ScrollWheelValue != mouseState.ScrollWheelValue) { MouseEventArgs e = new MouseEventArgs(); MouseScrollDirection direction = state.ScrollWheelValue < mouseState.ScrollWheelValue ? MouseScrollDirection.Down : MouseScrollDirection.Up; BuildMouseEvent(state, MouseButtons.None, direction, ref e); if (MouseScroll != null) { MouseScroll.Invoke(this, e); } } UpdateButtons(state, gameTime); mouseState = state; #endif }
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) { int intw = (int)wParam; if (nCode >= 0 && intw == WM_LBUTTONDOWN || intw == WM_RBUTTONDOWN || intw == WM_LBUTTONUP || intw == WM_RBUTTONUP || intw == WM_MOUSEWHEEL || intw == WM_MOUSEMOVE || intw == WM_MBUTTONDOWN || intw == WM_MBUTTONUP) { var hookStruct = Marshal.PtrToStructure <MSLLHOOKSTRUCT>(lParam); int x = hookStruct.pt.x, y = hookStruct.pt.y; bool res = true; switch ((int)wParam) { case WM_LBUTTONDOWN: res = MouseDown?.Invoke(MouseEventType.LEFT, x, y) ?? true; break; case WM_RBUTTONDOWN: res = MouseDown?.Invoke(MouseEventType.RIGHT, x, y) ?? true; break; case WM_LBUTTONUP: res = MouseUp?.Invoke(MouseEventType.LEFT, x, y) ?? true; break; case WM_RBUTTONUP: res = MouseUp?.Invoke(MouseEventType.RIGHT, x, y) ?? true; break; case WM_MOUSEMOVE: res = MouseMove?.Invoke(MouseEventType.NONE, x, y) ?? true; break; case WM_MOUSEWHEEL: res = MouseScroll?.Invoke((int)hookStruct.mouseData > 0 ? MouseScrollType.UP : MouseScrollType.DOWN) ?? true; break; case WM_MBUTTONDOWN: res = MouseDown?.Invoke(MouseEventType.WHEEL, x, y) ?? true; break; case WM_MBUTTONUP: res = MouseUp?.Invoke(MouseEventType.WHEEL, x, y) ?? true; break; } if (!res) { return((IntPtr)1); } } return(CallNextHookEx(_hookID, nCode, wParam, lParam)); }
/// <inheritdoc /> protected override void OnUpdate(GameTime gameTime) { _clickCooldown = Math.Max(0, _clickCooldown - (float)gameTime.ElapsedGameTime.TotalSeconds); var mouseState = GetMouseState(GameLoop.Window); // Handle button events. if (Settings.SwapPrimaryMouseButton) { // Swap right and left click internally so royce is happy lol. HandleButtonEvent(mouseState, MouseButton.Left, _lastMouseState.RightButton, mouseState.RightButton); HandleButtonEvent(mouseState, MouseButton.Right, _lastMouseState.LeftButton, mouseState.LeftButton); } else { HandleButtonEvent(mouseState, MouseButton.Left, _lastMouseState.LeftButton, mouseState.LeftButton); HandleButtonEvent(mouseState, MouseButton.Right, _lastMouseState.RightButton, mouseState.RightButton); } HandleButtonEvent(mouseState, MouseButton.Middle, _lastMouseState.MiddleButton, mouseState.MiddleButton); // And now let's do the browser buttons. HandleButtonEvent(mouseState, MouseButton.X1, _lastMouseState.XButton1, mouseState.XButton1); HandleButtonEvent(mouseState, MouseButton.X2, _lastMouseState.XButton2, mouseState.XButton2); // Vertical scrolling. if (mouseState.ScrollWheelValue != _lastMouseState.ScrollWheelValue) { MouseScroll?.Invoke(this, new MouseScrollEventArgs(mouseState, ScrollDirection.Vertical, mouseState.ScrollWheelValue, (mouseState.ScrollWheelValue - _lastMouseState.ScrollWheelValue))); } // Horizontal scrolling. if (mouseState.HorizontalScrollWheelValue != _lastMouseState.HorizontalScrollWheelValue) { MouseHorizontalScroll?.Invoke(this, new MouseScrollEventArgs(mouseState, ScrollDirection.Horizontal, mouseState.HorizontalScrollWheelValue, (mouseState.HorizontalScrollWheelValue - _lastMouseState.HorizontalScrollWheelValue))); } // Handle mouse movement. if (mouseState.X != _lastMouseState.X || mouseState.Y != _lastMouseState.Y) { var deltaX = mouseState.X - _lastMouseState.X; var deltaY = mouseState.Y - _lastMouseState.Y; MouseMove?.Invoke(this, new MouseMoveEventArgs(mouseState, deltaX, deltaY)); } _lastMouseState = mouseState; }
private IntPtr LowLevelMouseCallback(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode >= 0 && MouseMessages.WM_MOUSEWHEEL == (MouseMessages)wParam) { var structure = Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT)); if (structure != null) { var hookStruct = (MSLLHOOKSTRUCT)structure; MouseScroll?.Invoke(this, new() { Delta = (int)hookStruct.mouseData }); } } return(User32.CallNextHookEx(IntPtr.Zero, nCode, wParam, lParam)); }
public void Update(float deltatime) { MouseState mState = Mouse.GetState(); MouseScroll scroll = mState.Scroll; float scrollDelta = lastScroll - scroll.Y; /* * if(scrollDelta > 0) * { * cam.View.Distance += deltatime; * } * if(scrollDelta < 0) * { * cam.View.Distance -= deltatime; * } * if(cam.View.Distance < 0) * { * cam.View.Distance = 0; * } */ //cam.View.Distance += deltatime * 0.1f; Vector2 mDelta = new Vector2(lastMousePos.X - mState.X, lastMousePos.Y - mState.Y); float mouseSpeed = 2; if (mouseButtonDown) { float vert = mDelta.Y * deltatime * mouseSpeed; float hor = mDelta.X * deltatime * mouseSpeed; cam.transform.rotation.X += vert * 0.5f; cam.transform.rotation.Y += hor * 0.5f; /* * if (cam.transform.rotation.X > 90) * { * cam.transform.rotation.X = 90; * } * if (cam.transform.rotation.X < -90) * { * cam.transform.rotation.X = -90; * } */ } lastMousePos = new Vector2(mState.X, mState.Y); lastScroll = scroll.Y; FirstPersonMovement(cam, deltatime); }
private static void Handle_Mouse_Position(MouseUpdate data) { var posX = (float)0; var posY = (float)0; switch (data.Offset) { case MouseOffset.X: posX = mouse.GetCurrentState().X; break; case MouseOffset.Z: MouseScroll?.Invoke(null, new MouseScrollEventArgs(mouse.GetCurrentState().Z)); break; case MouseOffset.Y: posY = mouse.GetCurrentState().Y; break; } MousePosition?.Invoke(null, new MousePositionEventArgs(posX, posY)); }
/// <summary> /// Handling aller Eingaben, Mausbewegungen und Updaten aller Screens und Controls. /// </summary> /// <param name="gameTime"></param> public override void Update(GameTime gameTime) { if (Game.IsActive) { #region Mouse Interaction if (MouseEnabled) { MouseState mouse; Point mousePosition; if (MouseMode == MouseMode.Captured) { mouse = Mouse.GetState(); mousePosition = new Point( mouse.X - (lastMousePosition.X), mouse.Y - (lastMousePosition.Y)); } else { mouse = Mouse.GetCursorState(); mousePosition = Game.Window.PointToClient(mouse.Location); } // Mausposition anhand des Mouse Modes ermitteln MouseEventArgs mouseEventArgs = MouseEventArgsPool.Instance.Take(); mouseEventArgs.MouseMode = MouseMode; mouseEventArgs.GlobalPosition = mousePosition; mouseEventArgs.LocalPosition = mousePosition; // Mouse Move if (mousePosition != lastMousePosition) { mouseEventArgs.Handled = false; root.InternalMouseMove(mouseEventArgs); if (!mouseEventArgs.Handled) { MouseMove?.Invoke(mouseEventArgs); } // Start Drag Handling if (mouse.LeftButton == ButtonState.Pressed && DraggingArgs == null) { DraggingArgs = DragEventArgsPool.Instance.Take(); DraggingArgs.GlobalPosition = mousePosition; DraggingArgs.LocalPosition = mousePosition; draggingId = null; root.InternalStartDrag(DraggingArgs); if (!DraggingArgs.Handled) { StartDrag?.Invoke(DraggingArgs); } } // Drop move if (mouse.LeftButton == ButtonState.Pressed && DraggingArgs != null && draggingId == null && DraggingArgs.Handled) { //TODO: perhaps pool single object? DragEventArgs args = DragEventArgsPool.Instance.Take(); args.GlobalPosition = mousePosition; args.LocalPosition = mousePosition; args.Content = DraggingArgs.Content; args.Icon = DraggingArgs.Icon; args.Sender = DraggingArgs.Sender; root.InternalDropMove(args); if (!args.Handled) { DropMove?.Invoke(args); } } } // Linke Maustaste if (mouse.LeftButton == ButtonState.Pressed) { if (!lastLeftMouseButtonPressed) { mouseEventArgs.Handled = false; // Linke Maustaste wurde neu gedrückt root.InternalLeftMouseDown(mouseEventArgs); if (!mouseEventArgs.Handled) { LeftMouseDown?.Invoke(mouseEventArgs); } } lastLeftMouseButtonPressed = true; } else { if (lastLeftMouseButtonPressed) { // Handle Drop if (DraggingArgs != null && DraggingArgs.Handled) { DragEventArgs args = DragEventArgsPool.Instance.Take(); args.GlobalPosition = mousePosition; args.LocalPosition = mousePosition; args.Content = DraggingArgs.Content; args.Icon = DraggingArgs.Icon; args.Sender = DraggingArgs.Sender; root.InternalEndDrop(args); if (!args.Handled) { EndDrop?.Invoke(args); } } // Discard Dragging Infos DragEventArgsPool.Instance.Release(DraggingArgs); DraggingArgs = null; draggingId = null; // Linke Maustaste wurde losgelassen mouseEventArgs.Handled = false; root.InternalLeftMouseClick(mouseEventArgs); if (!mouseEventArgs.Handled) { LeftMouseClick?.Invoke(mouseEventArgs); } if (lastLeftClick.HasValue && gameTime.TotalGameTime - lastLeftClick.Value < TimeSpan.FromMilliseconds(DoubleClickDelay)) { // Double Left Click mouseEventArgs.Handled = false; root.InternalLeftMouseDoubleClick(mouseEventArgs); if (!mouseEventArgs.Handled) { LeftMouseDoubleClick?.Invoke(mouseEventArgs); } lastLeftClick = null; } else { lastLeftClick = gameTime.TotalGameTime; } // Mouse Up mouseEventArgs.Handled = false; root.InternalLeftMouseUp(mouseEventArgs); if (!mouseEventArgs.Handled) { LeftMouseUp?.Invoke(mouseEventArgs); } } lastLeftMouseButtonPressed = false; } // Rechte Maustaste if (mouse.RightButton == ButtonState.Pressed) { if (!lastRightMouseButtonPressed) { // Rechte Maustaste neu gedrückt mouseEventArgs.Handled = false; root.InternalRightMouseDown(mouseEventArgs); if (!mouseEventArgs.Handled) { RightMouseDown?.Invoke(mouseEventArgs); } } lastRightMouseButtonPressed = true; } else { if (lastRightMouseButtonPressed) { // Rechte Maustaste losgelassen mouseEventArgs.Handled = false; root.InternalRightMouseClick(mouseEventArgs); if (!mouseEventArgs.Handled) { RightMouseClick?.Invoke(mouseEventArgs); } if (lastRightClick.HasValue && gameTime.TotalGameTime - lastRightClick.Value < TimeSpan.FromMilliseconds(DoubleClickDelay)) { // Double Left Click mouseEventArgs.Handled = false; root.InternalRightMouseDoubleClick(mouseEventArgs); if (!mouseEventArgs.Handled) { RightMouseDoubleClick?.Invoke(mouseEventArgs); } lastRightClick = null; } else { lastRightClick = gameTime.TotalGameTime; } mouseEventArgs.Handled = false; root.InternalRightMouseUp(mouseEventArgs); if (!mouseEventArgs.Handled) { RightMouseUp?.Invoke(mouseEventArgs); } } lastRightMouseButtonPressed = false; } // Mousewheel if (lastMouseWheelValue != mouse.ScrollWheelValue) { int diff = (mouse.ScrollWheelValue - lastMouseWheelValue); MouseScrollEventArgs scrollArgs = new MouseScrollEventArgs { MouseMode = MouseMode, GlobalPosition = mousePosition, LocalPosition = mousePosition, Steps = diff }; root.InternalMouseScroll(scrollArgs); if (!scrollArgs.Handled) { MouseScroll?.Invoke(scrollArgs); } lastMouseWheelValue = mouse.ScrollWheelValue; } // Potentieller Positionsreset if (MouseMode == MouseMode.Free) { lastMousePosition = mousePosition; } else if (mousePosition.X != 0 || mousePosition.Y != 0) { lastMousePosition = mouse.Location; } MouseEventArgsPool.Instance.Release(mouseEventArgs); } #endregion #region Keyboard Interaction if (KeyboardEnabled) { KeyboardState keyboard = Keyboard.GetState(); bool shift = keyboard.IsKeyDown(Keys.LeftShift) | keyboard.IsKeyDown(Keys.RightShift); bool ctrl = keyboard.IsKeyDown(Keys.LeftControl) | keyboard.IsKeyDown(Keys.RightControl); bool alt = keyboard.IsKeyDown(Keys.LeftAlt) | keyboard.IsKeyDown(Keys.RightAlt); KeyEventArgs args; for (int i = 0; i < _pressedKeys.Length; i++) { var key = (Keys)i; if (keyboard.IsKeyDown(key)) { // ReSharper disable once CompareOfFloatsByEqualityOperator if (_pressedKeys[i] == UnpressedKeyTimestamp) { // Taste ist neu args = KeyEventArgsPool.Take(); args.Key = key; args.Shift = shift; args.Ctrl = ctrl; args.Alt = alt; root.InternalKeyDown(args); if (!args.Handled) { KeyDown?.Invoke(args); } KeyEventArgsPool.Release(args); args = KeyEventArgsPool.Take(); args.Key = key; args.Shift = shift; args.Ctrl = ctrl; args.Alt = alt; root.InternalKeyPress(args); _pressedKeys[i] = gameTime.TotalGameTime.TotalMilliseconds + 500; KeyEventArgsPool.Release(args); // Spezialfall Tab-Taste (falls nicht verarbeitet wurde) if (key == Keys.Tab && !args.Handled) { if (shift) { root.InternalTabbedBackward(); } else { root.InternalTabbedForward(); } } } else { // Taste ist immernoch gedrückt if (_pressedKeys[i] <= gameTime.TotalGameTime.TotalMilliseconds) { args = KeyEventArgsPool.Take(); args.Key = key; args.Shift = shift; args.Ctrl = ctrl; args.Alt = alt; root.InternalKeyPress(args); if (!args.Handled) { KeyPress?.Invoke(args); } KeyEventArgsPool.Release(args); _pressedKeys[i] = gameTime.TotalGameTime.TotalMilliseconds + 50; } } } else { // ReSharper disable once CompareOfFloatsByEqualityOperator if (_pressedKeys[i] != UnpressedKeyTimestamp) { // Taste losgelassen args = KeyEventArgsPool.Take(); args.Key = key; args.Shift = shift; args.Ctrl = ctrl; args.Alt = alt; root.InternalKeyUp(args); _pressedKeys[i] = UnpressedKeyTimestamp; if (!args.Handled) { KeyUp?.Invoke(args); } KeyEventArgsPool.Release(args); } } } } #endregion #region Touchpanel Interaction //if (TouchEnabled) //{ // TouchCollection touchPoints = TouchPanel.GetState(); // foreach (var touchPoint in touchPoints) // { // Point point = touchPoint.Position.ToPoint(); // TouchEventArgs args = new TouchEventArgs() // { // TouchId = touchPoint.Id, // GlobalPosition = point, // LocalPosition = point // }; // switch (touchPoint.State) // { // case TouchLocationState.Pressed: // root.InternalTouchDown(args); // if (!args.Handled && TouchDown != null) // TouchDown(args); // break; // case TouchLocationState.Moved: // // Touch Move // root.InternalTouchMove(args); // if (!args.Handled && TouchMove != null) // TouchMove(args); // // Start Dragging // if (DraggingArgs == null) // { // DraggingArgs = new DragEventArgs() // { // GlobalPosition = point, // LocalPosition = point, // }; // draggingId = touchPoint.Id; // root.InternalStartDrag(DraggingArgs); // if (!DraggingArgs.Handled && StartDrag != null) // StartDrag(DraggingArgs); // } // // Drop move // if (DraggingArgs != null && // draggingId == touchPoint.Id && // DraggingArgs.Handled) // { // DragEventArgs moveArgs = new DragEventArgs() // { // GlobalPosition = point, // LocalPosition = point, // Content = DraggingArgs.Content, // Icon = DraggingArgs.Icon, // Sender = DraggingArgs.Sender // }; // root.InternalDropMove(moveArgs); // if (!args.Handled && DropMove != null) // DropMove(moveArgs); // } // break; // case TouchLocationState.Released: // // Handle Drop // if (DraggingArgs != null && // draggingId == touchPoint.Id && // DraggingArgs.Handled) // { // DragEventArgs dropArgs = new DragEventArgs() // { // GlobalPosition = point, // LocalPosition = point, // Content = DraggingArgs.Content, // Icon = DraggingArgs.Icon, // Sender = DraggingArgs.Sender // }; // root.InternalEndDrop(dropArgs); // if (!args.Handled && EndDrop != null) // EndDrop(dropArgs); // } // // Discard Dragging Infos // DraggingArgs = null; // draggingId = null; // // Linke Maustaste wurde losgelassen // TouchEventArgs tapArgs = new TouchEventArgs // { // TouchId = touchPoint.Id, // GlobalPosition = point, // LocalPosition = point // }; // root.InternalTouchTap(tapArgs); // if (!tapArgs.Handled && TouchTap != null) // TouchTap(tapArgs); // if (lastTouchTap.HasValue && // gameTime.TotalGameTime - lastLeftClick.Value < TimeSpan.FromMilliseconds(DoubleClickDelay)) // { // // Double Tap // TouchEventArgs doubleTapArgs = new TouchEventArgs // { // TouchId = touchPoint.Id, // GlobalPosition = point, // LocalPosition = point // }; // root.InternalTouchDoubleTap(doubleTapArgs); // if (!doubleTapArgs.Handled && TouchDoubleTap != null) // TouchDoubleTap(doubleTapArgs); // lastTouchTap = null; // } // else // { // lastTouchTap = gameTime.TotalGameTime; // } // root.InternalTouchUp(args); // if (!args.Handled && TouchUp != null) // TouchUp(args); // break; // } // } //} #endregion } #region Recalculate Sizes if (root.HasInvalidDimensions()) { Point available = new Point(GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height); Point required = root.GetExpectedSize(available); root.SetActualSize(available); } root.Update(gameTime); #endregion #region Form anpassen if (_titleDirty || (ActiveScreen?.Title != _lastActiveScreenTitle)) { string screentitle = ActiveScreen?.Title ?? string.Empty; string windowtitle = TitlePrefix + (string.IsNullOrEmpty(screentitle) ? string.Empty : " - " + screentitle); if (Game.Window != null && Game.Window.Title != windowtitle) { Game.Window.Title = windowtitle; } _titleDirty = false; _lastActiveScreenTitle = ActiveScreen?.Title; } #endregion }
protected void RaiseMouseScroll(object sender, MouseScrollArg e) { MouseScroll?.Invoke(sender, e); }
/// <summary> /// Called when the mouse wheel is scrolled. /// </summary> /// <param name="scroll">The mouse scroll input.</param> public virtual void OnMouseScroll(MouseScroll scroll) { var position = Mouse.Position; if (this.Captured != null) { this.Captured.RaiseEvent(PreviewMouseScrollEvent, MouseScrollEvent, new MouseMotionEventArgs(scroll, position)); } else { foreach (var element in this.HitTest<UIElement>(position)) { element.RaiseEvent(PreviewMouseScrollEvent, MouseScrollEvent, new MouseMotionEventArgs(scroll, position)); break; } } }
public SystemKeyboardMouseValue(MouseScroll mouseScrollDirection, float strength) { type = Types.MouseScrollDirection; this.scrollDirection = mouseScrollDirection; this.strength = strength; }
public SystemKeyboardMouseValue(MouseScroll mouseScrollDirection) { type = Types.MouseScrollDirection; this.scrollDirection = mouseScrollDirection; }
public SystemKeyboardMouseValue(SystemKeyboardMouseValue source) { type = source.Type; key = source.Key; mouseButton = source.MouseButton; scrollDirection = source.scrollDirection; strength = source.strength; _parent = source.Parent; }
public DefaultKeyboardMouseValueAttribute(MouseScroll mouseScrollDirection, float strength = 1) { value = new GameControlsManager.SystemKeyboardMouseValue(mouseScrollDirection, strength); }
public void Update() { // Copy old state var oldState = this.State; var oldScreenPosition = this.ScreenPosition; var oldWorldPosition = this.WorldPosition; // Update to new state this.State = Mouse.GetState(); this.ScreenPosition = this.State.PositionToPoint(); this.WorldPosition = this.engine.PerspectiveManager.Unproject(this.State.X, this.State.Y); if(this.WorldPosition != null) { this.KnownWorldPosition = this.WorldPosition.Value; } if (this.State.LeftButton != oldState.LeftButton) { this.LeftButton.OnNext(new MouseButtonAndState(this, MouseButton.Left, this.State.LeftButton)); } if (this.State.RightButton != oldState.RightButton) { this.RightButton.OnNext(new MouseButtonAndState(this, MouseButton.Right, this.State.RightButton)); } if (this.State.MiddleButton != oldState.MiddleButton) { this.MiddleButton.OnNext(new MouseButtonAndState(this, MouseButton.Middle, this.State.MiddleButton)); } if (this.State.XButton1 != oldState.XButton1) { this.XButton1.OnNext(new MouseButtonAndState(this, MouseButton.X1, this.State.XButton1)); } if (this.State.XButton2 != oldState.XButton2) { this.XButton2.OnNext(new MouseButtonAndState(this, MouseButton.X2, this.State.XButton2)); } if (this.State.ScrollWheelValue != 0) { var scroll = new MouseScroll(this, this.State.ScrollWheelValue); this.Scroll.OnNext(scroll); } if (this.ScreenPosition != oldScreenPosition || this.WorldPosition != oldWorldPosition) { var screenDelta = new Point(this.State.X - oldState.X, this.State.Y - oldState.Y); Vector2? worldDelta = null; if (this.WorldPosition != null && oldWorldPosition != null) { worldDelta = this.WorldPosition - oldWorldPosition; } var move = new MouseMove(this, this.ScreenPosition, screenDelta, this.WorldPosition, worldDelta); this.Move.OnNext(move); } }
public void FireMouseScroll(MouseScrollEventArgs e) { MouseScroll?.Invoke(this, e); }
///<summary> /// ____MADE IN THE + /// USA + France + /// ___ InCin filtering by combo boxes and listboxes --- all me ///void CreateAdd_Custom_Control_Dialogue() ///populate all drop downs and comboboxes ///filter by device or device Type ///hide unneeded info or unhide pages /// </summary> private void CreateAdd_Custom_Control_Dialogue() { //load custom binding window Control Add_Custom_Control = ControlDeclarationManager.Instance.CreateControl(@"GUI\Add_Custom_Control.gui"); Add_Custom_Control.TopMost = true; Add_Custom_Control.MouseCover = true; //Add Controls.Add(Add_Custom_Control); #region AddCustomControl.Gui #region MainControls ComboBox cmbDeviceType; cmbDeviceType = (ComboBox)Add_Custom_Control.Controls["cmbDeviceType"]; //cmbDeviceType.Items.Add("Nothing_Selected"); //using enum Nothing_Selected foreach (var value in Enum.GetValues(typeof(Devices))) { //if(!(value.ToString().Contains(Devices.GetServices.ToString())) && !(value.ToString().Contains(Devices.All_Devices.ToString()))) //exclude for internal use cmbDeviceType.Items.Add(value); } cmbDeviceType.SelectedIndex = 0; ComboBox cmbDevice; cmbDevice = (ComboBox)Add_Custom_Control.Controls["cmbDevice"]; cmbDevice.Items.Add("Nothing_Selected"); cmbDevice.Items.Add("Keyboard"); //unhandled object as multiple devices cmbDevice.Items.Add("Mouse"); //unhandled object as a multiple devices if (InputDeviceManager.Instance != null) { foreach (InputDevice devicename in InputDeviceManager.Instance.Devices) cmbDevice.Items.Add(devicename); //handled objects //filter } cmbDevice.SelectedIndex = 0; Control cntrlCommands = (Control)Add_Custom_Control.Controls["cntrlCommands"]; cntrlCommands.Visible = false; //Commands Available ListBox lstCommand; lstCommand = (ListBox)Add_Custom_Control.Controls["cntrlCommands"].Controls["lstCommand"]; lstCommand.Items.Add("Nothing_Selected"); lstCommand.SelectedIndex = 0; foreach (var value in Enum.GetValues(typeof(GameControlKeys))) { lstCommand.Items.Add(value); } //control Tab Controls //TabControl MainOptionsTabControl; MainOptionsTabControl = (TabControl)Add_Custom_Control.Controls["MainOptionsTabControl"]; MainOptionsTabControl.SelectedIndexChange += MainOptionsTabControl_SelectedIndexChange; MainOptionsTabControl.Visible = true; MainOptionsTabControl.Visible = false; //hide all subcontrols for now pageControlsButtons[0] = (Button)Add_Custom_Control.Controls["MainOptionsTabControl"].Controls["btnMouseOptions"]; pageControlsButtons[1] = (Button)Add_Custom_Control.Controls["MainOptionsTabControl"].Controls["btnKeyboardOptions"]; pageControlsButtons[2] = (Button)Add_Custom_Control.Controls["MainOptionsTabControl"].Controls["btnJoystickOptions"]; foreach (Button pageButton in pageControlsButtons) { pageButton.Click += new Button.ClickDelegate(pageControlsButton_Click); } pageControlsButtons[0].PerformClick(); TextBox lblMessage = (TextBox)Add_Custom_Control.Controls["lblMessage"]; // holds message of selected items lblMessage.Text = "Nothing_Selected"; ScrollBar scrlSelectedStrength; scrlSelectedStrength = (ScrollBar)MainOptionsTabControl.Controls["scrlSelectedStrength"]; //incin -- not updating the strength atm, gotta figure this out.. scrlSelectedStrength.ValueChange += delegate(ScrollBar sender) { while (sender.Value != Strength_selected) { Strength_selected = sender.Value; } if (message != null) { if (message.Contains(" Strength: ")) { message = message.Replace(" Strength: " + old_strength.ToString("F2"), " Strength: " + Strength_selected.ToString("F2")); lblMessage.Text = message; } } old_strength = Strength_selected; }; #endregion MainControls #region pageMouseoptions Control pageMouseOptions; pageMouseOptions = (Control)Add_Custom_Control.Controls["MainOptionsTabControl"].Controls["pageMouseOptions"]; //Page visible= false || true; #region MouseTabControls //MainOptionsTabControl.MouseTabControl.pageMouseButtonOptions TabControl MouseTabControl = (TabControl)pageMouseOptions.Controls["MouseTabControl"]; ComboBox cmbMouseButtonChoices; cmbMouseButtonChoices = (ComboBox)MouseTabControl.Controls["pageMouseButtonOptions"].Controls["cmbMouseButtonChoices"]; cmbMouseButtonChoices.Items.Add("Nothing_Selected"); foreach (var value in Enum.GetValues(typeof(EMouseButtons))) { cmbMouseButtonChoices.Items.Add(value); } cmbMouseButtonChoices.SelectedIndex = 0; //MainOptionsTabControl.MouseTabControl.pageMouseScrollOptions.cmbMouseScrollChoices ComboBox cmbMouseScrollChoices; cmbMouseScrollChoices = (ComboBox)MouseTabControl.Controls["pageMouseScrollOptions"].Controls["cmbMouseScrollChoices"]; cmbMouseScrollChoices.Items.Add("Nothing_Selected"); foreach (var value in Enum.GetValues(typeof(MouseScroll))) { cmbMouseScrollChoices.Items.Add(value); } cmbMouseScrollChoices.SelectedIndex = 0; #endregion MouseTabControls #endregion pageMouseoptions #region pageKeyboardOptions Control pageKeyboardOptions = (Control)Add_Custom_Control.Controls["MainOptionsTabControl"].Controls["pageKeyboardOptions"]; //visible false true? ListBox lstKeyboardButtonChoices; lstKeyboardButtonChoices = (ListBox)pageKeyboardOptions.Controls["lstKeyboardButtonChoices"]; lstKeyboardButtonChoices.Items.Add("Nothing_Selected"); foreach (var value in Enum.GetValues(typeof(EKeys))) { lstKeyboardButtonChoices.Items.Add(value); } lstKeyboardButtonChoices.SelectedIndex = 0; //if (lstKeyboardButtonChoices.ItemButtons["lstKeyboardButtonChoices"]Text.Contains("Nothing_Selected") != null) // lstKeyboardButtonChoices.SelectedIndex = -1; #endregion pageKeyboardOptions //MainOptionsTabControl.pageJoystickOptions //tabJoystickControlOptions #region pageJoystickOptions Control pageJoystickOptions; pageJoystickOptions = (Control)Add_Custom_Control.Controls["MainOptionsTabControl"].Controls["pageJoystickOptions"];//.Controls["tabJoystickControlOptions"]; tabJoystickControlOptions = (TabControl)pageJoystickOptions.Controls["tabJoystickControlOptions"]; tabJoystickControlOptions.SelectedIndexChange += tabJoystickControlOptions_SelectedIndexChange; pagejoystickButtons[0] = (Button)tabJoystickControlOptions.Controls["btnSliderOptions"]; pagejoystickButtons[1] = (Button)tabJoystickControlOptions.Controls["btnAxisOptions"]; pagejoystickButtons[2] = (Button)tabJoystickControlOptions.Controls["btnButtonOptions"]; foreach (Button pageButton in pagejoystickButtons) { pageButton.Click += new Button.ClickDelegate(joystickPageTabButtons_Click); } #region pageSliderOptions Control pageSliderOptions = tabJoystickControlOptions.Controls["pageSliderOptions"]; #region cmbSliderChoices ComboBox cmbSliderChoices; cmbSliderChoices = (ComboBox)pageSliderOptions.Controls["cmbSliderChoices"]; cmbSliderChoices.Items.Add("Nothing_Selected"); foreach (var value in Enum.GetValues(typeof(JoystickSliders))) { cmbSliderChoices.Items.Add(value); } cmbSliderChoices.SelectedIndex = 0; ComboBox cmbSliderAxisChoices; cmbSliderAxisChoices = (ComboBox)pageSliderOptions.Controls["cmbSliderAxisChoices"]; cmbSliderAxisChoices.Items.Add("Nothing_Selected"); foreach (var value in Enum.GetValues(typeof(JoystickSliderAxes))) { cmbSliderAxisChoices.Items.Add(value); } cmbSliderAxisChoices.SelectedIndex = 0; ComboBox cmbSliderAxisFilterChoices; cmbSliderAxisFilterChoices = (ComboBox)pageSliderOptions.Controls["cmbSliderAxisFilterChoices"]; cmbSliderAxisFilterChoices.Items.Add("Nothing_Selected"); foreach (var value in Enum.GetValues(typeof(JoystickAxisFilters))) { cmbSliderAxisFilterChoices.Items.Add(value); } cmbSliderAxisFilterChoices.SelectedIndex = 0; #endregion cmbSliderChoices #endregion pageSliderOptions #region pageAxisOptions Control pageAxisOptions = tabJoystickControlOptions.Controls["pageAxisOptions"]; ComboBox cmbAxisChoices; cmbAxisChoices = (ComboBox)pageAxisOptions.Controls["cmbAxisChoices"]; cmbAxisChoices.Items.Add("Nothing_Selected"); foreach (var value in Enum.GetValues(typeof(JoystickSliderAxes))) { cmbAxisChoices.Items.Add(value); } cmbAxisChoices.SelectedIndex = 0; ComboBox cmbAxisFilterChoices; cmbAxisFilterChoices = (ComboBox)pageAxisOptions.Controls["cmbAxisFilterChoices"]; cmbAxisFilterChoices.Items.Add("Nothing_Selected"); foreach (var value in Enum.GetValues(typeof(JoystickAxisFilters))) { cmbAxisFilterChoices.Items.Add(value); } cmbAxisFilterChoices.SelectedIndex = 0; Control pageJoystickButtonOptions = tabJoystickControlOptions.Controls["pageJoystickButtonOptions"]; ListBox lstJoyButtonChoices = (ListBox)pageJoystickButtonOptions.Controls["lstJoyButtonChoices"]; lstJoyButtonChoices.Items.Add("Nothing_Selected"); foreach (var value in Enum.GetValues(typeof(JoystickButtons))) { lstJoyButtonChoices.Items.Add(value); } lstJoyButtonChoices.SelectedIndex = 0; #endregion pageAxisOptions #endregion pageJoystickOptions //___ InCin filtering by combo boxes and listboxes --- all me // setting all indexes at 0 -- tracks "Nothing_Selected" #region IndexChanged //if(page visible == enabled){ cmbMouseButtonChoices.SelectedIndexChange += delegate(ComboBox sender) { message = null; if (cmbDeviceType.SelectedIndex == 0 || lstCommand.SelectedIndex == 0) //Nothing_Selected return; if (sender.SelectedIndex == 0) { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " MouseButton: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } else { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " MouseButton: " + sender.SelectedItem.ToString(); message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } lblMessage.Text = message; }; cmbMouseScrollChoices.SelectedIndexChange += delegate(ComboBox sender) { message = null; if (cmbDeviceType.SelectedIndex == 0 || lstCommand.SelectedIndex == 0)// Nothing_Selected return; if (sender.SelectedIndex == 0) { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " MouseScroll: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); lstKeyboardButtonChoices.Visible = false; } else { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " MouseScroll: " + sender.SelectedItem.ToString(); message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); lstKeyboardButtonChoices.Visible = true; } lblMessage.Text = message; }; lstKeyboardButtonChoices.SelectedIndexChange += delegate(ListBox sender) { message = null; //MainOptionsTabControl.Visible = false; if (cmbDeviceType.SelectedIndex == 0 || lstCommand.SelectedIndex == 0) return; if (sender.SelectedIndex == 0) // Nothing_Selected { //Nothing_Selected //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " KeyboardButton: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } else { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " KeyboardButton: " + sender.SelectedItem.ToString(); message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } lblMessage.Text = message; }; //} //if(page visible == enabled) cmbSliderChoices.SelectedIndexChange += delegate(ComboBox sender) { message = null; //MainOptionsTabControl.Visible = false; if (cmbDeviceType.SelectedIndex == 0 || lstCommand.SelectedIndex == 0) // Nothing_Selected { return; } if (sender.SelectedIndex == 0) { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " Slider: Nothing_Selected"; message += " Axis: Nothing_Selected"; message += " AxisFilter: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); //cmbSliderChoices.Visible = false; } else //if( sender.SelectedIndex != 0) { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " Slider: " + sender.SelectedItem.ToString(); //sender message += " Axis: Nothing_Selected"; message += " AxisFilter: Nothing_Selected"; //event update message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); //recursive scroll change //cmbSliderAxisChoices.Visible = true; } lblMessage.Text = message; }; cmbSliderAxisChoices.SelectedIndexChange += delegate(ComboBox sender) { message = null; if (cmbDeviceType.SelectedIndex == 0 || lstCommand.SelectedIndex == 0 || cmbSliderChoices.SelectedIndex == 0) // Nothing_Selected return; if (sender.SelectedIndex == 0) { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " Slider: " + cmbSliderChoices.SelectedItem.ToString(); message += " Axis: Nothing_Selected"; message += " AxisFilter: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); cmbSliderAxisFilterChoices.Visible = false; } else { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " Slider: " + cmbSliderChoices.SelectedItem.ToString(); message += " Axis: " + sender.SelectedItem.ToString(); message += " AxisFilter: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); cmbSliderAxisFilterChoices.Visible = true; } lblMessage.Text = message; }; cmbSliderAxisFilterChoices.SelectedIndexChange += delegate(ComboBox sender) { message = null; if (cmbDeviceType.SelectedIndex == 0 || lstCommand.SelectedIndex == 0 || cmbSliderChoices.SelectedIndex == 0 || cmbSliderAxisChoices.SelectedIndex == 0)// Nothing_Selected return; if (sender.SelectedIndex == 0) { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " Slider: " + cmbSliderChoices.SelectedItem.ToString(); message += " Axis: " + cmbSliderAxisChoices.SelectedItem.ToString(); message += " AxisFilter: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } else { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " Slider: " + cmbSliderChoices.SelectedItem; message += " Axis: " + cmbSliderChoices.SelectedItem.ToString(); message += " AxisFilter: " + sender.SelectedItem.ToString(); message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } lblMessage.Text = message; }; //} //if(page visible == enabled){ cmbAxisChoices.SelectedIndexChange += delegate(ComboBox sender) { message = null; if (cmbDeviceType.SelectedIndex == 0 || lstCommand.SelectedIndex == 0)// Nothing_Selected { cntrlCommands.Visible = false; //MainOptionsTabControl.Visible = false; return; } if (cmbAxisChoices.SelectedIndex == 0) { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " Axis: Nothing_Selected"; message += " AxisFilter: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } else { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " Axis: " + sender.SelectedItem.ToString(); message += " AxisFilter: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } lblMessage.Text = message; }; cmbAxisFilterChoices.SelectedIndexChange += delegate(ComboBox sender) { message = null; if (cmbDeviceType.SelectedIndex == 0 || lstCommand.SelectedIndex == 0 || cmbAxisChoices.SelectedIndex == 0) { //MainOptionsTabControl.Visible = false; return; } if (cmbAxisFilterChoices.SelectedIndex == 0) { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " Axis: " + cmbAxisChoices.SelectedItem.ToString(); message += " AxisFilter: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } else { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " Axis: " + cmbAxisChoices.SelectedItem.ToString(); message += " AxisFilter: " + sender.SelectedItem.ToString(); message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } lblMessage.Text = message; }; lstJoyButtonChoices.SelectedIndexChange += delegate(ListBox sender) { message = null; if (cmbDeviceType.SelectedIndex == 0 || lstCommand.SelectedIndex == 0) { //MainOptionsTabControl.Visible = false; return; } if (lstJoyButtonChoices.SelectedIndex == 0) { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " JoystickButton: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } else { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " JoystickButton: " + sender.SelectedItem.ToString(); message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } lblMessage.Text = message; }; //} lstCommand.SelectedIndexChange += delegate(ListBox sender) { message = null; if (cmbDeviceType.SelectedIndex == 0) return; if (sender.SelectedIndex == 0) { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + "Nothing_Selected"; message += " Bind: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); MainOptionsTabControl.Visible = false; } else { //message = "Device: " + cmbDevice.SelectedItem.ToString(); message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " Bind: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); MainOptionsTabControl.Visible = true; } lblMessage.Text = message; }; #region comboDeviceType // Filters down through each TabControl hides what isn't needed // MainOptionsTabControl // MouseTabControl // Primary choices cmbDeviceType.SelectedIndexChange += delegate(ComboBox sender) { message = null; if (sender.SelectedIndex == -1) { cntrlCommands.Visible = false; MainOptionsTabControl.Visible = false; return; } if (sender.SelectedIndex != 0) { Devices devicetype = devicetype_selected = (Devices)sender.SelectedItem; cntrlCommands.Visible = true; MainOptionsTabControl.Visible = false; switch (devicetype) { case Devices.Mouse: { pageControlsButton_Click(pageControlsButtons[0]); pageControlsButtons[0].Enable = true; pageControlsButtons[1].Enable = false; pageControlsButtons[2].Enable = false; break; } case Devices.Keyboard: { pageControlsButton_Click(pageControlsButtons[1]); pageControlsButtons[0].Enable = false; pageControlsButtons[1].Enable = true; pageControlsButtons[2].Enable = false; break; } case Devices.Joystick: { pageControlsButton_Click(pageControlsButtons[2]); pageControlsButtons[0].Enable = false; pageControlsButtons[1].Enable = false; pageControlsButtons[2].Enable = true; break; } case Devices.Joystick_Xbox360: { pageControlsButton_Click(pageControlsButtons[2]); pageControlsButtons[0].Enable = false; pageControlsButtons[1].Enable = true; pageControlsButtons[2].Enable = true; break; } case Devices.Joystick_Playstation: { pageControlsButton_Click(pageControlsButtons[2]); pageControlsButtons[0].Enable = false; pageControlsButtons[1].Enable = true; pageControlsButtons[2].Enable = true; break; } case Devices.Joystick_WII: { pageControlsButton_Click(pageControlsButtons[2]); pageControlsButtons[0].Enable = false; pageControlsButtons[1].Enable = true; pageControlsButtons[2].Enable = true; break; } //case Devices.Custom_Audio: // { // pageControlsButton_Click(pageControlsButtons[2]); // pageControlsButtons[0].Enable = true; // pageControlsButtons[1].Enable = true; // pageControlsButtons[2].Enable = true; // break; // } case Devices.Custom: { pageControlsButton_Click(pageControlsButtons[0]); pageControlsButtons[0].Enable = true; pageControlsButtons[1].Enable = true; pageControlsButtons[2].Enable = true; break; } default: { pageControlsButton_Click(pageControlsButtons[0]); pageControlsButtons[0].Enable = true; pageControlsButtons[1].Enable = true; pageControlsButtons[2].Enable = true; break; } } message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: Nothing_Selected"; message += " Bind: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); if (lstCommand.SelectedIndex != 0) { message = "DeviceType: " + cmbDeviceType.SelectedItem.ToString(); message += " Command: " + lstCommand.SelectedItem.ToString(); message += " Bind: Nothing_Selected"; message += " Strength: " + scrlSelectedStrength.Value.ToString("F2"); } } else { message = " Nothing_Selected"; cntrlCommands.Visible = false; MainOptionsTabControl.Visible = false; pageControlsButtons[0].Enable = true; pageControlsButtons[1].Enable = true; pageControlsButtons[2].Enable = true; } lblMessage.Text = message; }; #endregion comboDeviceType #region comboDevice // server selected.music == "<station>" //cmbDevice.SelectedIndexChange += delegate(ComboBox sender) //{ // //if (sender.SelectedIndex != -1) // //{ // // InputDevice inputdevices = (InputDevice)sender.SelectedItem; // // //Set deviceType // // // continue // //} // //lblMessage.Text = message; // ; // //hidden for now //}; #endregion comboDevice #endregion IndexChanged #region ButtonOK ((Button)Add_Custom_Control.Controls["buttonOK"]).Click += delegate(Button sender) { if (cmbDeviceType.SelectedIndex == 0) { CreateMessageBox("No Device selected, select a device first!"); return; } else //(cmbDeviceType.SelectedIndex != 0) devicetype_selected = (Devices)cmbDeviceType.SelectedItem; if (lstCommand.SelectedIndex == 0) { CreateMessageBox("No Command binding selected, select a Command first!"); return; } else // if (lstCommand.SelectedIndex != 0) command_selected = (GameControlKeys)lstCommand.SelectedItem; float currentstrength = float.Parse(Strength_selected.ToString("F2")); //if (pageControlsButtons[0].Enable == true || pageControlsButtons[1].Enable == true || pageControlsButtons[2].Enable == true) switch (devicetype_selected) //devicetype { case Devices.Nothing_Selected: { CreateMessageBox("No Device selected, select a device first!"); return; } //break; case Devices.Keyboard: { // group Keyboard if (lstKeyboardButtonChoices.SelectedIndex != 0) { GameControlsManager.SystemKeyboardMouseValue key; lstKeyboardButtonChoices_selected = (EKeys)lstKeyboardButtonChoices.SelectedItem; Strength_selected = currentstrength; if (!GameControlsManager.Instance.IsAlreadyBinded((EKeys)lstKeyboardButtonChoices_selected/*, currentstrength*/, out key) && key == null) { //GameControlsManager.Instance.GetItemByControlKey(command_selected).BindedKeyboardMouseValues.Add(new GameControlsManager.SystemKeyboardMouseValue(lstKeyboardButtonChoices_selected)); //devicetype_selected)); var controlItem = GameControlsManager.Instance.GetItemByControlKey(command_selected); var newSystemValue = new GameControlsManager.SystemKeyboardMouseValue(lstKeyboardButtonChoices_selected); newSystemValue.Parent = controlItem; newSystemValue.Strength = Strength_selected; controlItem.BindedKeyboardMouseValues.Add(newSystemValue); //Game.OptionsWindow.UpdateBindedInputControlsListBox(); } else { message = "Key" + cmbMouseButtonChoices_selected + ": Command: " + command_selected + " Strength: 1 is already bound"; lblMessage.Text = message; CreateMessageBox(message); message = ""; cmbMouseButtonChoices_selected = 0; lstCommand.SelectedIndex = 0; return; } } else { lstKeyboardButtonChoices.SelectedIndex = 0; lstKeyboardButtonChoices_selected = (EKeys)0; } break; } case Devices.Mouse: { // group Mouse if (cmbMouseButtonChoices.SelectedIndex != 0) { ////check for existing matching binds before saving GameControlsManager.SystemKeyboardMouseValue key; cmbMouseButtonChoices_selected = (EMouseButtons)cmbMouseButtonChoices.SelectedItem; if (GameControlsManager.Instance.IsAlreadyBinded((EMouseButtons)cmbMouseButtonChoices_selected, out key)) //currentstrength, { message = "Mouse Button" + cmbMouseButtonChoices_selected + ": Command: " + command_selected + " is already bound"; //" Strength: " + currentstrength + //new MessageBoxWindow( text, "Key already bound. Clearing , try again", null ); CreateMessageBox(message); cmbMouseButtonChoices_selected = 0; cmbMouseButtonChoices.SelectedIndex = 0; lstCommand.SelectedIndex = 0; message = ""; return; } var cmbMouseButtonChoicesControlItem = GameControlsManager.Instance.GetItemByControlKey(command_selected); var cmbMouseButtonChoicesSystemValue = new GameControlsManager.SystemKeyboardMouseValue(cmbMouseButtonChoices_selected, currentstrength); cmbMouseButtonChoicesSystemValue.Parent = cmbMouseButtonChoicesControlItem; cmbMouseButtonChoicesControlItem.BindedKeyboardMouseValues.Add(cmbMouseButtonChoicesSystemValue); //UpdateBindedInputControlsListBox(); } else if (cmbMouseScrollChoices.SelectedIndex != 0) { GameControlsManager.SystemKeyboardMouseValue key; cmbMouseScrollChoices_selected = (MouseScroll)cmbMouseScrollChoices.SelectedItem; if (GameControlsManager.Instance.IsAlreadyBinded((MouseScroll)cmbMouseScrollChoices_selected, currentstrength, out key)) { message = "Mouse Button" + cmbMouseScrollChoices_selected + ": Command: " + command_selected + " is already bound"; //+ " Strength: " + currentstrength //new MessageBoxWindow( text, "Key already bound. Clearing , try again", null ); CreateMessageBox(message); message = ""; return; } var cmbMouseScrollChoicescontrolItem = GameControlsManager.Instance.GetItemByControlKey(command_selected); var cmbMouseScrollChoicesSystemValue = new GameControlsManager.SystemKeyboardMouseValue(cmbMouseScrollChoices_selected, currentstrength); cmbMouseScrollChoicesSystemValue.Parent = cmbMouseScrollChoicescontrolItem; //cmbMouseScrollChoicesSystemValue.Strength = Strength_selected; cmbMouseScrollChoicescontrolItem.BindedKeyboardMouseValues.Add(cmbMouseScrollChoicesSystemValue); //UpdateBindedInputControlsListBox(); } else { cmbMouseButtonChoices.SelectedIndex = 0; cmbMouseButtonChoices_selected = (EMouseButtons)0; cmbMouseScrollChoices.SelectedIndex = 0; cmbMouseScrollChoices_selected = (MouseScroll)0; } break; } case Devices.Joystick: case Devices.Joystick_Playstation: case Devices.Joystick_WII: case Devices.Joystick_Xbox360: { //Filter by tab //group joystick //slider options if (cmbSliderChoices.SelectedIndex != 0 && cmbSliderAxisChoices.SelectedIndex != 0 && cmbSliderAxisFilterChoices.SelectedIndex != 0) { //if (cmbSliderChoices.SelectedIndex != 0) cmbSliderChoices_selected = (JoystickSliders)cmbSliderChoices.SelectedItem; //if (cmbSliderAxisChoices.SelectedIndex != 0) cmbSliderAxisChoices_selected = (JoystickSliderAxes)cmbSliderAxisChoices.SelectedItem; //if (cmbSliderAxisFilterChoices.SelectedIndex != 0) cmbSliderAxisFilterChoices_selected = (JoystickAxisFilters)cmbSliderAxisFilterChoices.SelectedItem; var cmbSliderChoicescontrolItem = GameControlsManager.Instance.GetItemByControlKey(command_selected); var cmbSliderChoicesSystemValue = new GameControlsManager.SystemJoystickValue(cmbSliderChoices_selected, cmbSliderAxisChoices_selected, cmbSliderAxisFilterChoices_selected, currentstrength); cmbSliderChoicesSystemValue.Parent = cmbSliderChoicescontrolItem; cmbSliderChoicescontrolItem.bindedJoystickValues.Add(cmbSliderChoicesSystemValue); //UpdateBindedInputControlsListBox(); break; } else { cmbSliderChoices.SelectedIndex = 0; cmbSliderChoices_selected = (JoystickSliders)0; cmbSliderAxisChoices.SelectedIndex = 0; cmbSliderAxisChoices_selected = (JoystickSliderAxes)0; cmbSliderAxisFilterChoices.SelectedIndex = 0; cmbSliderAxisFilterChoices_selected = (JoystickAxisFilters)0; } //axis filter if (cmbAxisChoices.SelectedIndex != 0) cmbAxisChoices_selected = (JoystickSliderAxes)cmbAxisChoices.SelectedItem; else { cmbAxisChoices.SelectedIndex = 0; cmbAxisChoices_selected = (JoystickSliderAxes)0; } if (cmbAxisFilterChoices.SelectedIndex == 0) cmbAxisFilterChoices_selected = (JoystickAxisFilters)cmbAxisFilterChoices.SelectedItem; else { cmbAxisFilterChoices.SelectedIndex = 0; cmbAxisFilterChoices_selected = (JoystickAxisFilters)0; } //buttons if (lstJoyButtonChoices.SelectedIndex == 0) lstJoyButtonChoices_selected = (JoystickButtons)lstJoyButtonChoices.SelectedItem; else { lstJoyButtonChoices.SelectedIndex = 0; lstJoyButtonChoices_selected = (JoystickButtons)0; } break; } case Devices.Custom: { break; } //case Devices.Custom_Audio: // { // break; // } } //GameControlsManager.Instance.GetItemByControlKey(command_selected).BindedKeyboardMouseValues.Add(new GameControlsManager.SystemKeyboardMouseValue(lstKeyboardButtonChoices_selected)); //save bind //GameControlsManager.Instance.SaveCustomConfig(); //GameControlsManager.Instance.LoadCustomConfig(); Add_Custom_Control.SetShouldDetach(); }; #endregion ButtonOK ((Button)Add_Custom_Control.Controls["buttonReset"]).Click += delegate(Button sender) { cmbDevice.SelectedIndex = 0; cmbDeviceType.SelectedIndex = 0; lstCommand.SelectedIndex = 0; cmbMouseButtonChoices.SelectedIndex = 0; cmbMouseScrollChoices.SelectedIndex = 0; lstKeyboardButtonChoices.SelectedIndex = 0; cmbSliderChoices.SelectedIndex = 0; cmbSliderAxisChoices.SelectedIndex = 0; cmbSliderAxisFilterChoices.SelectedIndex = 0; cmbAxisChoices.SelectedIndex = 0; cmbAxisFilterChoices.SelectedIndex = 0; lstJoyButtonChoices.SelectedIndex = 0; cntrlCommands.Visible = false; scrlSelectedStrength.Value = 1f; MainOptionsTabControl.Visible = false; message = " Nothing_Selected"; lblMessage.Text = message; }; ((Button)Add_Custom_Control.Controls["buttonCancel"]).Click += delegate(Button sender) { Add_Custom_Control.SetShouldDetach(); }; #endregion AddCustomControl.Gui MainOptionsTabControl.SelectedIndex = lastPageIndex2; UpdateMainOptionsPageButtonsState(); }
/// <summary> /// Check if the Given Input is Binded. Return the currently binded control to the input /// </summary> public bool IsAlreadyBinded(MouseScroll scrollDirection, float strength, out SystemKeyboardMouseValue control) { control = null; foreach (GameControlItem item in Items) { if (item.BindedKeyboardMouseValues.Count <= 0) continue; foreach (SystemKeyboardMouseValue value in item.BindedKeyboardMouseValues) { if (value.Type == SystemKeyboardMouseValue.Types.MouseScrollDirection && value.ScrollDirection == scrollDirection && value.Strength == strength) { control = value; return true; } } } return false; }
public DefaultKeyboardMouseValueAttribute( MouseScroll mouseScrollDirection ) { value = new GameControlsManager.SystemKeyboardMouseValue( mouseScrollDirection ); }