Skip to content

Commit 8d09d7d

Browse files
committed
Gamepad support implemented for Win/Lin/OSX
1 parent cef31c6 commit 8d09d7d

File tree

9 files changed

+1089
-990
lines changed

9 files changed

+1089
-990
lines changed

MonoGame.Framework.Linux.sln

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

2-
Microsoft Visual Studio Solution File, Format Version 10.00
3-
# Visual Studio 2008
2+
Microsoft Visual Studio Solution File, Format Version 11.00
3+
# Visual Studio 2010
44
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonoGame.Framework.Linux", "MonoGame.Framework\MonoGame.Framework.Linux.csproj", "{35253CE1-C864-4CD3-8249-4D1319748E8F}"
55
EndProject
66
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lidgren.Network.Linux", "ThirdParty\Lidgren.Network\Lidgren.Network.Linux.csproj", "{AE483C29-042E-4226-BA52-D247CE7676DA}"

MonoGame.Framework/Input/GamePadButtons.cs

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -44,91 +44,96 @@ namespace Microsoft.Xna.Framework.Input
4444
{
4545
public struct GamePadButtons
4646
{
47-
private Buttons _buttons;
48-
49-
public GamePadButtons(Buttons buttons)
50-
{
51-
_buttons = buttons;
52-
}
47+
internal Buttons buttons;
5348

5449
public ButtonState A
5550
{
5651
get
5752
{
58-
return ((_buttons & Buttons.A) == Buttons.A) ? ButtonState.Pressed : ButtonState.Released;
53+
return ((buttons & Buttons.A) == Buttons.A) ? ButtonState.Pressed : ButtonState.Released;
5954
}
6055
}
6156
public ButtonState B
6257
{
6358
get
6459
{
65-
return ((_buttons & Buttons.B) == Buttons.B) ? ButtonState.Pressed : ButtonState.Released;
60+
return ((buttons & Buttons.B) == Buttons.B) ? ButtonState.Pressed : ButtonState.Released;
6661
}
6762
}
6863
public ButtonState Back
6964
{
7065
get
7166
{
72-
return ((_buttons & Buttons.Back) == Buttons.Back) ? ButtonState.Pressed : ButtonState.Released;
67+
return ((buttons & Buttons.Back) == Buttons.Back) ? ButtonState.Pressed : ButtonState.Released;
7368
}
7469
}
7570
public ButtonState X
7671
{
7772
get
7873
{
79-
return ((_buttons & Buttons.X) == Buttons.X) ? ButtonState.Pressed : ButtonState.Released;
74+
return ((buttons & Buttons.X) == Buttons.X) ? ButtonState.Pressed : ButtonState.Released;
8075
}
8176
}
8277
public ButtonState Y
8378
{
8479
get
8580
{
86-
return ((_buttons & Buttons.Y) == Buttons.Y) ? ButtonState.Pressed : ButtonState.Released;
81+
return ((buttons & Buttons.Y) == Buttons.Y) ? ButtonState.Pressed : ButtonState.Released;
8782
}
8883
}
8984
public ButtonState Start
9085
{
9186
get
9287
{
93-
return ((_buttons & Buttons.Start) == Buttons.Start) ? ButtonState.Pressed : ButtonState.Released;
88+
return ((buttons & Buttons.Start) == Buttons.Start) ? ButtonState.Pressed : ButtonState.Released;
9489
}
9590
}
9691
public ButtonState LeftShoulder
9792
{
9893
get
9994
{
100-
return ((_buttons & Buttons.LeftShoulder) == Buttons.LeftShoulder) ? ButtonState.Pressed : ButtonState.Released;
95+
return ((buttons & Buttons.LeftShoulder) == Buttons.LeftShoulder) ? ButtonState.Pressed : ButtonState.Released;
10196
}
10297
}
10398
public ButtonState LeftStick
10499
{
105100
get
106101
{
107-
return ((_buttons & Buttons.LeftStick) == Buttons.LeftStick) ? ButtonState.Pressed : ButtonState.Released;
102+
return ((buttons & Buttons.LeftStick) == Buttons.LeftStick) ? ButtonState.Pressed : ButtonState.Released;
108103
}
109104
}
110105
public ButtonState RightShoulder
111106
{
112107
get
113108
{
114-
return ((_buttons & Buttons.RightShoulder) == Buttons.RightShoulder) ? ButtonState.Pressed : ButtonState.Released;
109+
return ((buttons & Buttons.RightShoulder) == Buttons.RightShoulder) ? ButtonState.Pressed : ButtonState.Released;
115110
}
116111
}
117112
public ButtonState RightStick
118113
{
119114
get
120115
{
121-
return ((_buttons & Buttons.RightStick) == Buttons.RightStick) ? ButtonState.Pressed : ButtonState.Released;
116+
return ((buttons & Buttons.RightStick) == Buttons.RightStick) ? ButtonState.Pressed : ButtonState.Released;
122117
}
123118
}
124119
public ButtonState BigButton
125120
{
126121
get
127122
{
128-
return ((_buttons & Buttons.BigButton) == Buttons.BigButton) ? ButtonState.Pressed : ButtonState.Released;
123+
return ((buttons & Buttons.BigButton) == Buttons.BigButton) ? ButtonState.Pressed : ButtonState.Released;
129124
}
130125
}
126+
127+
public GamePadButtons(Buttons buttons)
128+
{
129+
this.buttons = buttons;
130+
}
131+
internal GamePadButtons(params Buttons[] buttons)
132+
: this()
133+
{
134+
foreach (Buttons b in buttons)
135+
this.buttons |= b;
136+
}
131137
}
132-
133138
}
134139

Lines changed: 50 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// #region License
1+
#region License
22
// /*
33
// Microsoft Public License (Ms-PL)
44
// MonoGame - Copyright © 2009 The MonoGame Team
@@ -36,53 +36,54 @@
3636
// permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular
3737
// purpose and non-infringement.
3838
// */
39-
// #endregion License
40-
//
41-
42-
using System;
43-
44-
namespace Microsoft.Xna.Framework.Input
39+
#endregion License
40+
41+
using System;
42+
43+
namespace Microsoft.Xna.Framework.Input
4544
{
46-
public struct GamePadDPad
45+
public struct GamePadDPad
4746
{
48-
public GamePadDPad (
49-
ButtonState upValue,
50-
ButtonState downValue,
51-
ButtonState leftValue,
52-
ButtonState rightValue )
53-
{
54-
}
55-
56-
public ButtonState Down
57-
{
58-
get
59-
{
60-
return ButtonState.Released;
61-
}
62-
}
63-
64-
public ButtonState Left
65-
{
66-
get
67-
{
68-
return ButtonState.Released;
69-
}
70-
}
71-
72-
public ButtonState Right
73-
{
74-
get
75-
{
76-
return ButtonState.Released;
77-
}
78-
}
79-
80-
public ButtonState Up
81-
{
82-
get
83-
{
84-
return ButtonState.Released;
85-
}
86-
}
87-
}
88-
}
47+
public ButtonState Down
48+
{
49+
get;
50+
internal set;
51+
}
52+
public ButtonState Left
53+
{
54+
get;
55+
internal set;
56+
}
57+
public ButtonState Right
58+
{
59+
get;
60+
internal set;
61+
}
62+
public ButtonState Up
63+
{
64+
get;
65+
internal set;
66+
}
67+
68+
public GamePadDPad(ButtonState upValue, ButtonState downValue, ButtonState leftValue, ButtonState rightValue)
69+
: this()
70+
{
71+
Up = upValue;
72+
Down = downValue;
73+
Left = leftValue;
74+
Right = rightValue;
75+
}
76+
internal GamePadDPad(Buttons b)
77+
: this()
78+
{
79+
if ((b & Buttons.DPadDown) == Buttons.DPadDown)
80+
Down = ButtonState.Pressed;
81+
if ((b & Buttons.DPadLeft) == Buttons.DPadLeft)
82+
Left = ButtonState.Pressed;
83+
if ((b & Buttons.DPadRight) == Buttons.DPadRight)
84+
Right = ButtonState.Pressed;
85+
if ((b & Buttons.DPadUp) == Buttons.DPadUp)
86+
Up = ButtonState.Pressed;
87+
}
88+
}
89+
}

0 commit comments

Comments
 (0)