private Double shouldWeBreak(double desiredSpeed, World world) { TrackModel track = world.getTrackModel(); double distance = track.getLaneDistanceBetweenPieces( track.getCurrent(), track.getNextCurve(), world.getMyLane()); double inPieceDistance = world.myPhysics.getPreviousPosition().inPieceDistance; double distanceToCurve = distance - inPieceDistance; double endSpeed; double newThrottle = 0; endSpeed = world.getMySpeed(); int ticksTillCurve = ticksToRunDistance(distanceToCurve, world, newThrottle); if (ticksTillCurve == -1) return null; for (int i = 0; i < ticksTillCurve; i++) { endSpeed = world.myPhysics.getAccelerationEstimator().getSpeedOnNextTick(endSpeed, newThrottle); } // Now we have reached the point that if (endSpeed > desiredSpeed) { return 0d; } else { return null; } }