]> git.lizzy.rs Git - minetest.git/blobdiff - src/client/joystick_controller.h
GameUI refactor (part 2/X): Move Game::guitext to GameUI + enhancements on StaticText
[minetest.git] / src / client / joystick_controller.h
index ed0ee4068296fc602d1d16fa4efdf5c2e44bd5d7..6bea282eeb3a19d0fb307ce20bafa7da3194edae 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)
@@ -68,7 +68,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),
@@ -98,6 +99,9 @@ class JoystickController {
 
 public:
        JoystickController();
+
+       void onJoystickConnect(const std::vector<irr::SJoystickInfo> &joystick_infos);
+
        bool handleEvent(const irr::SEvent::SJoystickEvent &ev);
        void clear();
 
@@ -146,10 +150,14 @@ 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];
 
+       u8 m_joystick_id = 0;
+
        std::bitset<KeyType::INTERNAL_ENUM_COUNT> m_pressed_keys;
 
        f32 m_internal_time;
@@ -159,5 +167,3 @@ class JoystickController {
        std::bitset<KeyType::INTERNAL_ENUM_COUNT> m_past_pressed_keys;
        std::bitset<KeyType::INTERNAL_ENUM_COUNT> m_past_released_keys;
 };
-
-#endif