diff --git a/src/itdelatrisu/opsu/downloads/Download.java b/src/itdelatrisu/opsu/downloads/Download.java index f8857b60..6e1d0973 100644 --- a/src/itdelatrisu/opsu/downloads/Download.java +++ b/src/itdelatrisu/opsu/downloads/Download.java @@ -34,6 +34,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; +import org.newdawn.slick.util.Log; + /** * File download. */ @@ -76,6 +78,9 @@ public class Download { public interface DownloadListener { /** Indication that a download has completed. */ public void completed(); + + /** Indication that an error has occurred. */ + public void error(); } /** The local path. */ @@ -177,7 +182,9 @@ public class Download { contentLength = conn.getContentLength(); } catch (IOException e) { status = Status.ERROR; - ErrorHandler.error("Failed to open connection.", e, false); + Log.warn("Failed to open connection.", e); + if (listener != null) + listener.error(); return; } @@ -193,6 +200,7 @@ public class Download { updateReadSoFar(); fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); if (status == Status.DOWNLOADING) { // not interrupted + // TODO: if connection is lost before a download finishes, it's still marked as "complete" status = Status.COMPLETE; rbc.close(); fos.close(); @@ -205,7 +213,9 @@ public class Download { } } catch (Exception e) { status = Status.ERROR; - ErrorHandler.error("Failed to start download.", e, false); + Log.warn("Failed to start download.", e); + if (listener != null) + listener.error(); } } }.start(); diff --git a/src/itdelatrisu/opsu/downloads/DownloadNode.java b/src/itdelatrisu/opsu/downloads/DownloadNode.java index a28573b0..fd41231a 100644 --- a/src/itdelatrisu/opsu/downloads/DownloadNode.java +++ b/src/itdelatrisu/opsu/downloads/DownloadNode.java @@ -225,6 +225,11 @@ public class DownloadNode { public void completed() { UI.sendBarNotification(String.format("Download complete: %s", getTitle())); } + + @Override + public void error() { + UI.sendBarNotification("Download failed due to a connection error."); + } }); } } diff --git a/src/itdelatrisu/opsu/downloads/Updater.java b/src/itdelatrisu/opsu/downloads/Updater.java index 7e1f5560..164e279e 100644 --- a/src/itdelatrisu/opsu/downloads/Updater.java +++ b/src/itdelatrisu/opsu/downloads/Updater.java @@ -175,6 +175,12 @@ public class Updater { status = Status.UPDATE_DOWNLOADED; UI.sendBarNotification("Update has finished downloading."); } + + @Override + public void error() { + status = Status.CONNECTION_ERROR; + UI.sendBarNotification("Update failed due to a connection error."); + } }); } } diff --git a/src/itdelatrisu/opsu/objects/curves/Bezier2.java b/src/itdelatrisu/opsu/objects/curves/Bezier2.java index d7a60893..35552b4a 100644 --- a/src/itdelatrisu/opsu/objects/curves/Bezier2.java +++ b/src/itdelatrisu/opsu/objects/curves/Bezier2.java @@ -103,23 +103,23 @@ public class Bezier2 { * Returns the total distances of this Bezier curve. */ public float totalDistance() { return totalDistance; } - + /** + * Calculates the binomial coefficient. * http://en.wikipedia.org/wiki/Binomial_coefficient#Binomial_coefficient_in_programming_languages - * */ public static long binomialCoefficient(int n, int k) { if (k < 0 || k > n) return 0; if (k == 0 || k == n) return 1; - k = Math.min(k, n - k); // # take advantage of symmetry + k = Math.min(k, n - k); // take advantage of symmetry long c = 1; - for (int i = 0; i < k; i++) { + for (int i = 0; i < k; i++) c = c * (n - i) / (i + 1); - } return c; } + /** * Calculates the Bernstein polynomial. * @param i the index @@ -129,6 +129,4 @@ public class Bezier2 { private static double bernstein(int i, int n, float t) { return binomialCoefficient(n, i) * Math.pow(t, i) * Math.pow(1 - t, n - i); } - - } diff --git a/src/itdelatrisu/opsu/objects/curves/Curve.java b/src/itdelatrisu/opsu/objects/curves/Curve.java index 65c22c3c..d5b35d90 100644 --- a/src/itdelatrisu/opsu/objects/curves/Curve.java +++ b/src/itdelatrisu/opsu/objects/curves/Curve.java @@ -86,5 +86,4 @@ public abstract class Curve { protected float lerp(float a, float b, float t) { return a * (1 - t) + b * t; } - } diff --git a/src/org/newdawn/slick/openal/OpenALStreamPlayer.java b/src/org/newdawn/slick/openal/OpenALStreamPlayer.java index 6bad011d..f349b20e 100644 --- a/src/org/newdawn/slick/openal/OpenALStreamPlayer.java +++ b/src/org/newdawn/slick/openal/OpenALStreamPlayer.java @@ -149,13 +149,12 @@ public class OpenALStreamPlayer { audio = new Mp3InputStream(ResourceLoader.getResourceAsStream(ref)); else audio = new OggInputStream(ResourceLoader.getResourceAsStream(ref)); - - if(audio.getRate() == 0 && audio.getChannels() == 0) { + + if (audio.getRate() == 0 && audio.getChannels() == 0) { if (ref.toLowerCase().endsWith(".mp3")) audio = new OggInputStream(ResourceLoader.getResourceAsStream(ref)); else audio = new Mp3InputStream(ResourceLoader.getResourceAsStream(ref)); - } }