Blob Blame History Raw
--- supertuxkart-0.2/src/player_kart.cpp~	2006-10-06 11:34:44.000000000 +0200
+++ supertuxkart-0.2/src/player_kart.cpp	2006-10-06 13:48:28.000000000 +0200
@@ -30,13 +30,16 @@
 // -----------------------------------------------------------------------------
 void PlayerKart::incomingJoystick  (const KartControl &ctrl) {
   //Steering keys(hold)
-  controls.lr      = -ctrl.data[0];
-  joystickWasMoved = fabsf(controls.lr)>0.01;
-  controls.accel   = -ctrl.data[1];
-  controls.brake   = player->getButton(KC_BRAKE)   & ctrl.buttons;
-  controls.wheelie = player->getButton(KC_WHEELIE) & ctrl.buttons;
+  joystickWasMoved = fabsf(ctrl.data[0])>0.01;
+  if ( joystickWasMoved )
+    controls.lr      = -ctrl.data[0];
+
+  if (fabsf(ctrl.data[1])>0.01)
+    controls.accel   = -ctrl.data[1];
 
   //One time press keys; these are cleared each frame so we don't have to
+  if (player->getButton(KC_BRAKE)  & ctrl.presses) controls.brake  = true;
+  if (player->getButton(KC_WHEELIE)& ctrl.presses) controls.wheelie= true;
   if (player->getButton(KC_RESCUE) & ctrl.presses) controls.rescue = true;
   if (player->getButton(KC_FIRE)   & ctrl.presses) controls.fire   = true;
   if (player->getButton(KC_JUMP)   & ctrl.presses) controls.jump   = true;
@@ -46,7 +49,9 @@
 // Only keys which must keep on working when still being pressed
 // are handled here, not 'one time action' keys like fire, ...
 void PlayerKart::handleKeyboard(float dt) {
-
+// Joystick steering values take precedence over keyboard, only
+// do the keyboard handling if joystick wasn't moved.
+if ( !joystickWasMoved ) {
   if(!config->newKeyboardStyle) {
     controls.lr = isKeyDown(player->getKey(KC_LEFT))  ?  1.0f 
                 : isKeyDown(player->getKey(KC_RIGHT)) ? -1.0f : 0.0f;
@@ -66,6 +71,7 @@
   }   // not old steering
     // clamp control value to be within  [-1,1]
   controls.lr = std::min(1.0f, std::max(-1.0f, controls.lr));
+}
 
   if(isKeyDown(player->getKey(KC_ACCEL)))   controls.accel   =  1.0f;
   if(isKeyDown(player->getKey(KC_BRAKE)))   controls.brake   =  true;
@@ -88,9 +94,7 @@
 
 // -----------------------------------------------------------------------------
 void PlayerKart::update(float dt) {
-  // Joystick values takes precedence over keyboard, only
-  // do the keyboard handling if joystick wasn't moved.
-  if(!joystickWasMoved) handleKeyboard(dt);
+  handleKeyboard(dt);
 
   if(world->getPhase()==World::START_PHASE) {
     if(controls.lr!=0.0 || controls.accel!=0.0 || controls.brake!=false ||