MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_gamepad.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_GAMEPAD_H_1610083201
12#define INCGUARD_MGL_GAMEPAD_H_1610083201
13
15#include <mgl/mgl_environment.h>
16
17namespace MGL::Input
18{
21{
22public:
23 /* ------------------------------------------------------------------------- */
28 /* ------------------------------------------------------------------------- */
29 Gamepad(PadEntry entry = PadEntry::Auto) noexcept
31 , _state(_server.GetPadState(entry))
32 {
33 }
34
35 /* ------------------------------------------------------------------------- */
41 /* ------------------------------------------------------------------------- */
42 [[nodiscard]] constexpr bool IsEnabled() const noexcept
43 {
44 return _state.IsEnabled();
45 }
46
47 /* ------------------------------------------------------------------------- */
52 /* ------------------------------------------------------------------------- */
53 [[nodiscard]] constexpr int32_t GetPlayerIndex() const noexcept
54 {
55 return _state.GetPlayerIndex();
56 }
57
58 /* ------------------------------------------------------------------------- */
63 /* ------------------------------------------------------------------------- */
64 [[nodiscard]] constexpr PadType GetType() const noexcept
65 {
66 return _state.GetType();
67 }
68
69 /* ------------------------------------------------------------------------- */
74 /* ------------------------------------------------------------------------- */
75 [[nodiscard]] const char *GetName() const noexcept
76 {
77 return _state.GetDeviceInfo().productName.c_str();
78 }
79
80 /* ------------------------------------------------------------------------- */
86 /* ------------------------------------------------------------------------- */
87 PadEntry Entry(PadEntry entry = PadEntry::Auto) noexcept
88 {
89 return _server.Entry(_state, entry);
90 }
91
92 /* ------------------------------------------------------------------------- */
96 /* ------------------------------------------------------------------------- */
97 void Leave() noexcept
98 {
99 _server.Leave(_state);
100 }
101
102 /* ------------------------------------------------------------------------- */
107 /* ------------------------------------------------------------------------- */
108 [[nodiscard]] constexpr PadEntry GetEntry() const noexcept
109 {
110 return _state.GetEntry();
111 }
112
113 /* ------------------------------------------------------------------------- */
118 /* ------------------------------------------------------------------------- */
119 [[nodiscard]] constexpr uint8_t GetEntryNumber() const noexcept
120 {
121 return HasEntry() ? static_cast<uint8_t>(_state.GetEntry()) + 1 : 0;
122 }
123
124 /* ------------------------------------------------------------------------- */
130 /* ------------------------------------------------------------------------- */
131 [[nodiscard]] constexpr bool HasEntry() const noexcept
132 {
133 return _state.HasEntry();
134 }
135
136 /* ------------------------------------------------------------------------- */
141 /* ------------------------------------------------------------------------- */
142 [[nodiscard]] constexpr const Vector2 &GetLeftStick() const noexcept
143 {
144 return _state.GetLeftStick();
145 }
146
147 /* ------------------------------------------------------------------------- */
152 /* ------------------------------------------------------------------------- */
153 [[nodiscard]] constexpr const Vector2 &GetRightStick() const noexcept
154 {
155 return _state.GetRightStick();
156 }
157
158 /* ------------------------------------------------------------------------- */
165 /* ------------------------------------------------------------------------- */
166 [[nodiscard]] constexpr bool IsPressing(PadButton button) const noexcept
167 {
168 return _state.IsPressing(button);
169 }
170
171 /* ------------------------------------------------------------------------- */
178 /* ------------------------------------------------------------------------- */
179 [[nodiscard]] constexpr bool IsPressing(PadButtonFlags buttonFlags) const noexcept
180 {
181 return _state.IsPressing(buttonFlags);
182 }
183
184 /* ------------------------------------------------------------------------- */
191 /* ------------------------------------------------------------------------- */
192 [[nodiscard]] constexpr bool IsPressingAny(PadButtonFlags buttonFlags = kGamepadButtonAll) const noexcept
193 {
194 return _state.IsPressingAny(buttonFlags);
195 }
196
197 /* ------------------------------------------------------------------------- */
204 /* ------------------------------------------------------------------------- */
205 [[nodiscard]] constexpr bool IsTriggered(PadButton button) const noexcept
206 {
207 return _state.IsTriggered(button);
208 }
209
210 /* ------------------------------------------------------------------------- */
217 /* ------------------------------------------------------------------------- */
218 [[nodiscard]] constexpr bool IsReleased(PadButton button) const noexcept
219 {
220 return _state.IsReleased(button);
221 }
222
223 /* ------------------------------------------------------------------------- */
230 /* ------------------------------------------------------------------------- */
231 [[nodiscard]] constexpr bool IsARepeat(PadButton button) const noexcept
232 {
233 return _state.IsARepeat(button);
234 }
235
236 /* ------------------------------------------------------------------------- */
241 /* ------------------------------------------------------------------------- */
242 [[nodiscard]] constexpr const PadState &GetState() const noexcept
243 {
244 return _state;
245 }
246
247 /* ------------------------------------------------------------------------- */
253 /* ------------------------------------------------------------------------- */
254 explicit constexpr operator bool() const noexcept
255 {
256 return IsEnabled();
257 }
258
259 /* ------------------------------------------------------------------------- */
265 /* ------------------------------------------------------------------------- */
266 constexpr bool operator!() const noexcept
267 {
268 return !static_cast<bool>(*this);
269 }
270
271private:
272 GamepadServer &_server;
273 const PadState &_state;
274};
275} // namespace MGL::Input
276
277#endif // INCGUARD_MGL_GAMEPAD_H_1610083201
278
279// vim: et ts=4 sw=4 sts=4
MGL ゲームパッド
Definition mgl_gamepad.h:21
const char * GetName() const noexcept
ゲームパッドの名前を取得
Definition mgl_gamepad.h:75
constexpr uint8_t GetEntryNumber() const noexcept
エントリー番号を数値で取得
Definition mgl_gamepad.h:119
constexpr bool operator!() const noexcept
有効状態を否定演算子で取得
Definition mgl_gamepad.h:266
constexpr const Vector2 & GetLeftStick() const noexcept
左スティックの値を設定
Definition mgl_gamepad.h:142
constexpr PadType GetType() const noexcept
ゲームパッドの種類を取得
Definition mgl_gamepad.h:64
constexpr bool IsTriggered(PadButton button) const noexcept
ボタンが押された瞬間を取得
Definition mgl_gamepad.h:205
constexpr bool IsPressing(PadButton button) const noexcept
ボタンが押されているかを取得
Definition mgl_gamepad.h:166
constexpr const PadState & GetState() const noexcept
パッドステートを取得
Definition mgl_gamepad.h:242
constexpr bool IsARepeat(PadButton button) const noexcept
リピート入力を取得
Definition mgl_gamepad.h:231
constexpr bool IsPressingAny(PadButtonFlags buttonFlags=kGamepadButtonAll) const noexcept
指定したボタンのいずれかが押されているかを取得
Definition mgl_gamepad.h:192
PadEntry Entry(PadEntry entry=PadEntry::Auto) noexcept
ゲームパッドのエントリー
Definition mgl_gamepad.h:87
constexpr PadEntry GetEntry() const noexcept
エントリー番号の取得
Definition mgl_gamepad.h:108
constexpr bool IsEnabled() const noexcept
このゲームパッドが有効かどうかを取得
Definition mgl_gamepad.h:42
void Leave() noexcept
ゲームパッドのエントリーの解除
Definition mgl_gamepad.h:97
constexpr int32_t GetPlayerIndex() const noexcept
プレイヤーインデックスの設定
Definition mgl_gamepad.h:53
constexpr bool IsReleased(PadButton button) const noexcept
ボタンが離された瞬間を取得
Definition mgl_gamepad.h:218
constexpr const Vector2 & GetRightStick() const noexcept
右スティックの値を設定
Definition mgl_gamepad.h:153
constexpr bool HasEntry() const noexcept
エントリー済みかを取得
Definition mgl_gamepad.h:131
Gamepad(PadEntry entry=PadEntry::Auto) noexcept
コンストラクタ
Definition mgl_gamepad.h:29
constexpr bool IsPressing(PadButtonFlags buttonFlags) const noexcept
指定したボタンが全て押されているかを取得
Definition mgl_gamepad.h:179
ゲームパッドサーバ
Definition mgl_gamepad_server.h:37
PadEntry Entry(const PadState &entryState, PadEntry entry) noexcept
ゲームパッドのエントリー
Definition mgl_gamepad_server.cc:204
void Leave(const PadState &leaveState) noexcept
ゲームパッドのエントリーの解除
Definition mgl_gamepad_server.cc:261
ゲームパッドステートクラス
Definition mgl_gamepad_state.h:26
constexpr const Vector2 & GetRightStick() const noexcept
右スティックの値を設定
Definition mgl_gamepad_state.h:271
constexpr bool IsEnabled() const noexcept
このパッドステートが有効かどうかを取得
Definition mgl_gamepad_state.h:113
constexpr bool IsTriggered(PadButton button) const noexcept
ボタンが押された瞬間を取得
Definition mgl_gamepad_state.h:334
constexpr PadEntry GetEntry() const noexcept
エントリー番号の取得
Definition mgl_gamepad_state.h:171
constexpr const Vector2 & GetLeftStick() const noexcept
左スティックの値を設定
Definition mgl_gamepad_state.h:249
constexpr PadType GetType() const noexcept
ゲームパッドの種類を取得
Definition mgl_gamepad_state.h:146
constexpr bool HasEntry() const noexcept
エントリー済みかを取得
Definition mgl_gamepad_state.h:183
constexpr bool IsPressing(PadButton button) const noexcept
ボタンが押されているかを取得
Definition mgl_gamepad_state.h:295
constexpr const PadDeviceInfo & GetDeviceInfo() const noexcept
デバイス情報を取得
Definition mgl_gamepad_state.h:461
constexpr int32_t GetPlayerIndex() const noexcept
プレイヤーインデックスの設定
Definition mgl_gamepad_state.h:135
constexpr bool IsARepeat(PadButton button) const noexcept
リピート入力を取得
Definition mgl_gamepad_state.h:372
constexpr bool IsReleased(PadButton button) const noexcept
ボタンが離された瞬間を取得
Definition mgl_gamepad_state.h:347
constexpr bool IsPressingAny(PadButtonFlags buttonFlags=kGamepadButtonAll) const noexcept
指定したボタンのいずれかが押されているかを取得
Definition mgl_gamepad_state.h:321
static GamepadServer & GetInstance() noexcept
Definition mgl_singleton.h:74
MGL 環境定義
PadEntry
パッドのエントリータイプ
Definition mgl_gamepad_defs.h:164
PadType
ゲームパッドの種類
Definition mgl_gamepad_defs.h:148
PadButton
ゲームパッドのボタンの定義
Definition mgl_gamepad_defs.h:33
MGL ゲームパッドサーバ
STL::string productName
製品名
Definition mgl_gamepad_defs.h:201
2Dベクトル
Definition mgl_vector2.h:23