X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fcontrol%2Fjoystickkeyboardcontroller.hpp;h=f989ea6f64a543418e2ab78697fa3f27feb7ae8d;hb=b029182b66e1f36e8eb7a1d8d23d26d475dec45f;hp=a905bbd6cabe194a86356468e0a781e3481b750f;hpb=577ebf97a06e7fefcc330559ca62b3fd815791dc;p=supertux.git diff --git a/src/control/joystickkeyboardcontroller.hpp b/src/control/joystickkeyboardcontroller.hpp index a905bbd6c..f989ea6f6 100644 --- a/src/control/joystickkeyboardcontroller.hpp +++ b/src/control/joystickkeyboardcontroller.hpp @@ -21,11 +21,17 @@ #define __JOYSTICKKEYBOARDCONTROLLER_H__ #include "controller.hpp" -#include "lisp/lisp.hpp" -#include "lisp/writer.hpp" + +namespace lisp { +class Writer; +class Lisp; +} + #include + #include #include +#include class Menu; @@ -45,12 +51,18 @@ public: Menu* get_key_options_menu(); Menu* get_joystick_options_menu(); + void updateAvailableJoysticks(); private: void process_key_event(const SDL_Event& event); + void process_hat_event(const SDL_JoyHatEvent& jhat); + void process_axis_event(const SDL_JoyAxisEvent& jaxis); + void process_button_event(const SDL_JoyButtonEvent& jbutton); void process_console_key_event(const SDL_Event& event); void process_menu_key_event(const SDL_Event& event); + void print_joystick_mappings(); + typedef std::map KeyMap; KeyMap keymap; @@ -60,25 +72,41 @@ private: typedef std::map AxisMap; AxisMap joy_axis_map; + typedef std::map HatMap; + HatMap joy_hat_map; + std::vector joysticks; std::string name; - bool use_hat; - int joyaxis_x; - int joyaxis_y; + int dead_zone; /// the number of buttons all joysticks have int min_joybuttons; /// the max number of buttons a joystick has int max_joybuttons; + int max_joyaxis; + + int max_joyhats; + + Uint8 hat_state; + + bool jump_with_up_joy; // Joystick up jumps + bool jump_with_up_kbd; // Keyboard up jumps + SDLKey reversemap_key(Control c); int reversemap_joybutton(Control c); int reversemap_joyaxis(Control c); + int reversemap_joyhat(Control c); + + void unbind_joystick_control(Control c); + + void bind_joybutton(int button, Control c); + void bind_joyaxis(int axis, Control c); + void bind_joyhat(int dir, Control c); + void bind_key(SDLKey key, Control c); - void reset_joybutton(int button, Control c); - void reset_joyaxis(int axis, Control c); - void reset_key(SDLKey key, Control c); + void set_joy_controls(Control id, bool value); int wait_for_key; int wait_for_joystick;