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 @@
-
-