1
0
mirror of https://github.com/borgesdan/xn65 synced 2024-12-29 21:54:47 +01:00

Implementa GamePadId

This commit is contained in:
Danilo 2024-04-17 20:23:43 -03:00
parent 704f17c26b
commit 1a521799f9
2 changed files with 17 additions and 5 deletions

View File

@ -38,10 +38,12 @@ namespace xna {
virtual ButtonState BigButton() const = 0; virtual ButtonState BigButton() const = 0;
}; };
struct GamePadId;
struct IGamePadCapabilities { struct IGamePadCapabilities {
virtual GamePadCapabilitiesType GamePadType() const = 0; virtual GamePadCapabilitiesType GamePadType() const = 0;
virtual bool IsConnected() const = 0; virtual bool IsConnected() const = 0;
virtual String Id() const = 0; virtual GamePadId Id() const = 0;
virtual Ushort Vid() const = 0; virtual Ushort Vid() const = 0;
virtual Ushort Pid() const = 0; virtual Ushort Pid() const = 0;
}; };

View File

@ -208,13 +208,23 @@ namespace xna {
ButtonState _bigButton{}; ButtonState _bigButton{};
}; };
struct GamePadId {
#ifdef USING_GAMEINPUT
APP_LOCAL_DEVICE_ID id;
#elif defined(USING_WINDOWS_GAMING_INPUT)
std::wstring id;
#else
uint64_t id;
#endif
};
struct GamePadCapabilities : public IGamePadCapabilities { struct GamePadCapabilities : public IGamePadCapabilities {
constexpr GamePadCapabilities() = default; constexpr GamePadCapabilities() = default;
constexpr GamePadCapabilities(DirectX::GamePad::Capabilities const& capabilities) { constexpr GamePadCapabilities(DirectX::GamePad::Capabilities const& capabilities) {
_type = static_cast<GamePadCapabilitiesType>(capabilities.gamepadType); _type = static_cast<GamePadCapabilitiesType>(capabilities.gamepadType);
_connected = capabilities.connected; _connected = capabilities.connected;
_id = capabilities.id; _id.id = capabilities.id;
_vid = capabilities.vid; _vid = capabilities.vid;
_pid = capabilities.pid; _pid = capabilities.pid;
} }
@ -227,8 +237,8 @@ namespace xna {
return _connected; return _connected;
} }
virtual String Id() const override { virtual GamePadId Id() const override {
return XnaHToString(_id); return _id;
} }
virtual constexpr Ushort Vid() const override { virtual constexpr Ushort Vid() const override {
@ -242,7 +252,7 @@ namespace xna {
private: private:
GamePadCapabilitiesType _type{}; GamePadCapabilitiesType _type{};
bool _connected{ false }; bool _connected{ false };
std::wstring _id{ 0 }; GamePadId _id{ 0 };
Ushort _vid{ 0 }; Ushort _vid{ 0 };
Ushort _pid{ 0 }; Ushort _pid{ 0 };
}; };