|
@@ -152,8 +152,14 @@ public:
|
|
|
// in the subsequent iteration of Game::processPlayerInteraction
|
|
|
bool WasKeyReleased(const KeyPress &keycode) const { return keyWasReleased[keycode]; }
|
|
|
|
|
|
- void listenForKey(const KeyPress &keyCode) { keysListenedFor.set(keyCode); }
|
|
|
- void dontListenForKeys() { keysListenedFor.clear(); }
|
|
|
+ void listenForKey(const KeyPress &keyCode)
|
|
|
+ {
|
|
|
+ keysListenedFor.set(keyCode);
|
|
|
+ }
|
|
|
+ void dontListenForKeys()
|
|
|
+ {
|
|
|
+ keysListenedFor.clear();
|
|
|
+ }
|
|
|
|
|
|
s32 getMouseWheel()
|
|
|
{
|
|
@@ -189,8 +195,6 @@ public:
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
- s32 mouse_wheel = 0;
|
|
|
-
|
|
|
JoystickController *joystick = nullptr;
|
|
|
|
|
|
#ifdef HAVE_TOUCHSCREENGUI
|
|
@@ -198,6 +202,8 @@ public:
|
|
|
#endif
|
|
|
|
|
|
private:
|
|
|
+ s32 mouse_wheel = 0;
|
|
|
+
|
|
|
// The current state of keys
|
|
|
KeyList keyIsDown;
|
|
|
|
|
@@ -272,6 +278,12 @@ public:
|
|
|
{
|
|
|
m_receiver->joystick = &joystick;
|
|
|
}
|
|
|
+
|
|
|
+ virtual ~RealInputHandler()
|
|
|
+ {
|
|
|
+ m_receiver->joystick = nullptr;
|
|
|
+ }
|
|
|
+
|
|
|
virtual bool isKeyDown(GameKeyType k)
|
|
|
{
|
|
|
return m_receiver->IsKeyDown(keycache.key[k]) || joystick.isKeyDown(k);
|
|
@@ -288,6 +300,7 @@ public:
|
|
|
{
|
|
|
return m_receiver->WasKeyReleased(keycache.key[k]) || joystick.wasKeyReleased(k);
|
|
|
}
|
|
|
+
|
|
|
virtual float getMovementSpeed()
|
|
|
{
|
|
|
bool f = m_receiver->IsKeyDown(keycache.key[KeyType::FORWARD]),
|
|
@@ -307,6 +320,7 @@ public:
|
|
|
}
|
|
|
return joystick.getMovementSpeed();
|
|
|
}
|
|
|
+
|
|
|
virtual float getMovementDirection()
|
|
|
{
|
|
|
float x = 0, z = 0;
|
|
@@ -326,10 +340,12 @@ public:
|
|
|
else
|
|
|
return joystick.getMovementDirection();
|
|
|
}
|
|
|
+
|
|
|
virtual bool cancelPressed()
|
|
|
{
|
|
|
return wasKeyDown(KeyType::ESC) || m_receiver->WasKeyDown(CancelKey);
|
|
|
}
|
|
|
+
|
|
|
virtual void clearWasKeyPressed()
|
|
|
{
|
|
|
m_receiver->clearWasKeyPressed();
|
|
@@ -338,17 +354,21 @@ public:
|
|
|
{
|
|
|
m_receiver->clearWasKeyReleased();
|
|
|
}
|
|
|
+
|
|
|
virtual void listenForKey(const KeyPress &keyCode)
|
|
|
{
|
|
|
m_receiver->listenForKey(keyCode);
|
|
|
}
|
|
|
- virtual void dontListenForKeys() { m_receiver->dontListenForKeys(); }
|
|
|
+ virtual void dontListenForKeys()
|
|
|
+ {
|
|
|
+ m_receiver->dontListenForKeys();
|
|
|
+ }
|
|
|
+
|
|
|
virtual v2s32 getMousePos()
|
|
|
{
|
|
|
- if (RenderingEngine::get_raw_device()->getCursorControl()) {
|
|
|
- return RenderingEngine::get_raw_device()
|
|
|
- ->getCursorControl()
|
|
|
- ->getPosition();
|
|
|
+ auto control = RenderingEngine::get_raw_device()->getCursorControl();
|
|
|
+ if (control) {
|
|
|
+ return control->getPosition();
|
|
|
}
|
|
|
|
|
|
return m_mousepos;
|
|
@@ -356,16 +376,18 @@ public:
|
|
|
|
|
|
virtual void setMousePos(s32 x, s32 y)
|
|
|
{
|
|
|
- if (RenderingEngine::get_raw_device()->getCursorControl()) {
|
|
|
- RenderingEngine::get_raw_device()
|
|
|
- ->getCursorControl()
|
|
|
- ->setPosition(x, y);
|
|
|
+ auto control = RenderingEngine::get_raw_device()->getCursorControl();
|
|
|
+ if (control) {
|
|
|
+ control->setPosition(x, y);
|
|
|
} else {
|
|
|
m_mousepos = v2s32(x, y);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- virtual s32 getMouseWheel() { return m_receiver->getMouseWheel(); }
|
|
|
+ virtual s32 getMouseWheel()
|
|
|
+ {
|
|
|
+ return m_receiver->getMouseWheel();
|
|
|
+ }
|
|
|
|
|
|
void clear()
|
|
|
{
|