* Comment out resizable flag because it blue-screens on Windows
[supertux.git] / src / control / joystickkeyboardcontroller.hpp
index 40f1afa..f989ea6 100644 (file)
 #define __JOYSTICKKEYBOARDCONTROLLER_H__
 
 #include "controller.hpp"
-#include "lisp/lisp.hpp"
-#include "lisp/writer.hpp"
+
+namespace lisp {
+class Writer;
+class Lisp;
+}
+
 #include <SDL.h>
+
 #include <string>
 #include <map>
+#include <vector>
 
 class Menu;
 
@@ -45,14 +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<SDLKey, Control> KeyMap;
   KeyMap keymap;
 
@@ -78,20 +88,25 @@ private:
   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_control(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_joyhat(int dir, 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;