mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-28 14:57:12 +00:00
race now record wind if there is only startOfRace or startOfTracking set and no previous race records the wind
This commit is contained in:
1 parent
c2576fd985
commit
6d8b8f25eb
2 files changed
+20
-8
No files matched your search
+1
-1
@@ -657,7 +657,7 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
||||
@Override
|
||||
public boolean recordWind(Wind wind, WindSource windSource) {
|
||||
final boolean result;
|
||||
if(takesWindFix(wind)){
|
||||
if (takesWindFix(wind)) {
|
||||
result = getOrCreateWindTrack(windSource).add(wind);
|
||||
updated(/* time point */null); // wind events shouldn't advance race time
|
||||
triggerManeuverCacheRecalculationForAllCompetitors();
|
||||
|
||||
+19
-7
@@ -1501,15 +1501,27 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl
|
||||
boolean result = false;
|
||||
TimePoint earliestStartTimePoint = Util.getEarliestOfTimePoints(getStartOfRace(), getStartOfTracking());
|
||||
TimePoint latestEndTimePoint = Util.getLatestOfTimePoints(getStartOfRace(), getStartOfTracking());
|
||||
if (earliestStartTimePoint != null && latestEndTimePoint != null) {
|
||||
if (earliestStartTimePoint != null) {
|
||||
TimePoint earliestStartTimePointMinusExtra = earliestStartTimePoint.minus(EXTRA_LONG_TIME_BEFORE_START_TO_TRACK_WIND_MILLIS);
|
||||
TimePoint latestEndTimePointPlusExtra = latestEndTimePoint.plus(TimingConstants.IS_LIVE_GRACE_PERIOD_IN_MILLIS);
|
||||
if (Util.isTimePointInRangeOfTimePointsAandB(wind.getTimePoint(), /* a */earliestStartTimePointMinusExtra, /* b */latestEndTimePointPlusExtra)) {
|
||||
Set<TrackedRace> previousRacesInExecutionOrder = getPreviousRacesFromAttachedRaceExecutionOrderProviders();
|
||||
if(previousRacesInExecutionOrder == null || !previousRacesInExecutionOrder.stream().filter(tr->tr.takesWindFix(wind) == true).findAny().isPresent()){
|
||||
result = true;
|
||||
if (latestEndTimePoint != null) {
|
||||
TimePoint latestEndTimePointPlusExtra = latestEndTimePoint.plus(TimingConstants.IS_LIVE_GRACE_PERIOD_IN_MILLIS);
|
||||
if (Util.isTimePointInRangeOfTimePointsAandB(wind.getTimePoint(), /* a */earliestStartTimePointMinusExtra, /* b */latestEndTimePointPlusExtra)) {
|
||||
result = takesNoPreviousRaceWind(wind);
|
||||
}
|
||||
}
|
||||
} else if (latestEndTimePoint == null){
|
||||
if (wind.getTimePoint().after(earliestStartTimePointMinusExtra)){
|
||||
result = takesNoPreviousRaceWind(wind);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private boolean takesNoPreviousRaceWind(Wind wind) {
|
||||
boolean result = false;
|
||||
Set<TrackedRace> previousRacesInExecutionOrder = getPreviousRacesFromAttachedRaceExecutionOrderProviders();
|
||||
if (previousRacesInExecutionOrder == null || !previousRacesInExecutionOrder.stream().filter(tr -> tr.takesWindFix(wind) == true).findAny().isPresent()) {
|
||||
result = true;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user