Fix checksum in Stage1HandshakeBuilder

This commit is contained in:
Kai 2022-10-25 11:32:43 +00:00
parent 962551f81c
commit 512328f710

View File

@ -10,11 +10,11 @@ import java.util.Arrays;
import static java.lang.Math.abs;
public class Stage1HandshakeBuilder {
private static class Movement {
public static class Movement {
double deltaYaw;
double deltaPitch;
Movement(double deltaYaw, double deltaPitch) {
public Movement(double deltaYaw, double deltaPitch) {
this.deltaPitch = deltaPitch;
this.deltaYaw = deltaYaw;
}
@ -22,6 +22,10 @@ public class Stage1HandshakeBuilder {
public Movement getOpposite() {
return new Movement(-this.deltaYaw, -this.deltaPitch);
}
public Movement convertToChecksum() {
return new Movement(this.deltaYaw % 0.05, this.deltaPitch % 0.05);
}
}
private final ArrayList<Movement> movements = new ArrayList<>();
@ -113,7 +117,9 @@ public class Stage1HandshakeBuilder {
totalMovement.deltaPitch += abs(movement.deltaPitch);
});
if (totalMovement != handshake.get(10) || !totalMovement.getOpposite().equals(handshake.get(11))) {
Movement checksum = totalMovement.convertToChecksum();
if (checksum != handshake.get(10) || !checksum.getOpposite().equals(handshake.get(11))) {
return null;
}
else {