Update boat position according to boat location messages in StreamedRace

- Added StreamedRace constructor accepting VisualiserInput
- Modified VisualiserInput constructor to accept Socket
- Refactored controller setup of Race

#story[782]
This commit is contained in:
cbt24
2017-05-01 18:52:52 +12:00
parent 8bbea28cab
commit 2e7527b325
6 changed files with 49 additions and 25 deletions
@@ -6,7 +6,10 @@ import seng302.Constants;
import seng302.Controllers.RaceController;
import seng302.GPSCoordinate;
import seng302.Model.*;
import seng302.Networking.MessageDecoders.BoatLocationDecoder;
import seng302.Networking.Utils.BoatLocationMessage;
import seng302.RaceDataSource;
import seng302.VisualiserInput;
import java.awt.geom.Point2D;
import java.util.*;
@@ -15,12 +18,12 @@ import java.util.*;
* Created by jjg64 on 21/04/17.
*/
public class StreamedRace extends Race {
private RaceDataSource raceData;
private VisualiserInput visualiserInput;
private double MMPS_TO_KN = 0.001944;
public StreamedRace(RaceDataSource raceData, RaceController controller, int scaleFactor) {
super(raceData.getBoats(), raceData.getLegs(), controller, scaleFactor);
this.raceData = raceData;
this.scaleFactor = 1; // There will be no scaling in a live streamed race
public StreamedRace(VisualiserInput visualiserInput, RaceController controller) {
super(visualiserInput.getCourse(), controller, 1);
this.visualiserInput = visualiserInput;
}
public void initialiseBoats() {
@@ -72,8 +75,16 @@ public class StreamedRace extends Race {
* @param millisecondsElapsed time since last update
*/
protected void updatePosition(Boat boat, int millisecondsElapsed) {
//TODO Grab info from network
// setPosition(boat, coordinate);
int sourceID = boat.getSourceID();
BoatLocationMessage boatLocationMessage = visualiserInput.getBoatLocationMessage(sourceID);
if(boatLocationMessage != null) {
System.out.println(sourceID);
double lat = boatLocationMessage.getLatitudeDouble();
double lon = boatLocationMessage.getLongitudeDouble();
boat.setCurrentPosition(new GPSCoordinate(lat, lon));
boat.setHeading(boatLocationMessage.getHeadingDegrees());
boat.setVelocity(boatLocationMessage.getBoatSpeed() * MMPS_TO_KN);
}
}
protected void setPosition(Boat boat, GPSCoordinate coordinate) {