]> git.lizzy.rs Git - dragonfireclient.git/blobdiff - src/client/joystick_controller.h
Remove unused ITextSceneNode header (#11476)
[dragonfireclient.git] / src / client / joystick_controller.h
index ed0ee4068296fc602d1d16fa4efdf5c2e44bd5d7..3f361e4ef66e469a53efd2beee6e65f3d28cec19 100644 (file)
@@ -17,8 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
-#ifndef JOYSTICK_HEADER
-#define JOYSTICK_HEADER
+#pragma once
 
 #include "irrlichttypes_extrabloated.h"
 #include "keys.h"
@@ -52,7 +51,8 @@ struct JoystickCombination {
 
 struct JoystickButtonCmb : public JoystickCombination {
 
-       JoystickButtonCmb() {}
+       JoystickButtonCmb() = default;
+
        JoystickButtonCmb(GameKeyType key, u32 filter_mask, u32 compare_mask) :
                filter_mask(filter_mask),
                compare_mask(compare_mask)
@@ -60,6 +60,8 @@ struct JoystickButtonCmb : public JoystickCombination {
                this->key = key;
        }
 
+       virtual ~JoystickButtonCmb() = default;
+
        virtual bool isTriggered(const irr::SEvent::SJoystickEvent &ev) const;
 
        u32 filter_mask;
@@ -68,7 +70,8 @@ struct JoystickButtonCmb : public JoystickCombination {
 
 struct JoystickAxisCmb : public JoystickCombination {
 
-       JoystickAxisCmb() {}
+       JoystickAxisCmb() = default;
+
        JoystickAxisCmb(GameKeyType key, u16 axis_to_compare, int direction, s16 thresh) :
                axis_to_compare(axis_to_compare),
                direction(direction),
@@ -77,7 +80,9 @@ struct JoystickAxisCmb : public JoystickCombination {
                this->key = key;
        }
 
-       virtual bool isTriggered(const irr::SEvent::SJoystickEvent &ev) const;
+       virtual ~JoystickAxisCmb() = default;
+
+       bool isTriggered(const irr::SEvent::SJoystickEvent &ev) const override;
 
        u16 axis_to_compare;
 
@@ -91,49 +96,47 @@ struct JoystickLayout {
        std::vector<JoystickButtonCmb> button_keys;
        std::vector<JoystickAxisCmb> axis_keys;
        JoystickAxisLayout axes[JA_COUNT];
-       s16 axes_dead_border;
+       s16 axes_deadzone;
 };
 
 class JoystickController {
 
 public:
        JoystickController();
+
+       void onJoystickConnect(const std::vector<irr::SJoystickInfo> &joystick_infos);
+
        bool handleEvent(const irr::SEvent::SJoystickEvent &ev);
        void clear();
 
        bool wasKeyDown(GameKeyType b)
        {
-               bool r = m_past_pressed_keys[b];
-               m_past_pressed_keys[b] = false;
+               bool r = m_past_keys_pressed[b];
+               m_past_keys_pressed[b] = false;
                return r;
        }
-       bool getWasKeyDown(GameKeyType b)
+
+       bool wasKeyReleased(GameKeyType b)
        {
-               return m_past_pressed_keys[b];
+               return m_keys_released[b];
        }
-       void clearWasKeyDown(GameKeyType b)
+       void clearWasKeyReleased(GameKeyType b)
        {
-               m_past_pressed_keys[b] = false;
+               m_keys_released[b] = false;
        }
 
-       bool wasKeyReleased(GameKeyType b)
+       bool wasKeyPressed(GameKeyType b)
        {
-               bool r = m_past_released_keys[b];
-               m_past_released_keys[b] = false;
-               return r;
+               return m_keys_pressed[b];
        }
-       bool getWasKeyReleased(GameKeyType b)
+       void clearWasKeyPressed(GameKeyType b)
        {
-               return m_past_pressed_keys[b];
-       }
-       void clearWasKeyReleased(GameKeyType b)
-       {
-               m_past_pressed_keys[b] = false;
+               m_keys_pressed[b] = false;
        }
 
        bool isKeyDown(GameKeyType b)
        {
-               return m_pressed_keys[b];
+               return m_keys_down[b];
        }
 
        s16 getAxis(JoystickAxis axis)
@@ -146,18 +149,21 @@ class JoystickController {
        f32 doubling_dtime;
 
 private:
-       const JoystickLayout *m_layout;
+       void setLayoutFromControllerName(const std::string &name);
+
+       JoystickLayout m_layout;
 
        s16 m_axes_vals[JA_COUNT];
 
-       std::bitset<KeyType::INTERNAL_ENUM_COUNT> m_pressed_keys;
+       u8 m_joystick_id = 0;
+
+       std::bitset<KeyType::INTERNAL_ENUM_COUNT> m_keys_down;
+       std::bitset<KeyType::INTERNAL_ENUM_COUNT> m_keys_pressed;
 
        f32 m_internal_time;
 
        f32 m_past_pressed_time[KeyType::INTERNAL_ENUM_COUNT];
 
-       std::bitset<KeyType::INTERNAL_ENUM_COUNT> m_past_pressed_keys;
-       std::bitset<KeyType::INTERNAL_ENUM_COUNT> m_past_released_keys;
+       std::bitset<KeyType::INTERNAL_ENUM_COUNT> m_past_keys_pressed;
+       std::bitset<KeyType::INTERNAL_ENUM_COUNT> m_keys_released;
 };
-
-#endif