Skip to content

Commit 2df78e1

Browse files
authored
resolve: (Day) 1865 - Resolves issue where mice XButtons weren't fully implemented (#1866)
1 parent 376ba3c commit 2df78e1

File tree

4 files changed

+48
-2
lines changed

4 files changed

+48
-2
lines changed

Intersect.Client.Framework/Input/MouseButtons.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,11 @@ public enum MouseButtons
99

1010
Right,
1111

12-
Middle
12+
Middle,
13+
14+
X1,
15+
16+
X2
1317

1418
}
1519
}

Intersect.Client/Core/Controls/ControlValue.cs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ public partial class ControlValue
1313

1414
public Keys Key { get; set; }
1515

16-
public bool IsMouseKey => Key == Keys.LButton || Key == Keys.RButton || Key == Keys.MButton;
16+
public bool IsMouseKey => Key == Keys.LButton
17+
|| Key == Keys.RButton
18+
|| Key == Keys.MButton
19+
|| Key == Keys.XButton1
20+
|| Key == Keys.XButton2;
1721

1822
[JsonConstructor]
1923
public ControlValue(Keys modifier, Keys key)
@@ -66,6 +70,20 @@ public bool IsDown()
6670
return true;
6771
}
6872

73+
break;
74+
case Keys.XButton1:
75+
if (Globals.InputManager.MouseButtonDown(MouseButtons.X1))
76+
{
77+
return true;
78+
}
79+
80+
break;
81+
case Keys.XButton2:
82+
if (Globals.InputManager.MouseButtonDown(MouseButtons.X2))
83+
{
84+
return true;
85+
}
86+
6987
break;
7088
}
7189
}

Intersect.Client/Core/Input.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,14 @@ public static void OnMouseDown(Keys modifier, MouseButtons btn)
306306
case MouseButtons.Middle:
307307
key = Keys.MButton;
308308

309+
break;
310+
case MouseButtons.X1:
311+
key = Keys.XButton1;
312+
313+
break;
314+
case MouseButtons.X2:
315+
key = Keys.XButton2;
316+
309317
break;
310318
}
311319

@@ -375,6 +383,14 @@ public static void OnMouseUp(Keys modifier, MouseButtons btn)
375383
case MouseButtons.Middle:
376384
key = Keys.MButton;
377385

386+
break;
387+
case MouseButtons.X1:
388+
key = Keys.XButton1;
389+
390+
break;
391+
case MouseButtons.X2:
392+
key = Keys.XButton2;
393+
378394
break;
379395
}
380396

Intersect.Client/MonoGame/Input/MonoInput.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,10 @@ public override bool MouseButtonDown(MouseButtons mb)
116116
return mLastMouseState.RightButton == ButtonState.Pressed;
117117
case MouseButtons.Middle:
118118
return mLastMouseState.MiddleButton == ButtonState.Pressed;
119+
case MouseButtons.X1:
120+
return mLastMouseState.XButton1 == ButtonState.Pressed;
121+
case MouseButtons.X2:
122+
return mLastMouseState.XButton2 == ButtonState.Pressed;
119123
default:
120124
throw new ArgumentOutOfRangeException(nameof(mb), mb, null);
121125
}
@@ -206,6 +210,8 @@ public override void Update()
206210
CheckMouseButton(modifier, state.LeftButton, MouseButtons.Left);
207211
CheckMouseButton(modifier, state.RightButton, MouseButtons.Right);
208212
CheckMouseButton(modifier, state.MiddleButton, MouseButtons.Middle);
213+
CheckMouseButton(modifier, state.XButton1, MouseButtons.X1);
214+
CheckMouseButton(modifier, state.XButton2, MouseButtons.X2);
209215

210216
CheckMouseScrollWheel(state.ScrollWheelValue, state.HorizontalScrollWheelValue);
211217

@@ -258,6 +264,8 @@ public override void Update()
258264
CheckMouseButton(modifier, ButtonState.Released, MouseButtons.Left);
259265
CheckMouseButton(modifier, ButtonState.Released, MouseButtons.Right);
260266
CheckMouseButton(modifier, ButtonState.Released, MouseButtons.Middle);
267+
CheckMouseButton(modifier, ButtonState.Released, MouseButtons.X1);
268+
CheckMouseButton(modifier, ButtonState.Released, MouseButtons.X2);
261269
mLastKeyboardState = new KeyboardState();
262270
mLastMouseState = new MouseState();
263271
}

0 commit comments

Comments
 (0)