From 3e72c0e0024979333e6dea0bf91fce3242e397a9 Mon Sep 17 00:00:00 2001 From: Steve Checkoway Date: Sat, 25 Feb 2006 14:58:14 +0000 Subject: [PATCH] Fix pump pad support. Second player untested but seems likely to work. --- stepmania/src/archutils/Darwin/PumpDevice.cpp | 66 +++++++------------ 1 file changed, 23 insertions(+), 43 deletions(-) diff --git a/stepmania/src/archutils/Darwin/PumpDevice.cpp b/stepmania/src/archutils/Darwin/PumpDevice.cpp index eaf2723d53..ec414a2f7f 100644 --- a/stepmania/src/archutils/Darwin/PumpDevice.cpp +++ b/stepmania/src/archutils/Darwin/PumpDevice.cpp @@ -8,6 +8,8 @@ void PumpDevice::Open() AddElementToQueue( 3 ); AddElementToQueue( 4 ); AddElementToQueue( 6 ); + AddElementToQueue( 7 ); + AddElementToQueue( 8 ); } void PumpDevice::GetButtonPresses( vector >& vPresses, int cookie, @@ -15,66 +17,44 @@ void PumpDevice::GetButtonPresses( vector >& vPresses, i { DeviceButton db1 = DeviceButton_Invalid; DeviceButton db2 = DeviceButton_Invalid; - bool pressed; + bool pressed1 = !(value & 0x1); + bool pressed2 = !(value & 0x2); - LOG->Trace( "Pump button: %d, %d.", cookie, value ); switch( cookie ) { case 2: - db1 = JOY_BUTTON_1; - pressed = value == 0; + db2 = JOY_BUTTON_1; // bit 9 break; case 3: - switch( value ) - { - case 1: - db1 = JOY_BUTTON_5; - pressed = true; - break; - case 2: - db1 = JOY_BUTTON_4; - pressed = true; - break; - case 3: - db1 = JOY_BUTTON_5; - db2 = JOY_BUTTON_4; - pressed = false; - break; - } + db1 = JOY_BUTTON_5; // bit 10 + db2 = JOY_BUTTON_4; // bit 11 break; case 4: - switch( value ) - { - case 1: - db1 = JOY_BUTTON_2; - pressed = true; - break; - case 2: - db1 = JOY_BUTTON_3; - pressed = true; - break; - case 3: - db1 = JOY_BUTTON_2; - db2 = JOY_BUTTON_3; - pressed = false; - break; - } + db1 = JOY_BUTTON_2; // bit 12 + db2 = JOY_BUTTON_3; // bit 13 break; case 6: - db1 = JOY_BUTTON_6; - pressed = value == 2; + db1 = JOY_BUTTON_6; // bit 16 + db2 = JOY_BUTTON_7; // bit 17 + break; + case 7: + db1 = JOY_BUTTON_11; // bit 18 + db2 = JOY_BUTTON_10; // bit 19 + break; + case 8: + db1 = JOY_BUTTON_8; // bit 20 + db2 = JOY_BUTTON_9; // bit 21 break; } - if( db1 != DeviceButton_Invalid ) { - DeviceInput di( id, db1, pressed ? 1.0f : 0.0f , now ); - vPresses.push_back( pair(di, pressed) ); + DeviceInput di( id, db1, pressed1 ? 1.0f : 0.0f , now ); + vPresses.push_back( pair(di, pressed1) ); } if( db2 != DeviceButton_Invalid ) { - DeviceInput di( id, db2, pressed ? 1.0f : 0.0f , now ); - vPresses.push_back( pair(di, pressed) ); + DeviceInput di( id, db2, pressed2 ? 1.0f : 0.0f , now ); + vPresses.push_back( pair(di, pressed2) ); } }