diff --git a/src/main/java/seng302/utilities/Sounds.java b/src/main/java/seng302/utilities/Sounds.java index e57810b9..0f99213a 100644 --- a/src/main/java/seng302/utilities/Sounds.java +++ b/src/main/java/seng302/utilities/Sounds.java @@ -19,16 +19,22 @@ public class Sounds { public static void stopMusic() { - musicPlayer.stop(); + if (musicPlayer != null) { + musicPlayer.stop(); + } } public static void stopSoundEffects() { - soundEffect.stop(); + if (soundEffect != null) { + soundEffect.stop(); + } } public static void toggleMuteMusic() { musicMuted = !musicMuted; - musicPlayer.setMute(musicMuted); + if (musicPlayer != null) { + musicPlayer.setMute(musicMuted); + } } public static void toggleMuteEffects() { @@ -83,21 +89,32 @@ public class Sounds { Media finishSound = new Media(Sounds.class.getClassLoader().getResource("sounds/Sms-notification.mp3").toString()); soundPlayer = new MediaPlayer(finishSound); soundPlayer.play(); - soundPlayer.setMute(soundEffectsMuted); + } + + + public static void playMarkRoundingSound() { + Media markRoundingSound = new Media(Sounds.class.getClassLoader().getResource("sounds/sms-tone.mp3").toString()); + soundPlayer = new MediaPlayer(markRoundingSound); + soundPlayer.play(); } public static void playCapGunSound() { Media gunSound = new Media(Sounds.class.getClassLoader().getResource("sounds/Gunshot-sound.mp3").toString()); soundPlayer = new MediaPlayer(gunSound); soundPlayer.play(); - soundPlayer.setMute(soundEffectsMuted); } public static void playCrashSound() { Media crashSound = new Media(Sounds.class.getClassLoader().getResource("sounds/Large-metal-door-slam.mp3").toString()); soundPlayer = new MediaPlayer(crashSound); soundPlayer.play(); - soundPlayer.setMute(soundEffectsMuted); } + public static void playHoverSound() { + Media hoverSound = new Media(Sounds.class.getClassLoader().getResource("sounds/sound-over.wav").toString()); + soundPlayer = new MediaPlayer(hoverSound); + soundPlayer.play(); + } + + } diff --git a/src/main/java/seng302/visualiser/GameClient.java b/src/main/java/seng302/visualiser/GameClient.java index c6b6ea60..b647fa97 100644 --- a/src/main/java/seng302/visualiser/GameClient.java +++ b/src/main/java/seng302/visualiser/GameClient.java @@ -164,7 +164,6 @@ public class GameClient { // server = null; // } - Sounds.stopSoundEffects(); Sounds.stopMusic(); Sounds.playMenuMusic(); FXMLLoader fxmlLoader = new FXMLLoader( diff --git a/src/main/java/seng302/visualiser/GameView.java b/src/main/java/seng302/visualiser/GameView.java index 99a49021..76c8197a 100644 --- a/src/main/java/seng302/visualiser/GameView.java +++ b/src/main/java/seng302/visualiser/GameView.java @@ -36,6 +36,7 @@ import seng302.model.mark.CompoundMark; import seng302.model.mark.Corner; import seng302.model.mark.Mark; import seng302.utilities.GeoUtility; +import seng302.utilities.Sounds; import seng302.visualiser.fxObjects.AnnotationBox; import seng302.visualiser.fxObjects.BoatObject; import seng302.visualiser.fxObjects.CourseBoundary; @@ -785,12 +786,14 @@ public class GameView extends Pane { private void updateMarkArrows (ClientYacht yacht, CompoundMark compoundMark, int legNumber) { //Only show arrows for this and next leg. if (compoundMark != null) { + Sounds.playMarkRoundingSound(); for (Mark mark : compoundMark.getMarks()) { markerObjects.get(mark).showNextExitArrow(); } } CompoundMark nextMark = null; if (legNumber < course.size() - 1) { + Sounds.playMarkRoundingSound(); nextMark = course.get(legNumber); for (Mark mark : nextMark.getMarks()) { markerObjects.get(mark).showNextEnterArrow(); diff --git a/src/main/java/seng302/visualiser/controllers/StartScreenController.java b/src/main/java/seng302/visualiser/controllers/StartScreenController.java index 687a52d1..85faceb0 100644 --- a/src/main/java/seng302/visualiser/controllers/StartScreenController.java +++ b/src/main/java/seng302/visualiser/controllers/StartScreenController.java @@ -11,6 +11,7 @@ import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.TextField; import javafx.scene.control.ToggleButton; +import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.GridPane; import seng302.gameServer.GameState; @@ -205,4 +206,8 @@ public class StartScreenController implements Initializable { muteSoundsButton.setText("Mute Sounds"); } } + + public void playButtonHoverSound(MouseEvent mouseEvent) { + Sounds.playHoverSound(); + } } diff --git a/src/main/resources/sounds/sms-tone.mp3 b/src/main/resources/sounds/sms-tone.mp3 new file mode 100644 index 00000000..eeb3bcf7 Binary files /dev/null and b/src/main/resources/sounds/sms-tone.mp3 differ diff --git a/src/main/resources/sounds/sound-over.wav b/src/main/resources/sounds/sound-over.wav new file mode 100644 index 00000000..c3e06199 Binary files /dev/null and b/src/main/resources/sounds/sound-over.wav differ diff --git a/src/main/resources/views/StartScreenView.fxml b/src/main/resources/views/StartScreenView.fxml index 264da0a8..2aab12d9 100644 --- a/src/main/resources/views/StartScreenView.fxml +++ b/src/main/resources/views/StartScreenView.fxml @@ -25,8 +25,8 @@ -