1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-10-05 19:31:04 +00:00

Restore pass-through of direction keys (#11924)

This moves relevant code into the PlayerControl class and gets rid of separate keyPressed variable.
This commit is contained in:
sfan5 2022-01-09 18:46:36 +01:00 committed by GitHub
parent 76dbd0d2d0
commit 5eb45e1ea0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 165 additions and 98 deletions

View file

@ -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()
{