Fix pump pad support. Second player untested but seems likely to work.

This commit is contained in:
Steve Checkoway
2006-02-25 14:58:14 +00:00
parent c6125c4e26
commit 3e72c0e002
+23 -43
View File
@@ -8,6 +8,8 @@ void PumpDevice::Open()
AddElementToQueue( 3 ); AddElementToQueue( 3 );
AddElementToQueue( 4 ); AddElementToQueue( 4 );
AddElementToQueue( 6 ); AddElementToQueue( 6 );
AddElementToQueue( 7 );
AddElementToQueue( 8 );
} }
void PumpDevice::GetButtonPresses( vector<pair<DeviceInput, bool> >& vPresses, int cookie, void PumpDevice::GetButtonPresses( vector<pair<DeviceInput, bool> >& vPresses, int cookie,
@@ -15,66 +17,44 @@ void PumpDevice::GetButtonPresses( vector<pair<DeviceInput, bool> >& vPresses, i
{ {
DeviceButton db1 = DeviceButton_Invalid; DeviceButton db1 = DeviceButton_Invalid;
DeviceButton db2 = 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 ) switch( cookie )
{ {
case 2: case 2:
db1 = JOY_BUTTON_1; db2 = JOY_BUTTON_1; // bit 9
pressed = value == 0;
break; break;
case 3: case 3:
switch( value ) db1 = JOY_BUTTON_5; // bit 10
{ db2 = JOY_BUTTON_4; // bit 11
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;
}
break; break;
case 4: case 4:
switch( value ) db1 = JOY_BUTTON_2; // bit 12
{ db2 = JOY_BUTTON_3; // bit 13
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;
}
break; break;
case 6: case 6:
db1 = JOY_BUTTON_6; db1 = JOY_BUTTON_6; // bit 16
pressed = value == 2; 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; break;
} }
if( db1 != DeviceButton_Invalid ) if( db1 != DeviceButton_Invalid )
{ {
DeviceInput di( id, db1, pressed ? 1.0f : 0.0f , now ); DeviceInput di( id, db1, pressed1 ? 1.0f : 0.0f , now );
vPresses.push_back( pair<DeviceInput, bool>(di, pressed) ); vPresses.push_back( pair<DeviceInput, bool>(di, pressed1) );
} }
if( db2 != DeviceButton_Invalid ) if( db2 != DeviceButton_Invalid )
{ {
DeviceInput di( id, db2, pressed ? 1.0f : 0.0f , now ); DeviceInput di( id, db2, pressed2 ? 1.0f : 0.0f , now );
vPresses.push_back( pair<DeviceInput, bool>(di, pressed) ); vPresses.push_back( pair<DeviceInput, bool>(di, pressed2) );
} }
} }