From 59f29ca975974a9add5090984dd4354c48b226ef Mon Sep 17 00:00:00 2001 From: Benau Date: Sun, 28 Oct 2018 12:59:23 +0800 Subject: [PATCH] Fix #3168 --- src/karts/controller/local_player_controller.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/karts/controller/local_player_controller.cpp b/src/karts/controller/local_player_controller.cpp index 184783fdf..3899c9957 100644 --- a/src/karts/controller/local_player_controller.cpp +++ b/src/karts/controller/local_player_controller.cpp @@ -178,10 +178,22 @@ bool LocalPlayerController::action(PlayerAction action, int value, } } + // Check if skid key is pressed and if turn button is in disagreement + // with the current steering dominant, ignore the skid key press, see #3168 + if (action == PA_DRIFT && value != 0) + { + if ((!PlayerController::action(PA_STEER_LEFT, 0, /*dry_run*/true) && + m_controls->getSteer() < 0.0f) || + (!PlayerController::action(PA_STEER_RIGHT, 0, /*dry_run*/true) && + m_controls->getSteer() > 0.0f)) + return false; + } + // If this event does not change the control state (e.g. // it's a (auto) repeat event), do nothing. This especially // optimises traffic to the server and other clients. - if (!PlayerController::action(action, value, /*dry_run*/true)) return false; + if (!PlayerController::action(action, value, /*dry_run*/true)) + return false; // Register event with history if(!history->replayHistory())