From 1946bfd65899b9fc37629e9f5c2e5e7f50a0945f Mon Sep 17 00:00:00 2001 From: zwu18 Date: Fri, 22 Sep 2017 21:19:35 +1200 Subject: [PATCH] Added audio indication when the user boat is low on hp. Audio rate changes when hp is critically low. #story[1292] --- .../Controllers/RaceViewController.java | 33 ++++++++++++++++++ .../resources/visualiser/sounds/heartbeat.mp3 | Bin 0 -> 13473 bytes 2 files changed, 33 insertions(+) create mode 100644 racevisionGame/src/main/resources/visualiser/sounds/heartbeat.mp3 diff --git a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java index a9891a7b..1404875e 100644 --- a/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java +++ b/racevisionGame/src/main/java/visualiser/Controllers/RaceViewController.java @@ -18,6 +18,7 @@ import javafx.scene.input.KeyEvent; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.StackPane; +import javafx.scene.media.AudioClip; import javafx.scene.paint.Color; import javafx.scene.paint.Material; import javafx.scene.paint.PhongMaterial; @@ -66,6 +67,9 @@ public class RaceViewController extends Controller { private ObservableList viewSubjects; private ResizableRaceCanvas raceCanvas; private boolean mapToggle = true; + private int heartbeatDelay = 1000; + private long heartbeatTime = 0; + /** * Arrow pointing to next mark in third person @@ -115,6 +119,7 @@ public class RaceViewController extends Controller { initKeypressHandler(); initialiseRaceVisuals(); initialiseRaceCanvas(); + healthLoop(); } /** @@ -656,6 +661,34 @@ public class RaceViewController extends Controller { }.start(); } + private void healthLoop(){ + new AnimationTimer(){ + @Override + public void handle(long arg0){ + if (raceState.getRaceStatusEnum() == RaceStatusEnum.FINISHED) { + stop(); // stop the timer + } else { + try { + if(raceState.getBoat(raceState.getPlayerBoatID()).getHealth()<=20){ + heartbeatDelay = 500; + } else if (raceState.getBoat(raceState.getPlayerBoatID()).getHealth()<=40){ + heartbeatDelay = 1000; + } + if(raceState.getBoat(raceState.getPlayerBoatID()).getHealth()<=40){ + if(System.currentTimeMillis() > heartbeatTime+heartbeatDelay) { + AudioClip sound = new AudioClip(this.getClass().getResource("/visualiser/sounds/heartbeat.mp3").toExternalForm()); + sound.play(); + heartbeatTime = System.currentTimeMillis() + heartbeatDelay; + } + } + } catch (BoatNotFoundException e) { + e.printStackTrace(); + } + } + } + }.start(); + } + /** * toggles if the info table is shown */ diff --git a/racevisionGame/src/main/resources/visualiser/sounds/heartbeat.mp3 b/racevisionGame/src/main/resources/visualiser/sounds/heartbeat.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f43c52fc43733c54736362081caf70591271baea GIT binary patch literal 13473 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