- made some changes for joystick in menu. better?
authorRyan Flegel <rflegel@gmail.com>
Fri, 21 May 2004 23:37:56 +0000 (23:37 +0000)
committerRyan Flegel <rflegel@gmail.com>
Fri, 21 May 2004 23:37:56 +0000 (23:37 +0000)
SVN-Revision: 1296

src/defines.h
src/menu.cpp
src/menu.h

index a33d976..1c2d9b1 100644 (file)
@@ -39,6 +39,9 @@ enum Direction { LEFT = 0, RIGHT = 1 };
 #define UP 0
 #define DOWN 1
 
+/* Joystick menu delay */
+#define JOYSTICK_MENU_DELAY 500
+
 /* Dying types: */
 
 /* ---- NO 0 */
index 1de8a7f..f9fc8ae 100644 (file)
@@ -326,6 +326,8 @@ Menu::Menu()
   arrange_left = 0;
   active_item  = 0;
   effect.init(false);
+
+  joystick_timer.init(true);
 }
 
 void Menu::set_pos(int x, int y, float rw, float rh)
@@ -818,10 +820,18 @@ Menu::event(SDL_Event& event)
   case  SDL_JOYAXISMOTION:
     if(event.jaxis.axis == joystick_keymap.y_axis)
     {
-      if (event.jaxis.value > 1024)
+      if (event.jaxis.value > joystick_keymap.dead_zone && !joystick_timer.started())
+      {
         menuaction = MENU_ACTION_DOWN;
-      else if (event.jaxis.value < -1024)
+        joystick_timer.start(JOYSTICK_MENU_DELAY);
+      }
+      else if (event.jaxis.value < -joystick_keymap.dead_zone && !joystick_timer.started())
+      {
         menuaction = MENU_ACTION_UP;
+        joystick_timer.start(JOYSTICK_MENU_DELAY);
+      }
+      else
+        joystick_timer.stop();
     }
     break;
   case  SDL_JOYBUTTONDOWN:
index fa1ddf5..4ac921d 100644 (file)
@@ -179,6 +179,7 @@ private:
   /* input implementation variables */
   int delete_character;
   char mn_input_char;
+  Timer joystick_timer;
   
 public:
   Timer effect;