package seng302.gameServer.messages; public class MarkRoundingMessage extends Message{ private final long MESSAGE_VERSION_NUMBER = 1; private final int MESSAGE_SIZE = 21; private long time; private long ackNumber; private long raceId; private long sourceId; private RoundingBoatStatus boatStatus; private RoundingSide roundingSide; private long markId; /** * This message is sent when a boat passes a mark, start line, or finish line * The purpose of this is to record the time when yachts cross marks * @param ackNumber ackNumber * @param raceId raceId * @param sourceId boatSourceId * @param roundingBoatStatus roundingBoatStatus * @param roundingSide roundingSide * @param markId markId * @param markType . */ public MarkRoundingMessage(int ackNumber, int raceId, int sourceId, RoundingBoatStatus roundingBoatStatus, RoundingSide roundingSide, MarkType markType, int markId) { this.time = System.currentTimeMillis(); this.ackNumber = ackNumber; this.raceId = raceId; this.sourceId = sourceId; this.boatStatus = roundingBoatStatus; this.roundingSide = roundingSide; this.markId = markId; setHeader(new Header(MessageType.MARK_ROUNDING, 1, (short) getSize())); allocateBuffer(); writeHeaderToBuffer(); putByte((byte) MESSAGE_VERSION_NUMBER); putInt((int) time, 6); putInt((int) ackNumber, 2); putInt((int) raceId, 4); putInt((int) sourceId, 4); putByte((byte) boatStatus.getCode()); putByte((byte) roundingSide.getCode()); putByte((byte) markType.getCode()); putByte((byte) markId); writeCRC(); rewind(); } @Override public int getSize() { return MESSAGE_SIZE; } }