X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcontrol%2Fjoystickkeyboardcontroller.hpp;h=705b7bc796c32ceb7f3b559ef324d6051d068544;hb=76c0dd8b3bac15d407b8e84e09a416b098d6a3c7;hp=49da0a2fb43c247aece16c8a8d4ab16dbd6c9039;hpb=08813a74da6ac1fd045a105e4e8105f1d7f716f0;p=supertux.git diff --git a/src/control/joystickkeyboardcontroller.hpp b/src/control/joystickkeyboardcontroller.hpp index 49da0a2fb..705b7bc79 100644 --- a/src/control/joystickkeyboardcontroller.hpp +++ b/src/control/joystickkeyboardcontroller.hpp @@ -20,7 +20,7 @@ #include "control/controller.hpp" #include - +#include // add by giby #include #include #include @@ -29,9 +29,26 @@ #include "util/writer_fwd.hpp" class Menu; +class KeyboardMenu; +class JoystickMenu; +class Controller; + + //SDL_JoystickID myID = SDL_JoystickInstanceID(myOpenedStick); -class JoystickKeyboardController : public Controller +class JoystickKeyboardController // http://wiki.libsdl.org/moin.fcg/SDL_Joystick for info { +private: + friend class KeyboardMenu; + friend class JoystickMenu; + + typedef Controller::Control Control; + typedef Uint8 JoyId; + + typedef std::map KeyMap; + typedef std::map, Control> ButtonMap; + typedef std::map, Control> AxisMap; + typedef std::map, Control> HatMap; + public: JoystickKeyboardController(); virtual ~JoystickKeyboardController(); @@ -40,34 +57,49 @@ public: */ void process_event(const SDL_Event& event); - void write(lisp::Writer& writer); + void write(Writer& writer); void read(const Reader& lisp); + void update(); void reset(); - Menu* get_key_options_menu(); - Menu* get_joystick_options_menu(); void updateAvailableJoysticks(); + Controller *get_main_controller(); + private: - void process_key_event(const SDL_Event& event); + void process_text_input_event(const SDL_TextInputEvent& event); + void process_key_event(const SDL_KeyboardEvent& 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 process_console_key_event(const SDL_KeyboardEvent& event); + void process_menu_key_event(const SDL_KeyboardEvent& event); void print_joystick_mappings(); - typedef std::map KeyMap; + SDL_Keycode 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(JoyId joy_id, int button, Control c); + void bind_joyaxis(JoyId joy_id, int axis, Control c); + void bind_joyhat(JoyId joy_id, int dir, Control c); + void bind_key(SDL_Keycode key, Control c); + + void set_joy_controls(Control id, bool value); + +private: + Controller *controller; + KeyMap keymap; - 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; @@ -89,31 +121,9 @@ private: 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 set_joy_controls(Control id, bool value); - int wait_for_key; int wait_for_joystick; - class KeyboardMenu; - class JoystickMenu; - - KeyboardMenu* key_options_menu; - JoystickMenu* joystick_options_menu; - friend class KeyboardMenu; - friend class JoystickMenu; - private: JoystickKeyboardController(const JoystickKeyboardController&); JoystickKeyboardController& operator=(const JoystickKeyboardController&);