SDXFrameWork  0.13
SDXFrameWork
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Joypad.h
1 //Copyright © 2014 SDXFramework
2 //[License]GNU Affero General Public License, version 3
3 //[Contact]http://sourceforge.jp/projects/dxframework/
4 #pragma once
5 #include <Multimedia/SDX.h>
6 #include <Multimedia/Key.h>
7 #include <Utility/EnumArray.h>
8 
9 namespace SDX
10 {
12  enum class PadType
13  {
14  KeyAndPad1,
15  Pad1,
16  Pad2,
17  Pad3,
18  Pad4,
19  KeyBord
20  };
21 
23  enum class PadCode :unsigned int
24  {
25  Button1,
26  Button2,
27  Button3,
28  Button4,
29  Button5,
30  Button6,
31  Button7,
32  Button8,
33  Button9,
34  Button10,
35  Button11,
36  Button12,
37  Button13,
38  Button14,
39  Button15,
40  Button16,
41  Button17,
42  Button18,
43  Button19,
44  Button20,
45  Button21,
46  Button22,
47  Button23,
48  Button24,
49  Button25,
50  Button26,
51  Button27,
52  Button28,
53  Down,
54  Left,
55  Right,
56  Up,
57  COUNT,
58  };
59 
63  class Joypad
64  {
65  friend class Input;
66  private:
67  PadType inputType = PadType::KeyAndPad1;
68  SDL_Joystick* handle;
69 
71 
72  Joypad(const Joypad &joypad){};
73  Joypad operator =(const Joypad &joypad) = delete;
74  public:
75  int StickX = 0;
76  int StickY = 0;
77 
110 
111  Joypad(){}
112 
114  void Open()
115  {
116  handle = SDL_JoystickOpen(0);
117  }
118 
120  void Make(PadType パッドタイプ)
121  {
122  inputType = パッドタイプ;
123  }
124 
126  void Reset()
127  {
128  Up.Reset();
129  Down.Reset();
130  Left.Reset();
131  Right.Reset();
132  Button1.Reset();
133  Button2.Reset();
134  Button3.Reset();
135  Button4.Reset();
136  Button5.Reset();
137  Button6.Reset();
138  Button7.Reset();
139  Button8.Reset();
140  Button9.Reset();
141  Button10.Reset();
142  Button11.Reset();
143  Button12.Reset();
144  Button13.Reset();
145  Button14.Reset();
146  Button15.Reset();
147  Button16.Reset();
148  Button17.Reset();
149  Button18.Reset();
150  Button19.Reset();
151  Button20.Reset();
152  Button21.Reset();
153  Button22.Reset();
154  Button23.Reset();
155  Button24.Reset();
156  Button25.Reset();
157  Button26.Reset();
158  Button27.Reset();
159  Button28.Reset();
160 
161  StickX = 0;
162  StickY = 0;
163  }
164 
166  void Update()
167  {
168  Down.Update(press[PadCode::Down]);
169  Left.Update(press[PadCode::Left]);
170  Right.Update(press[PadCode::Right]);
171  Up.Update(press[PadCode::Up]);
172  Button1.Update(press[PadCode::Button1]);
173  Button2.Update(press[PadCode::Button2]);
174  Button3.Update(press[PadCode::Button3]);
175  Button4.Update(press[PadCode::Button4]);
176  Button5.Update(press[PadCode::Button5]);
177  Button6.Update(press[PadCode::Button6]);
178  Button7.Update(press[PadCode::Button7]);
179  Button8.Update(press[PadCode::Button8]);
180  Button9.Update(press[PadCode::Button9]);
181  Button10.Update(press[PadCode::Button10]);
182  Button11.Update(press[PadCode::Button11]);
183  Button12.Update(press[PadCode::Button12]);
184  Button13.Update(press[PadCode::Button13]);
185  Button14.Update(press[PadCode::Button14]);
186  Button15.Update(press[PadCode::Button15]);
187  Button16.Update(press[PadCode::Button16]);
188  Button17.Update(press[PadCode::Button17]);
189  Button18.Update(press[PadCode::Button18]);
190  Button19.Update(press[PadCode::Button19]);
191  Button20.Update(press[PadCode::Button20]);
192  Button21.Update(press[PadCode::Button21]);
193  Button22.Update(press[PadCode::Button22]);
194  Button23.Update(press[PadCode::Button23]);
195  Button24.Update(press[PadCode::Button24]);
196  Button25.Update(press[PadCode::Button25]);
197  Button26.Update(press[PadCode::Button26]);
198  Button27.Update(press[PadCode::Button27]);
199  Button28.Update(press[PadCode::Button28]);
200  }
201 
204  {
205  return inputType;
206  }
207 
209  void SetInputType(PadType 入力タイプ)
210  {
211  inputType = 入力タイプ;
212  }
213 
215  static int GetCount()
216  {
217  return SDL_NumJoysticks();
218  }
219 
223  {
224  switch (index)
225  {
226  case PadCode::Button1:return Button1;
227  case PadCode::Button2: return Button2;
228  case PadCode::Button3: return Button3;
229  case PadCode::Button4: return Button4;
230  case PadCode::Button5: return Button5;
231  case PadCode::Button6: return Button6;
232  case PadCode::Button7: return Button7;
233  case PadCode::Button8: return Button8;
234  case PadCode::Button9: return Button9;
235  case PadCode::Button10: return Button10;
236  case PadCode::Button11: return Button11;
237  case PadCode::Button12: return Button12;
238  case PadCode::Button13: return Button13;
239  case PadCode::Button14: return Button14;
240  case PadCode::Button15: return Button15;
241  case PadCode::Button16: return Button16;
242  case PadCode::Button17: return Button17;
243  case PadCode::Button18: return Button18;
244  case PadCode::Button19: return Button19;
245  case PadCode::Button20: return Button20;
246  case PadCode::Button21: return Button21;
247  case PadCode::Button22: return Button22;
248  case PadCode::Button23: return Button23;
249  case PadCode::Button24: return Button24;
250  case PadCode::Button25: return Button25;
251  case PadCode::Button26: return Button26;
252  case PadCode::Button27: return Button27;
253  case PadCode::Button28: return Button28;
254  case PadCode::Down: return Down;
255  case PadCode::Left: return Left;
256  case PadCode::Right: return Right;
257  case PadCode::Up: return Up;
258  default: return Button1;
259  }
260  }
261  };
262 }
static int GetCount()
接続中のパッド数を取得.
Definition: Joypad.h:215
Key Button4
キー
Definition: Joypad.h:85
Key Button26
キー
Definition: Joypad.h:107
Key Button16
キー
Definition: Joypad.h:97
Key Button17
キー
Definition: Joypad.h:98
Key Button22
キー
Definition: Joypad.h:103
Key Down
キー
Definition: Joypad.h:78
Key Left
キー
Definition: Joypad.h:79
Key Button25
キー
Definition: Joypad.h:106
Key Button6
キー
Definition: Joypad.h:87
int StickY
ジョイスティックの縦方向入力
Definition: Joypad.h:76
Key Button12
キー
Definition: Joypad.h:93
Key Button13
キー
Definition: Joypad.h:94
Key Button21
キー
Definition: Joypad.h:102
Key Button3
キー
Definition: Joypad.h:84
PadType
ゲームパッドの種類.
Definition: Joypad.h:12
Key Button27
キー
Definition: Joypad.h:108
ジョイパッドの状態を表すクラス.
Definition: Joypad.h:63
PadCode
ゲームパッドコード.
Definition: Joypad.h:23
Key Up
キー
Definition: Joypad.h:81
void Reset()
キーのリセット.
Definition: Key.h:20
Key Button23
キー
Definition: Joypad.h:104
Key Button18
キー
Definition: Joypad.h:99
Key Button1
キー
Definition: Joypad.h:82
Key Button9
キー
Definition: Joypad.h:90
Key Button8
キー
Definition: Joypad.h:89
PadType GetInputType()
パッドタイプの取得.
Definition: Joypad.h:203
Key Right
キー
Definition: Joypad.h:80
Key Button11
キー
Definition: Joypad.h:92
Key Button24
キー
Definition: Joypad.h:105
Key Button15
キー
Definition: Joypad.h:96
void Reset()
状態のリセット.
Definition: Joypad.h:126
キーやマウスによる入力をまとめて管理するクラス.
Definition: Input.h:17
Key Button2
キー
Definition: Joypad.h:83
Key Button7
キー
Definition: Joypad.h:88
Key Button19
キー
Definition: Joypad.h:100
void Update(bool 押下フラグ)
押下状態の更新.
Definition: Key.h:29
void Open()
ジョイパッドを起動.
Definition: Joypad.h:114
Key Button14
キー
Definition: Joypad.h:95
Key Button5
キー
Definition: Joypad.h:86
void Make(PadType パッドタイプ)
パッドの作成.
Definition: Joypad.h:120
Key & operator[](PadCode index)
PadCodeでアクセス.
Definition: Joypad.h:222
Key Button10
キー
Definition: Joypad.h:91
各ボタンとキーを表すクラス.
Definition: Key.h:11
int StickX
ジョイスティックの横方向入力
Definition: Joypad.h:75
Key Button20
キー
Definition: Joypad.h:101
void Update()
状態の更新.
Definition: Joypad.h:166
Key Button28
キー
Definition: Joypad.h:109
void SetInputType(PadType 入力タイプ)
パッドタイプの設定.
Definition: Joypad.h:209