--- 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 ||