mirror of
https://github.com/michaelrausch/Party-Parrots-At-Sea.git
synced 2026-05-09 06:18:44 +00:00
Started adding functionality to calculate yacht velocity from the wind speed and direction using polar tables. Also began writing tests to cover this functionality, as it can't currently be tested within the game itself.
#story[986]
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
package seng302.gameServer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import seng302.models.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import seng302.models.Yacht;
|
||||
|
||||
/**
|
||||
@@ -65,6 +63,14 @@ public class GameState {
|
||||
GameState.currentStage = currentStage;
|
||||
}
|
||||
|
||||
public static Double getWindDirection() {
|
||||
return windDirection;
|
||||
}
|
||||
|
||||
public static Double getWindSpeed() {
|
||||
return windSpeed;
|
||||
}
|
||||
|
||||
|
||||
public static void update() {
|
||||
Long timeInterval = System.currentTimeMillis() - previousUpdateTime;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package seng302.models;
|
||||
|
||||
import java.io.*;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -140,7 +143,7 @@ public final class PolarTable {
|
||||
}
|
||||
|
||||
|
||||
private static Double getClosestMatch(Double thisWindSpeed) {
|
||||
public static Double getClosestMatch(Double thisWindSpeed) {
|
||||
|
||||
ArrayList<Double> windValues = new ArrayList<>(polarTable.keySet());
|
||||
|
||||
|
||||
@@ -2,12 +2,12 @@ package seng302.models;
|
||||
|
||||
import static seng302.utilities.GeoUtility.getGeoCoordinate;
|
||||
|
||||
import javafx.scene.paint.Color;
|
||||
import seng302.models.mark.Mark;
|
||||
import seng302.controllers.RaceViewController;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Map;
|
||||
import javafx.scene.paint.Color;
|
||||
import seng302.controllers.RaceViewController;
|
||||
import seng302.models.mark.Mark;
|
||||
import seng302.utilities.GeoPoint;
|
||||
|
||||
/**
|
||||
@@ -96,6 +96,32 @@ public class Yacht {
|
||||
location = getGeoCoordinate(location, heading, metersCovered);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adjusts the yachts velocity based on the wind direction and speed from the polar table.
|
||||
*
|
||||
* @param windDir current wind Direction TODO: 20/07/17 ajm412: (TWA or AWA, not 100% sure?)
|
||||
* @param windSpd current wind Speed
|
||||
*/
|
||||
public void updateYachtVelocity(Double windDir, Double windSpd) {
|
||||
Double closestSpd = PolarTable.getClosestMatch(windSpd);
|
||||
Map<Double, Double> polarsFromClosestSpd = PolarTable.getPolarTable().get(closestSpd);
|
||||
|
||||
Double closest = 0d;
|
||||
Double closest_key = 0d;
|
||||
|
||||
for (Double key : polarsFromClosestSpd.keySet()) {
|
||||
Double difference = Math.abs(key - windDir);
|
||||
if (difference <= closest) {
|
||||
closest = difference;
|
||||
closest_key = key;
|
||||
}
|
||||
}
|
||||
// System.out.println("Closest angle " + closest_key);
|
||||
// System.out.println("WindDir " + windDir);
|
||||
velocity = polarsFromClosestSpd.get(closest_key);
|
||||
}
|
||||
|
||||
|
||||
public String getBoatType() {
|
||||
return boatType;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user