X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fcontrol%2Fjoystickkeyboardcontroller.hpp;h=f989ea6f64a543418e2ab78697fa3f27feb7ae8d;hb=657fc40723665c04b3150946f5bd66b6b0af9230;hp=3f3499729016e21e5e3f3eb0923199138d351115;hpb=5c386075212cf48cba4f940b90ba6e013b179edb;p=supertux.git diff --git a/src/control/joystickkeyboardcontroller.hpp b/src/control/joystickkeyboardcontroller.hpp index 3f3499729..f989ea6f6 100644 --- a/src/control/joystickkeyboardcontroller.hpp +++ b/src/control/joystickkeyboardcontroller.hpp @@ -1,7 +1,7 @@ // $Id$ -// +// // SuperTux -// Copyright (C) 2005 Matthias Braun +// Copyright (C) 2006 Matthias Braun // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License @@ -12,21 +12,26 @@ // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -// 02111-1307, USA. +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef __JOYSTICKKEYBOARDCONTROLLER_H__ #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; @@ -46,53 +51,69 @@ 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; - std::vector joysticks; - typedef std::map ButtonMap; ButtonMap joy_button_map; + + 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_x; - int dead_zone_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; - enum { - MNID_KEY_UP, - MNID_KEY_DOWN, - MNID_KEY_LEFT, - MNID_KEY_RIGHT, - MNID_KEY_JUMP, - MNID_KEY_ACTION - }; - enum { - MNID_JS_JUMP, - MNID_JS_ACTION, - MNID_JS_MENU, - MNID_JS_PAUSE - }; + 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); - void reset_joybutton(int button, Control c); - void reset_key(SDLKey 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 set_joy_controls(Control id, bool value); int wait_for_key; - int wait_for_joybutton; + int wait_for_joystick; class KeyboardMenu; class JoystickMenu; - + KeyboardMenu* key_options_menu; JoystickMenu* joystick_options_menu; friend class KeyboardMenu; @@ -100,4 +121,3 @@ private: }; #endif -