-Use "jump-with-up" in config for all controlers. No need
[supertux.git] / src / control / joystickkeyboardcontroller.hpp
index 90930ea..9b6a39f 100644 (file)
@@ -1,7 +1,7 @@
 //  $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__
@@ -49,54 +48,65 @@ public:
 
 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,
-    MNID_KEY_CONSOLE
-  };
-  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;
@@ -104,4 +114,3 @@ private:
 };
 
 #endif
-