Merge remote-tracking branch 'origin/1124_broadcast_mark_rounding_message' into 1124_broadcast_mark_rounding_message

This commit is contained in:
Haoming Yin
2017-08-16 10:06:25 +12:00
3 changed files with 24 additions and 28 deletions
@@ -7,6 +7,7 @@ import java.util.Map;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import seng302.gameServer.server.messages.BoatAction; import seng302.gameServer.server.messages.BoatAction;
import seng302.gameServer.server.messages.BoatStatus;
import seng302.gameServer.server.messages.MarkRoundingMessage; import seng302.gameServer.server.messages.MarkRoundingMessage;
import seng302.gameServer.server.messages.MarkType; import seng302.gameServer.server.messages.MarkType;
import seng302.gameServer.server.messages.Message; import seng302.gameServer.server.messages.Message;
@@ -306,7 +307,7 @@ public class GameState implements Runnable {
if (hasProgressed) { if (hasProgressed) {
sendMarkRoundingMessage(yacht); sendMarkRoundingMessage(yacht);
// logMarkRounding(yacht); logMarkRounding(yacht);
yacht.setHasPassedLine(false); yacht.setHasPassedLine(false);
yacht.setHasEnteredRoundingZone(false); yacht.setHasEnteredRoundingZone(false);
yacht.setHasPassedThroughGate(false); yacht.setHasPassedThroughGate(false);
@@ -336,6 +337,7 @@ public class GameState implements Runnable {
Boolean isClockwiseCross = GeoUtility.isClockwise(mark1, mark2, nextMark.getMidPoint()); Boolean isClockwiseCross = GeoUtility.isClockwise(mark1, mark2, nextMark.getMidPoint());
if (crossedLine == 2 && isClockwiseCross || crossedLine == 1 && !isClockwiseCross) { if (crossedLine == 2 && isClockwiseCross || crossedLine == 1 && !isClockwiseCross) {
yacht.setClosestCurrentMark(mark1); yacht.setClosestCurrentMark(mark1);
yacht.setBoatStatus(BoatStatus.RACING);
return true; return true;
} }
} }
@@ -439,7 +441,7 @@ public class GameState implements Runnable {
if (crossedLine == 1 && isClockwiseCross || crossedLine == 2 && !isClockwiseCross) { if (crossedLine == 1 && isClockwiseCross || crossedLine == 2 && !isClockwiseCross) {
yacht.setClosestCurrentMark(mark1); yacht.setClosestCurrentMark(mark1);
yacht.setIsFinished(true); yacht.setIsFinished(true);
logger.debug(yacht.getSourceId() + " finished"); yacht.setBoatStatus(BoatStatus.FINISHED);
return true; return true;
} }
} }
@@ -467,20 +469,8 @@ public class GameState implements Runnable {
private void logMarkRounding(ServerYacht yacht) { private void logMarkRounding(ServerYacht yacht) {
Mark roundingMark = yacht.getClosestCurrentMark(); Mark roundingMark = yacht.getClosestCurrentMark();
logger.debug( logger.debug(
String.format("Sending Mark Rounding Message:\n" String.format("Yacht srcID(%d) passed Mark srcID(%d)", yacht.getSourceId(),
+ "AckNumber %d\n"
+ "RaceID %d\n"
+ "BoatSourceID %d\n"
+ "BoatStatus %s\n"
+ "Rounding Side %s\n"
+ "MarkSeqID %d",
0,
0,
yacht.getSourceId(),
RoundingBoatStatus.RACING.name(),
roundingMark.getRoundingSide().getName(),
roundingMark.getSourceID())); roundingMark.getSourceID()));
} }
@@ -321,22 +321,13 @@ public class ServerToClientThread implements Runnable, Observer {
// variables taken from GameServerThread // variables taken from GameServerThread
List<BoatSubMessage> boatSubMessages = new ArrayList<>(); List<BoatSubMessage> boatSubMessages = new ArrayList<>();
BoatStatus boatStatus;
RaceStatus raceStatus; RaceStatus raceStatus;
for (Player player : GameState.getPlayers()) { for (Player player : GameState.getPlayers()) {
ServerYacht y = player.getYacht(); ServerYacht y = player.getYacht();
BoatSubMessage m = new BoatSubMessage(y.getSourceId(), y.getBoatStatus(), 0,
if (GameState.getCurrentStage() == GameStages.PRE_RACE) { 0, 0, 1234L,
boatStatus = BoatStatus.PRESTART; 1234L);
} else if (GameState.getCurrentStage() == GameStages.RACING) {
boatStatus = BoatStatus.RACING;
} else {
boatStatus = BoatStatus.UNDEFINED;
}
BoatSubMessage m = new BoatSubMessage(y.getSourceId(), boatStatus, 0, 0, 0, 1234l,
1234l);
boatSubMessages.add(m); boatSubMessages.add(m);
} }
+16 -1
View File
@@ -6,6 +6,7 @@ import java.util.Observer;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import seng302.gameServer.GameState; import seng302.gameServer.GameState;
import seng302.gameServer.server.messages.BoatStatus;
import seng302.model.mark.Mark; import seng302.model.mark.Mark;
import seng302.utilities.GeoUtility; import seng302.utilities.GeoUtility;
@@ -20,23 +21,28 @@ public class ServerYacht extends Observable {
public static final Double TURN_STEP = 5.0; public static final Double TURN_STEP = 5.0;
//Boat info
private String boatType; private String boatType;
private Integer sourceId; private Integer sourceId;
private String hullID; //matches HullNum in the XML spec. private String hullID; //matches HullNum in the XML spec.
private String shortName; private String shortName;
private String boatName; private String boatName;
private String country; private String country;
private BoatStatus boatStatus;
//Location
private Double lastHeading; private Double lastHeading;
private Boolean sailIn; private Boolean sailIn;
private Double heading; private Double heading;
private GeoPoint lastLocation;
private GeoPoint location; private GeoPoint location;
private Double currentVelocity; private Double currentVelocity;
private Boolean isAuto; private Boolean isAuto;
private Double autoHeading; private Double autoHeading;
//Mark Rounding
private Integer currentMarkSeqID = 0; private Integer currentMarkSeqID = 0;
private GeoPoint lastLocation;
private Boolean hasEnteredRoundingZone; private Boolean hasEnteredRoundingZone;
private Mark closestCurrentMark; private Mark closestCurrentMark;
private Boolean hasPassedLine; private Boolean hasPassedLine;
@@ -47,6 +53,7 @@ public class ServerYacht extends Observable {
public ServerYacht(String boatType, Integer sourceId, String hullID, String shortName, public ServerYacht(String boatType, Integer sourceId, String hullID, String shortName,
String boatName, String country) { String boatName, String country) {
this.boatType = boatType; this.boatType = boatType;
this.boatStatus = BoatStatus.PRESTART;
this.sourceId = sourceId; this.sourceId = sourceId;
this.hullID = hullID; this.hullID = hullID;
this.shortName = shortName; this.shortName = shortName;
@@ -356,6 +363,14 @@ public class ServerYacht extends Observable {
this.hasPassedThroughGate = hasPassedThroughGate; this.hasPassedThroughGate = hasPassedThroughGate;
} }
public BoatStatus getBoatStatus() {
return boatStatus;
}
public void setBoatStatus(BoatStatus boatStatus) {
this.boatStatus = boatStatus;
}
public void incrementMarkSeqID() { public void incrementMarkSeqID() {
currentMarkSeqID++; currentMarkSeqID++;
} }