package network.Messages; import network.Messages.Enums.MessageType; import network.Utils.AC35UnitConverter; import shared.model.Constants; import java.util.List; /** * Created by fwy13 on 25/04/17. */ public class RaceStatus extends AC35Data { private long currentTime; private int raceID; private byte raceStatus; private long expectedStartTime; private int windDirection; private int windSpeed; private int raceType; private List boatStatuses; public RaceStatus(long currentTime, int raceID, byte raceStatus, long expectedStartTime, int windDirection, int windSpeed, int raceType, List boatStatuses){ super(MessageType.RACESTATUS); this.currentTime = currentTime; this.raceID = raceID; this.raceStatus = raceStatus; this.expectedStartTime = expectedStartTime; this.windDirection = windDirection; this.windSpeed = windSpeed; this.raceType = raceType; this.boatStatuses = boatStatuses;//note this is not a copy so any alterations to the parent will affect this. } ///Getters. public long getCurrentTime() { return currentTime; } public int getRaceID() { return raceID; } /** * * @return race status number */ public byte getRaceStatus() { return raceStatus; } public long getExpectedStartTime() { return expectedStartTime; } public int getWindDirection() { return windDirection; } /** * Returns the wind speed for this race status, in millimeters per second. * @return Wind speed in millimeters per second. */ public int getWindSpeed() { return windSpeed; } public int getRaceType() { return raceType; } public List getBoatStatuses() { return boatStatuses; } public boolean isNotActive() { return raceStatus == 0; } public boolean isWarning() { return raceStatus == 1; } public boolean isPreparatory() { return raceStatus == 2; } public boolean isStarted() { return raceStatus == 3; } public boolean isFinished() { return raceStatus == 4; } public boolean isRetired() { return raceStatus == 5; } public boolean isAbandoned() { return raceStatus == 6; } public boolean isPostponed() { return raceStatus == 7; } public boolean isTerminated() { return raceStatus == 8; } public boolean isStartTimeSet() { return raceStatus != 9; } public boolean isPrestart() { return raceStatus == 10; } public double getScaledWindDirection() { return AC35UnitConverter.convertHeading(windDirection); } /** * Returns the wind speed for this race status, in knots. * @return Wind speed in knots. */ public double getWindSpeedKnots() { return (windSpeed / Constants.KnotsToMMPerSecond); } }