https://github.com/libsdl-org/Maelstrom/commit/ccc3c92999b3af09f20453ceccfc9a2f8cf29ee5
From ccc3c92999b3af09f20453ceccfc9a2f8cf29ee5 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Wed, 23 Nov 2011 23:40:38 -0500
Subject: [PATCH] Made joystick thrust a little less sensitive. Added joystick
hat control
---
game/controls.cpp | 27 +++++++++++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/game/controls.cpp b/game/controls.cpp
index 675bac3c..cef23cb8 100644
--- a/game/controls.cpp
+++ b/game/controls.cpp
@@ -258,11 +258,11 @@ static void HandleEvent(SDL_Event *event)
#ifdef SDL_INIT_JOYSTICK
/* -- Handle joystick axis motion */
case SDL_JOYAXISMOTION:
- /* X-Axis - rotate right/left */
player = GetJoystickPlayer(event->jaxis.which);
if (!player) {
break;
}
+ /* X-Axis - rotate right/left */
if ( event->jaxis.axis == 0 ) {
if ( event->jaxis.value < -8000 ) {
player->SetControl(LEFT_KEY, 1);
@@ -278,7 +278,7 @@ static void HandleEvent(SDL_Event *event)
} else
/* Y-Axis - accelerate */
if ( event->jaxis.axis == 1 ) {
- if ( event->jaxis.value < -8000 ) {
+ if ( event->jaxis.value < -16000 ) {
player->SetControl(THRUST_KEY, 1);
} else {
player->SetControl(THRUST_KEY, 0);
@@ -286,6 +286,29 @@ static void HandleEvent(SDL_Event *event)
}
break;
+ /* -- Handle joystick axis motion */
+ case SDL_JOYHATMOTION:
+ player = GetJoystickPlayer(event->jhat.which);
+ if (!player) {
+ break;
+ }
+ if ( event->jhat.value & SDL_HAT_LEFT ) {
+ player->SetControl(LEFT_KEY, 1);
+ } else {
+ player->SetControl(LEFT_KEY, 0);
+ }
+ if ( event->jhat.value & SDL_HAT_RIGHT ) {
+ player->SetControl(RIGHT_KEY, 1);
+ } else {
+ player->SetControl(RIGHT_KEY, 0);
+ }
+ if ( event->jhat.value & SDL_HAT_UP ) {
+ player->SetControl(THRUST_KEY, 1);
+ } else {
+ player->SetControl(THRUST_KEY, 0);
+ }
+ break;
+
/* -- Handle joystick button presses/releases */
case SDL_JOYBUTTONDOWN:
case SDL_JOYBUTTONUP: