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 00000000..f43c52fc Binary files /dev/null and b/racevisionGame/src/main/resources/visualiser/sounds/heartbeat.mp3 differ