Allow clients to correctly send the number of controllers connected

This commit is contained in:
Cameron Gutman 2017-02-04 21:00:10 -08:00
parent 195bf8ed55
commit 4566c1855b
5 changed files with 25 additions and 9 deletions

View File

@ -422,7 +422,7 @@ public class NvConnection {
}
public void sendControllerInput(final short controllerNumber,
final short buttonFlags,
final short activeGamepadMask, final short buttonFlags,
final byte leftTrigger, final byte rightTrigger,
final short leftStickX, final short leftStickY,
final short rightStickX, final short rightStickY)
@ -430,7 +430,8 @@ public class NvConnection {
if (inputStream == null)
return;
inputStream.sendControllerInput(controllerNumber, buttonFlags, leftTrigger,
inputStream.sendControllerInput(controllerNumber, activeGamepadMask,
buttonFlags, leftTrigger,
rightTrigger, leftStickX, leftStickY,
rightStickX, rightStickY);
}

View File

@ -12,9 +12,11 @@ public class ControllerBatchingBlock {
private short rightStickX;
private short rightStickY;
private short controllerNumber;
private short activeGamepadMask;
public ControllerBatchingBlock(MultiControllerPacket initialPacket) {
this.controllerNumber = initialPacket.controllerNumber;
this.activeGamepadMask = initialPacket.activeGamepadMask;
this.buttonFlags = initialPacket.buttonFlags;
this.leftTrigger = initialPacket.leftTrigger;
this.rightTrigger = initialPacket.rightTrigger;
@ -59,6 +61,7 @@ public class ControllerBatchingBlock {
public boolean submitNewPacket(MultiControllerPacket packet) {
if (buttonFlags != packet.buttonFlags ||
controllerNumber != packet.controllerNumber ||
activeGamepadMask != packet.activeGamepadMask ||
!checkDirs(leftTrigger, packet.leftTrigger, 0) ||
!checkDirs(rightTrigger, packet.rightTrigger, 1) ||
!checkDirs(leftStickX, packet.leftStickX, 2) ||
@ -70,6 +73,7 @@ public class ControllerBatchingBlock {
}
this.controllerNumber = packet.controllerNumber;
this.activeGamepadMask = packet.activeGamepadMask;
this.leftTrigger = packet.leftTrigger;
this.rightTrigger = packet.rightTrigger;
this.leftStickX = packet.leftStickX;
@ -81,6 +85,7 @@ public class ControllerBatchingBlock {
public void reinitializePacket(MultiControllerPacket packet) {
packet.controllerNumber = controllerNumber;
packet.activeGamepadMask = activeGamepadMask;
packet.buttonFlags = buttonFlags;
packet.leftTrigger = leftTrigger;
packet.rightTrigger = rightTrigger;

View File

@ -50,7 +50,7 @@ public class ControllerPacket extends MultiControllerPacket {
short leftStickX, short leftStickY,
short rightStickX, short rightStickY)
{
super(PACKET_TYPE, (short) 0, buttonFlags, leftTrigger, rightTrigger, leftStickX,
super(PACKET_TYPE, (short) 0, (short) 0, buttonFlags, leftTrigger, rightTrigger, leftStickX,
leftStickY, rightStickX, rightStickY);
this.buttonFlags = buttonFlags;

View File

@ -274,13 +274,16 @@ public class ControllerStream {
}
else {
// Use multi-controller packets for generation 4 and above
queuePacket(new MultiControllerPacket(context, (short) 0, buttonFlags, leftTrigger,
queuePacket(new MultiControllerPacket(context,
(short) 0, (short) 0x1,
buttonFlags, leftTrigger,
rightTrigger, leftStickX, leftStickY,
rightStickX, rightStickY));
}
}
public void sendControllerInput(short controllerNumber, short buttonFlags, byte leftTrigger, byte rightTrigger,
public void sendControllerInput(short controllerNumber, short activeGamepadMask,
short buttonFlags, byte leftTrigger, byte rightTrigger,
short leftStickX, short leftStickY, short rightStickX, short rightStickY)
{
if (context.serverGeneration == ConnectionContext.SERVER_GENERATION_3) {
@ -291,7 +294,9 @@ public class ControllerStream {
}
else {
// Use multi-controller packets for generation 4 and above
queuePacket(new MultiControllerPacket(context, controllerNumber, buttonFlags, leftTrigger,
queuePacket(new MultiControllerPacket(context,
controllerNumber, activeGamepadMask,
buttonFlags, leftTrigger,
rightTrigger, leftStickX, leftStickY,
rightStickX, rightStickY));
}

View File

@ -24,6 +24,7 @@ public class MultiControllerPacket extends InputPacket {
InputPacket.HEADER_LENGTH;
short controllerNumber;
short activeGamepadMask;
short buttonFlags;
byte leftTrigger;
byte rightTrigger;
@ -35,7 +36,8 @@ public class MultiControllerPacket extends InputPacket {
private int headerCode;
public MultiControllerPacket(ConnectionContext context,
short controllerNumber, short buttonFlags, byte leftTrigger, byte rightTrigger,
short controllerNumber, short activeGamepadMask,
short buttonFlags, byte leftTrigger, byte rightTrigger,
short leftStickX, short leftStickY,
short rightStickX, short rightStickY)
{
@ -49,6 +51,7 @@ public class MultiControllerPacket extends InputPacket {
}
this.controllerNumber = controllerNumber;
this.activeGamepadMask = activeGamepadMask;
this.buttonFlags = buttonFlags;
this.leftTrigger = leftTrigger;
@ -62,7 +65,8 @@ public class MultiControllerPacket extends InputPacket {
}
public MultiControllerPacket(int packetType,
short controllerNumber, short buttonFlags,
short controllerNumber, short activeGamepadMask,
short buttonFlags,
byte leftTrigger, byte rightTrigger,
short leftStickX, short leftStickY,
short rightStickX, short rightStickY)
@ -70,6 +74,7 @@ public class MultiControllerPacket extends InputPacket {
super(packetType);
this.controllerNumber = controllerNumber;
this.activeGamepadMask = activeGamepadMask;
this.buttonFlags = buttonFlags;
this.leftTrigger = leftTrigger;
@ -88,7 +93,7 @@ public class MultiControllerPacket extends InputPacket {
bb.putInt(headerCode);
bb.putShort((short) 0x1a);
bb.putShort(controllerNumber);
bb.putShort((short) 0x0f); // Active controller flags
bb.putShort(activeGamepadMask);
bb.putShort((short) 0x14);
bb.putShort(buttonFlags);
bb.put(leftTrigger);