// $Id$
-//
+//
// SuperTux
-// Copyright (C) 2005 Matthias Braun <matze@braunis.de>
+// Copyright (C) 2006 Matthias Braun <matze@braunis.de>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// 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__
Menu* get_joystick_options_menu();
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<SDLKey, Control> KeyMap;
KeyMap keymap;
- std::vector<SDL_Joystick*> joysticks;
-
typedef std::map<int, Control> ButtonMap;
ButtonMap joy_button_map;
+
+ typedef std::map<int, Control> AxisMap;
+ AxisMap joy_axis_map;
+
+ typedef std::map<int, Control> HatMap;
+ HatMap joy_hat_map;
+
+ std::vector<SDL_Joystick*> 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;
};
#endif
-