dinput: Fixed joystick with POV and JoystickAImpl_SetProperty-proprange.
This commit is contained in:
parent
2136f32715
commit
ff8debd2be
@ -862,24 +862,24 @@ static int offset_to_object(JoystickImpl *This, int offset)
|
|||||||
|
|
||||||
static LONG calculate_pov(JoystickImpl *This, int index)
|
static LONG calculate_pov(JoystickImpl *This, int index)
|
||||||
{
|
{
|
||||||
if (This->povs[index].lX < 16384) {
|
if (This->povs[index].lX < -16384) {
|
||||||
if (This->povs[index].lY < 16384)
|
if (This->povs[index].lY < -16384)
|
||||||
This->js.rgdwPOV[index] = 31500;
|
This->js.rgdwPOV[index] = 31500;
|
||||||
else if (This->povs[index].lY > 49150)
|
else if (This->povs[index].lY > 16384)
|
||||||
This->js.rgdwPOV[index] = 22500;
|
This->js.rgdwPOV[index] = 22500;
|
||||||
else
|
else
|
||||||
This->js.rgdwPOV[index] = 27000;
|
This->js.rgdwPOV[index] = 27000;
|
||||||
} else if (This->povs[index].lX > 49150) {
|
} else if (This->povs[index].lX > 16384) {
|
||||||
if (This->povs[index].lY < 16384)
|
if (This->povs[index].lY < -16384)
|
||||||
This->js.rgdwPOV[index] = 4500;
|
This->js.rgdwPOV[index] = 4500;
|
||||||
else if (This->povs[index].lY > 49150)
|
else if (This->povs[index].lY > 16384)
|
||||||
This->js.rgdwPOV[index] = 13500;
|
This->js.rgdwPOV[index] = 13500;
|
||||||
else
|
else
|
||||||
This->js.rgdwPOV[index] = 9000;
|
This->js.rgdwPOV[index] = 9000;
|
||||||
} else {
|
} else {
|
||||||
if (This->povs[index].lY < 16384)
|
if (This->povs[index].lY < -16384)
|
||||||
This->js.rgdwPOV[index] = 0;
|
This->js.rgdwPOV[index] = 0;
|
||||||
else if (This->povs[index].lY > 49150)
|
else if (This->povs[index].lY > 16384)
|
||||||
This->js.rgdwPOV[index] = 18000;
|
This->js.rgdwPOV[index] = 18000;
|
||||||
else
|
else
|
||||||
This->js.rgdwPOV[index] = -1;
|
This->js.rgdwPOV[index] = -1;
|
||||||
@ -953,30 +953,30 @@ static void joy_polldev(JoystickImpl *This) {
|
|||||||
case 8:
|
case 8:
|
||||||
/* FIXME don't go off array */
|
/* FIXME don't go off array */
|
||||||
if (This->axis_map[jse.number + 1] == number)
|
if (This->axis_map[jse.number + 1] == number)
|
||||||
This->povs[0].lX = value;
|
This->povs[0].lX = jse.value;
|
||||||
else if (This->axis_map[jse.number - 1] == number)
|
else if (This->axis_map[jse.number - 1] == number)
|
||||||
This->povs[0].lY = value;
|
This->povs[0].lY = jse.value;
|
||||||
value = calculate_pov(This, 0);
|
value = calculate_pov(This, 0);
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
if (This->axis_map[jse.number + 1] == number)
|
if (This->axis_map[jse.number + 1] == number)
|
||||||
This->povs[1].lX = value;
|
This->povs[1].lX = jse.value;
|
||||||
else if (This->axis_map[jse.number - 1] == number)
|
else if (This->axis_map[jse.number - 1] == number)
|
||||||
This->povs[1].lY = value;
|
This->povs[1].lY = jse.value;
|
||||||
value = calculate_pov(This, 1);
|
value = calculate_pov(This, 1);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
if (This->axis_map[jse.number + 1] == number)
|
if (This->axis_map[jse.number + 1] == number)
|
||||||
This->povs[2].lX = value;
|
This->povs[2].lX = jse.value;
|
||||||
else if (This->axis_map[jse.number - 1] == number)
|
else if (This->axis_map[jse.number - 1] == number)
|
||||||
This->povs[2].lY = value;
|
This->povs[2].lY = jse.value;
|
||||||
value = calculate_pov(This, 2);
|
value = calculate_pov(This, 2);
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
if (This->axis_map[jse.number + 1] == number)
|
if (This->axis_map[jse.number + 1] == number)
|
||||||
This->povs[3].lX = value;
|
This->povs[3].lX = jse.value;
|
||||||
else if (This->axis_map[jse.number - 1] == number)
|
else if (This->axis_map[jse.number - 1] == number)
|
||||||
This->povs[3].lY = value;
|
This->povs[3].lY = jse.value;
|
||||||
value = calculate_pov(This, 3);
|
value = calculate_pov(This, 3);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user