From 12e2ae9c0150ad6e3e5de6ca77ff606cb11fcbf8 Mon Sep 17 00:00:00 2001 From: Joseph Gardner Date: Tue, 29 Aug 2017 13:21:34 +1200 Subject: [PATCH] Started implementing wind oscillation. #story[1187] --- .../src/main/java/mock/app/Event.java | 17 ++++--- .../model/wind/ShiftingWindGenerator.java | 49 ++++++++++++++----- .../src/main/java/shared/model/Wind.java | 7 +++ 3 files changed, 56 insertions(+), 17 deletions(-) diff --git a/racevisionGame/src/main/java/mock/app/Event.java b/racevisionGame/src/main/java/mock/app/Event.java index f36ac714..096705bb 100644 --- a/racevisionGame/src/main/java/mock/app/Event.java +++ b/racevisionGame/src/main/java/mock/app/Event.java @@ -5,6 +5,7 @@ import mock.exceptions.EventConstructionException; import mock.model.*; import mock.model.commandFactory.CompositeCommand; import mock.model.wind.RandomWindGenerator; +import mock.model.wind.ShiftingWindGenerator; import mock.model.wind.WindGenerator; import mock.xml.RaceXMLCreator; import network.Messages.LatestMessages; @@ -124,13 +125,17 @@ public class Event { this.latestMessages = new LatestMessages(); //Create and start race. - WindGenerator windGenerator = new RandomWindGenerator( +// WindGenerator windGenerator = new RandomWindGenerator( +// Bearing.fromDegrees(225), +// Bearing.fromDegrees(215), +// Bearing.fromDegrees(235), +// 12d, +// 8d, +// 16d ); + WindGenerator windGenerator = new ShiftingWindGenerator( Bearing.fromDegrees(225), - Bearing.fromDegrees(215), - Bearing.fromDegrees(235), - 12d, - 8d, - 16d ); + 12 + ); RaceLogic newRace = new RaceLogic( new MockRace( boatDataSource, diff --git a/racevisionGame/src/main/java/mock/model/wind/ShiftingWindGenerator.java b/racevisionGame/src/main/java/mock/model/wind/ShiftingWindGenerator.java index 4a1c158e..fc3e3dc2 100644 --- a/racevisionGame/src/main/java/mock/model/wind/ShiftingWindGenerator.java +++ b/racevisionGame/src/main/java/mock/model/wind/ShiftingWindGenerator.java @@ -3,18 +3,28 @@ package mock.model.wind; import shared.model.Bearing; import shared.model.Wind; +import java.util.Random; + /** * Created by jjg64 on 28/08/17. */ public class ShiftingWindGenerator implements WindGenerator { Bearing baselineBearing; double baseLineSpeed; - double maxBearingVariance = 5; // In degrees + double speedVariance = 4; + double bearingVariance = 5; // In degrees double oscillationPeriod = 3e6; // In milliseconds + double timeOfLastOscillationReset = 0; + double timeSinceLastChange = 0; + double timeSinceLastShift = 0; // Back / veer + + boolean oscillationLeft = false; + public ShiftingWindGenerator(Bearing baselineBearing, double baseLineSpeed) { this.baselineBearing = baselineBearing; this.baseLineSpeed = baseLineSpeed; + initialiseOscillationDirection(); } @Override @@ -27,22 +37,39 @@ public class ShiftingWindGenerator implements WindGenerator { return changeWind(currentWind); } - private Wind changeWind(Wind currentWind) { - currentWind = oscillateWind(currentWind); - currentWind = shiftWind(currentWind); - return currentWind; + private Wind changeWind(Wind wind) { + Wind newWind = new Wind(wind.getWindDirection(), wind.getWindSpeed()); + oscillateWind(newWind); + shiftWind(newWind); + changeWindSpeed(newWind); + return newWind; + } + + private void oscillateWind(Wind wind) { + double timeSinceLastOscillationReset = System.currentTimeMillis() - timeOfLastOscillationReset; + if (oscillationLeft) { + + } + } + + private void shiftWind(Wind wind) { + } + + private void changeWindSpeed(Wind wind) { + } - private Wind oscillateWind(Wind currentWind) { - return currentWind; + private void initialiseOscillationDirection() { + oscillationLeft = new Random().nextBoolean(); + timeOfLastOscillationReset = System.currentTimeMillis(); } - private Wind shiftWind(Wind currentWind) { - return currentWind; + public void setBearingVariance(double maxBearingVariance) { + this.bearingVariance = maxBearingVariance; } - public void setMaxBearingVariance(double maxBearingVariance) { - this.maxBearingVariance = maxBearingVariance; + public void setSpeedVariance(double speedVariance) { + this.speedVariance = speedVariance; } public void setOscillationPeriod(double oscillationPeriod) { diff --git a/racevisionGame/src/main/java/shared/model/Wind.java b/racevisionGame/src/main/java/shared/model/Wind.java index 08d391c2..531d8473 100644 --- a/racevisionGame/src/main/java/shared/model/Wind.java +++ b/racevisionGame/src/main/java/shared/model/Wind.java @@ -48,4 +48,11 @@ public class Wind { return windSpeed; } + public void setWindSpeed(double windSpeed) { + this.windSpeed = windSpeed; + } + + public void setWindDirection(Bearing windDirection) { + this.windDirection = windDirection; + } }