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

57 lines
1.3 KiB
C++
Raw Normal View History

#ifndef XNA_PLATFORM_KEYBOARD_DX_HPP
#define XNA_PLATFORM_KEYBOARD_DX_HPP
#include "../input/keyboard.hpp"
#include <Keyboard.h>
namespace xna {
struct KeyboardState : public IKeyboardState {
public:
KeyboardState() = default;
KeyboardState(DirectX::Keyboard::State const& state) :_state(state) {}
virtual bool IsKeyDown(Keys key) const override {
const auto k = static_cast<DirectX::Keyboard::Keys>(key);
return _state.IsKeyDown(k);
}
virtual bool IsKeyUp(Keys key) const override {
const auto k = static_cast<DirectX::Keyboard::Keys>(key);
return _state.IsKeyUp(k);
}
2024-04-16 19:27:05 -03:00
public:
DirectX::Keyboard::State _state{};
};
2024-04-24 10:11:53 -03:00
struct Keyboard : public IKeyboard {
inline static void Initialize() {
_dxKeyboard = uNew<DirectX::Keyboard>();
}
2024-04-19 16:21:45 -03:00
private:
constexpr Keyboard() = default;
constexpr Keyboard(Keyboard&&) = default;
constexpr Keyboard(const Keyboard&) = default;
2024-04-16 19:27:05 -03:00
public:
2024-04-19 16:21:45 -03:00
inline static uptr<DirectX::Keyboard> _dxKeyboard = nullptr;
};
inline KeyboardState IKeyboard::GetState() {
2024-04-19 16:21:45 -03:00
if (!Keyboard::_dxKeyboard)
return KeyboardState();
const auto state = Keyboard::_dxKeyboard->GetState();
return KeyboardState(state);
}
inline bool IKeyboard::IsConnected() {
2024-04-19 16:21:45 -03:00
if (!Keyboard::_dxKeyboard)
return false;
return Keyboard::_dxKeyboard->IsConnected();
}
}
#endif