remove some dupe code; show less dinput in the class;
add constants for Z/ZROT/HAT (unimplemented)
This commit is contained in:
+31
-49
@@ -83,6 +83,14 @@ CString DeviceInput::GetDescription()
|
|||||||
case JOY_RIGHT: sReturn += "Right"; break;
|
case JOY_RIGHT: sReturn += "Right"; break;
|
||||||
case JOY_UP: sReturn += "Up"; break;
|
case JOY_UP: sReturn += "Up"; break;
|
||||||
case JOY_DOWN: sReturn += "Down"; break;
|
case JOY_DOWN: sReturn += "Down"; break;
|
||||||
|
case JOY_Z_UP: sReturn += "Z-Up"; break;
|
||||||
|
case JOY_Z_DOWN: sReturn += "Z-Down"; break;
|
||||||
|
case JOY_ROT_UP: sReturn += "Z-Down"; break;
|
||||||
|
case JOY_ROT_DOWN: sReturn += "Z-Down"; break;
|
||||||
|
case JOY_HAT_LEFT: sReturn += "H-Left"; break;
|
||||||
|
case JOY_HAT_RIGHT: sReturn += "H-Right"; break;
|
||||||
|
case JOY_HAT_UP: sReturn += "H-Up"; break;
|
||||||
|
case JOY_HAT_DOWN: sReturn += "H-Down"; break;
|
||||||
case JOY_1: sReturn += "1"; break;
|
case JOY_1: sReturn += "1"; break;
|
||||||
case JOY_2: sReturn += "2"; break;
|
case JOY_2: sReturn += "2"; break;
|
||||||
case JOY_3: sReturn += "3"; break;
|
case JOY_3: sReturn += "3"; break;
|
||||||
@@ -376,12 +384,8 @@ RageInput::RageInput( HWND hWnd )
|
|||||||
|
|
||||||
ZeroMemory( &m_keys, sizeof(m_keys) );
|
ZeroMemory( &m_keys, sizeof(m_keys) );
|
||||||
ZeroMemory( &m_oldKeys, sizeof(m_oldKeys) );
|
ZeroMemory( &m_oldKeys, sizeof(m_oldKeys) );
|
||||||
for( i=0; i<NUM_JOYSTICKS; i++ )
|
|
||||||
{
|
|
||||||
ZeroMemory( &m_joyState[i], sizeof(m_joyState[i]) );
|
|
||||||
ZeroMemory( &m_oldKeys[i], sizeof(m_joyState[i]) );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
ZeroMemory( &m_oldJoyState, sizeof(m_oldJoyState) );
|
||||||
ZeroMemory( &m_pumpState, sizeof(m_pumpState) );
|
ZeroMemory( &m_pumpState, sizeof(m_pumpState) );
|
||||||
ZeroMemory( &m_oldPumpState, sizeof(m_oldPumpState) );
|
ZeroMemory( &m_oldPumpState, sizeof(m_oldPumpState) );
|
||||||
m_Pumps = new pump_t[NUM_PUMPS];
|
m_Pumps = new pump_t[NUM_PUMPS];
|
||||||
@@ -672,8 +676,8 @@ void RageInput::Update()
|
|||||||
//////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
CopyMemory( &m_oldKeys, &m_keys, sizeof(m_keys) );
|
CopyMemory( &m_oldKeys, &m_keys, sizeof(m_keys) );
|
||||||
CopyMemory( &m_oldJoyState, &m_joyState, sizeof(m_joyState) );
|
|
||||||
CopyMemory( &m_oldPumpState, &m_pumpState, sizeof(m_pumpState) );
|
CopyMemory( &m_oldPumpState, &m_pumpState, sizeof(m_pumpState) );
|
||||||
|
CopyMemory( &m_oldJoyState, &m_joyState, sizeof(m_joyState) );
|
||||||
|
|
||||||
ZeroMemory( &m_joyState, sizeof(m_joyState) );
|
ZeroMemory( &m_joyState, sizeof(m_joyState) );
|
||||||
|
|
||||||
@@ -717,9 +721,25 @@ void RageInput::Update()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DIJOYSTATE2 joyState;
|
||||||
|
ZeroMemory( &joyState, sizeof(joyState) );
|
||||||
// Get the input's device state
|
// Get the input's device state
|
||||||
if( FAILED( hr = m_pJoystick[i]->GetDeviceState( sizeof(DIJOYSTATE2), &m_joyState[i] ) ) )
|
if( FAILED( hr = m_pJoystick[i]->GetDeviceState( sizeof(DIJOYSTATE2), &joyState ) ) )
|
||||||
|
{
|
||||||
LOG->Trace(hr, "Failed to read joystick %i\n", i);
|
LOG->Trace(hr, "Failed to read joystick %i\n", i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( IS_LEFT(joyState.lX) ) m_joyState[i][JOY_LEFT] = true;
|
||||||
|
if ( IS_RIGHT(joyState.lX) ) m_joyState[i][JOY_RIGHT] = true;
|
||||||
|
if ( IS_UP(joyState.lY) ) m_joyState[i][JOY_UP] = true;
|
||||||
|
if ( IS_DOWN(joyState.lY) ) m_joyState[i][JOY_DOWN] = true;
|
||||||
|
|
||||||
|
for (int button_index = JOY_1; button_index < NUM_JOYSTICK_BUTTONS; ++button_index)
|
||||||
|
{
|
||||||
|
if ( IS_PRESSED( joyState.rgbButtons[button_index - JOY_1] ) )
|
||||||
|
m_joyState[i][button_index] = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdatePump();
|
UpdatePump();
|
||||||
@@ -736,33 +756,13 @@ bool RageInput::IsBeingPressed( DeviceInput di )
|
|||||||
case DEVICE_JOY2:
|
case DEVICE_JOY2:
|
||||||
case DEVICE_JOY3:
|
case DEVICE_JOY3:
|
||||||
case DEVICE_JOY4: {
|
case DEVICE_JOY4: {
|
||||||
int joy_index;
|
return m_joyState[di.device - DEVICE_JOY1][ di.button ];
|
||||||
joy_index = di.device - DEVICE_JOY1;
|
|
||||||
|
|
||||||
switch( di.button )
|
|
||||||
{
|
|
||||||
case JOY_LEFT:
|
|
||||||
return IS_LEFT( m_joyState[joy_index].lX );
|
|
||||||
case JOY_RIGHT:
|
|
||||||
return IS_RIGHT( m_joyState[joy_index].lX );
|
|
||||||
case JOY_UP:
|
|
||||||
return IS_UP( m_joyState[joy_index].lY );
|
|
||||||
case JOY_DOWN:
|
|
||||||
return IS_DOWN( m_joyState[joy_index].lY );
|
|
||||||
default: // a joystick button
|
|
||||||
int button_index = di.button - JOY_1;
|
|
||||||
return 0 != IS_PRESSED( m_joyState[joy_index].rgbButtons[button_index] );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
case DEVICE_PUMP1:
|
case DEVICE_PUMP1:
|
||||||
case DEVICE_PUMP2:
|
case DEVICE_PUMP2:
|
||||||
{
|
{
|
||||||
int pump_index;
|
|
||||||
pump_index = di.device - DEVICE_PUMP1;
|
|
||||||
if(m_pumpState[pump_index].button[di.button])
|
|
||||||
return 1;
|
|
||||||
ASSERT(di.button < NUM_PUMP_PAD_BUTTONS);
|
ASSERT(di.button < NUM_PUMP_PAD_BUTTONS);
|
||||||
return m_pumpState[pump_index].button[di.button];
|
return m_pumpState[pump_index - DEVICE_PUMP1].button[di.button];
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
ASSERT( false ); // bad device
|
ASSERT( false ); // bad device
|
||||||
@@ -781,30 +781,12 @@ bool RageInput::WasBeingPressed( DeviceInput di )
|
|||||||
case DEVICE_JOY2:
|
case DEVICE_JOY2:
|
||||||
case DEVICE_JOY3:
|
case DEVICE_JOY3:
|
||||||
case DEVICE_JOY4:
|
case DEVICE_JOY4:
|
||||||
int joy_index;
|
return m_oldJoyState[di.device - DEVICE_JOY1][ di.button ];
|
||||||
joy_index = di.device - DEVICE_JOY1;
|
|
||||||
|
|
||||||
switch( di.button )
|
|
||||||
{
|
|
||||||
case JOY_LEFT:
|
|
||||||
return IS_LEFT( m_oldJoyState[joy_index].lX );
|
|
||||||
case JOY_RIGHT:
|
|
||||||
return IS_RIGHT( m_oldJoyState[joy_index].lX );
|
|
||||||
case JOY_UP:
|
|
||||||
return IS_UP( m_oldJoyState[joy_index].lY );
|
|
||||||
case JOY_DOWN:
|
|
||||||
return IS_DOWN( m_oldJoyState[joy_index].lY );
|
|
||||||
default: // a joystick button
|
|
||||||
int button_index = di.button - JOY_1;
|
|
||||||
return 0 != IS_PRESSED( m_oldJoyState[joy_index].rgbButtons[button_index] );
|
|
||||||
}
|
|
||||||
|
|
||||||
case DEVICE_PUMP1:
|
case DEVICE_PUMP1:
|
||||||
case DEVICE_PUMP2: {
|
case DEVICE_PUMP2: {
|
||||||
int pump_index;
|
|
||||||
pump_index = di.device - DEVICE_PUMP1;
|
|
||||||
ASSERT(di.button < NUM_PUMP_PAD_BUTTONS);
|
ASSERT(di.button < NUM_PUMP_PAD_BUTTONS);
|
||||||
return m_oldPumpState[pump_index].button[di.button];
|
return m_oldPumpState[pump_index - DEVICE_PUMP1].button[di.button];
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -37,6 +37,9 @@ enum InputDevice {
|
|||||||
// button byte codes for directional pad
|
// button byte codes for directional pad
|
||||||
enum JoystickButton {
|
enum JoystickButton {
|
||||||
JOY_LEFT = 0, JOY_RIGHT, JOY_UP, JOY_DOWN,
|
JOY_LEFT = 0, JOY_RIGHT, JOY_UP, JOY_DOWN,
|
||||||
|
JOY_Z_UP, JOY_Z_DOWN,
|
||||||
|
JOY_ROT_UP, JOY_ROT_DOWN,
|
||||||
|
JOY_HAT_LEFT, JOY_HAT_RIGHT, JOY_HAT_UP, JOY_HAT_DOWN,
|
||||||
JOY_1, JOY_2, JOY_3, JOY_4, JOY_5, JOY_6, JOY_7, JOY_8, JOY_9, JOY_10,
|
JOY_1, JOY_2, JOY_3, JOY_4, JOY_5, JOY_6, JOY_7, JOY_8, JOY_9, JOY_10,
|
||||||
JOY_11, JOY_12, JOY_13, JOY_14, JOY_15, JOY_16, JOY_17, JOY_18, JOY_19, JOY_20,
|
JOY_11, JOY_12, JOY_13, JOY_14, JOY_15, JOY_16, JOY_17, JOY_18, JOY_19, JOY_20,
|
||||||
JOY_21, JOY_22, JOY_23, JOY_24,
|
JOY_21, JOY_22, JOY_23, JOY_24,
|
||||||
@@ -97,8 +100,8 @@ class RageInput
|
|||||||
DIMOUSESTATE2 m_mouseState;
|
DIMOUSESTATE2 m_mouseState;
|
||||||
|
|
||||||
// Joystick data for NUM_JOYSTICKS controllers
|
// Joystick data for NUM_JOYSTICKS controllers
|
||||||
DIJOYSTATE2 m_joyState[NUM_JOYSTICKS];
|
bool m_joyState[NUM_JOYSTICKS][NUM_JOYSTICK_BUTTONS];
|
||||||
DIJOYSTATE2 m_oldJoyState[NUM_JOYSTICKS];
|
bool m_oldJoyState[NUM_JOYSTICKS][NUM_JOYSTICK_BUTTONS];
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
bool button[NUM_PUMP_PAD_BUTTONS];
|
bool button[NUM_PUMP_PAD_BUTTONS];
|
||||||
|
|||||||
Reference in New Issue
Block a user