onepad: slim down a little more the KeyStatus API

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4781 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
gregory.hainaut@gmail.com 2011-06-28 22:16:06 +00:00
parent 9cb19121e0
commit 89c48d526e
4 changed files with 43 additions and 59 deletions

View File

@ -33,10 +33,10 @@ void KeyStatus::Init()
m_internal_button_pressure[pad][index] = 0xFF;
}
analog[pad].lx = 0x80;
analog[pad].ly = 0x80;
analog[pad].rx = 0x80;
analog[pad].ry = 0x80;
m_analog[pad].lx = 0x80;
m_analog[pad].ly = 0x80;
m_analog[pad].rx = 0x80;
m_analog[pad].ry = 0x80;
m_internal_analog_kbd[pad].lx = 0x80;
m_internal_analog_kbd[pad].ly = 0x80;
m_internal_analog_kbd[pad].rx = 0x80;
@ -51,6 +51,7 @@ void KeyStatus::Init()
void KeyStatus::press(u32 pad, u32 index, s32 value)
{
if (!IsAnalogKey(index)) {
m_internal_button_pressure[pad][index] = value;
if (m_state_acces[pad])
clear_bit(m_internal_button_kbd[pad], index);
else
@ -90,16 +91,6 @@ u16 KeyStatus::get(u32 pad)
return m_button[pad];
}
void KeyStatus::set_pressure(u32 pad, u32 index, u32 value)
{
m_internal_button_pressure[pad][index] = value;
}
u8 KeyStatus::get_pressure(u32 pad, u32 index)
{
return m_button_pressure[pad][index];
}
void KeyStatus::analog_set(u32 pad, u32 index, u8 value)
{
PADAnalog* m_internal_analog_ref;
@ -150,23 +141,23 @@ bool KeyStatus::analog_is_reversed(u32 index)
}
}
u8 KeyStatus::analog_get(u32 pad, u32 index)
u8 KeyStatus::get(u32 pad, u32 index)
{
switch (index)
{
case PAD_R_LEFT:
case PAD_R_RIGHT: return analog[pad].rx;
case PAD_R_RIGHT: return m_analog[pad].rx;
case PAD_R_DOWN:
case PAD_R_UP: return analog[pad].ry;
case PAD_R_UP: return m_analog[pad].ry;
case PAD_L_LEFT:
case PAD_L_RIGHT: return analog[pad].lx;
case PAD_L_RIGHT: return m_analog[pad].lx;
case PAD_L_DOWN:
case PAD_L_UP: return analog[pad].ly;
case PAD_L_UP: return m_analog[pad].ly;
default: return 0;
default: return m_button_pressure[pad][index];
}
}
@ -185,8 +176,8 @@ void KeyStatus::commit_status(u32 pad)
for (int index = 0; index < MAX_KEYS; index++)
m_button_pressure[pad][index] = m_internal_button_pressure[pad][index];
analog[pad].lx = analog_merge(m_internal_analog_kbd[pad].lx, m_internal_analog_joy[pad].lx);
analog[pad].ly = analog_merge(m_internal_analog_kbd[pad].ly, m_internal_analog_joy[pad].ly);
analog[pad].rx = analog_merge(m_internal_analog_kbd[pad].rx, m_internal_analog_joy[pad].rx);
analog[pad].ry = analog_merge(m_internal_analog_kbd[pad].ry, m_internal_analog_joy[pad].ry);
m_analog[pad].lx = analog_merge(m_internal_analog_kbd[pad].lx, m_internal_analog_joy[pad].lx);
m_analog[pad].ly = analog_merge(m_internal_analog_kbd[pad].ly, m_internal_analog_joy[pad].ly);
m_analog[pad].rx = analog_merge(m_internal_analog_kbd[pad].rx, m_internal_analog_joy[pad].rx);
m_analog[pad].ry = analog_merge(m_internal_analog_kbd[pad].ry, m_internal_analog_joy[pad].ry);
}

View File

@ -44,7 +44,7 @@ class KeyStatus
bool m_state_acces[2];
PADAnalog analog[2];
PADAnalog m_analog[2];
PADAnalog m_internal_analog_kbd[2];
PADAnalog m_internal_analog_joy[2];
@ -59,14 +59,12 @@ class KeyStatus
void keyboard_state_acces(u32 pad) { m_state_acces[pad] = true; }
void joystick_state_acces(u32 pad) { m_state_acces[pad] = false; }
void press(u32 pad, u32 index, s32 value = 0);
void press(u32 pad, u32 index, s32 value = 0xFF);
void release(u32 pad, u32 index);
u16 get(u32 pad);
u8 get(u32 pad, u32 index);
void set_pressure(u32 pad, u32 index, u32 value);
u8 get_pressure(u32 pad, u32 index);
u8 analog_get(u32 pad, u32 index);
void commit_status(u32 pad);
};

View File

@ -139,26 +139,21 @@ void PollForJoystickInput(int cpad)
} else {
if (full_axis) {
value += 0x8000;
if (value > pjoy->GetDeadzone()) {
key_status->press(cpad, i);
key_status->set_pressure(cpad, i, min(value/256 , 0xFF));
} else {
if (value > pjoy->GetDeadzone())
key_status->press(cpad, i, min(value/256 , 0xFF));
else
key_status->release(cpad, i);
}
} else {
if (sign && (-value > pjoy->GetDeadzone())) {
key_status->press(cpad, i);
key_status->set_pressure(cpad, i, min(-value /128, 0xFF));
} else if (!sign && (value > pjoy->GetDeadzone())) {
key_status->press(cpad, i);
key_status->set_pressure(cpad, i, min(value /128, 0xFF));
} else {
if (sign && (-value > pjoy->GetDeadzone()))
key_status->press(cpad, i, min(-value /128, 0xFF));
else if (!sign && (value > pjoy->GetDeadzone()))
key_status->press(cpad, i, min(value /128, 0xFF));
else
key_status->release(cpad, i);
}
}
}
}
default: break;
}
}

View File

@ -389,10 +389,10 @@ u8 _PADpoll(u8 value)
stdpar[curPad][2] = key_status->get(curPad) >> 8;
stdpar[curPad][3] = key_status->get(curPad) & 0xff;
stdpar[curPad][4] = key_status->analog_get(curPad, PAD_R_RIGHT);
stdpar[curPad][5] = key_status->analog_get(curPad, PAD_R_UP);
stdpar[curPad][6] = key_status->analog_get(curPad, PAD_L_RIGHT);
stdpar[curPad][7] = key_status->analog_get(curPad, PAD_L_UP);
stdpar[curPad][4] = key_status->get(curPad, PAD_R_RIGHT);
stdpar[curPad][5] = key_status->get(curPad, PAD_R_UP);
stdpar[curPad][6] = key_status->get(curPad, PAD_L_RIGHT);
stdpar[curPad][7] = key_status->get(curPad, PAD_L_UP);
if (padMode[curPad] == 1)
cmdLen = 20;
@ -403,35 +403,35 @@ u8 _PADpoll(u8 value)
switch (stdpar[curPad][3])
{
case 0xBF: // X
stdpar[curPad][14] = key_status->get_pressure(curPad, PAD_CROSS);
stdpar[curPad][14] = key_status->get(curPad, PAD_CROSS);
break;
case 0xDF: // Circle
stdpar[curPad][13] = key_status->get_pressure(curPad, PAD_CIRCLE);
stdpar[curPad][13] = key_status->get(curPad, PAD_CIRCLE);
break;
case 0xEF: // Triangle
stdpar[curPad][12] = key_status->get_pressure(curPad, PAD_TRIANGLE);
stdpar[curPad][12] = key_status->get(curPad, PAD_TRIANGLE);
break;
case 0x7F: // Square
stdpar[curPad][15] = key_status->get_pressure(curPad, PAD_SQUARE);
stdpar[curPad][15] = key_status->get(curPad, PAD_SQUARE);
break;
case 0xFB: // L1
stdpar[curPad][16] = key_status->get_pressure(curPad, PAD_L1);
stdpar[curPad][16] = key_status->get(curPad, PAD_L1);
break;
case 0xF7: // R1
stdpar[curPad][17] = key_status->get_pressure(curPad, PAD_R1);
stdpar[curPad][17] = key_status->get(curPad, PAD_R1);
break;
case 0xFE: // L2
stdpar[curPad][18] = key_status->get_pressure(curPad, PAD_L2);
stdpar[curPad][18] = key_status->get(curPad, PAD_L2);
break;
case 0xFD: // R2
stdpar[curPad][19] = key_status->get_pressure(curPad, PAD_R2);
stdpar[curPad][19] = key_status->get(curPad, PAD_R2);
break;
default:
@ -448,19 +448,19 @@ u8 _PADpoll(u8 value)
switch (button_check)
{
case 0xE: // UP
stdpar[curPad][10] = key_status->get_pressure(curPad, PAD_UP);
stdpar[curPad][10] = key_status->get(curPad, PAD_UP);
break;
case 0xB: // DOWN
stdpar[curPad][11] =key_status->get_pressure(curPad, PAD_DOWN);
stdpar[curPad][11] =key_status->get(curPad, PAD_DOWN);
break;
case 0x7: // LEFT
stdpar[curPad][9] = key_status->get_pressure(curPad, PAD_LEFT);
stdpar[curPad][9] = key_status->get(curPad, PAD_LEFT);
break;
case 0xD: // RIGHT
stdpar[curPad][8] = key_status->get_pressure(curPad, PAD_RIGHT);
stdpar[curPad][8] = key_status->get(curPad, PAD_RIGHT);
break;
default: