Skip to content

Commit a49292a

Browse files
authored
Merge pull request jvondermarck#113 from CGaneshKumar2002/main
changed menu sound ui design
2 parents 77052c8 + bb7b095 commit a49292a

File tree

4 files changed

+58
-21
lines changed

4 files changed

+58
-21
lines changed

src/main/java/com/dinosaur/dinosaurexploder/view/DinosaurMenu.java

+42-21
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,17 @@
1313
import javafx.scene.media.MediaPlayer;
1414
import javafx.scene.paint.Color;
1515
import javafx.scene.shape.Rectangle;
16-
16+
import java.io.InputStream;
1717
import javafx.beans.value.ChangeListener;
1818
import javafx.beans.value.ObservableValue;
1919
import javafx.geometry.Pos;
2020
import javafx.scene.control.Label;
2121
import javafx.scene.control.Slider;
2222
import javafx.scene.layout.BorderPane;
23-
24-
import java.io.FileInputStream;
23+
import javafx.scene.layout.Region;
2524
import java.io.FileNotFoundException;
25+
import java.util.Objects;
26+
import javafx.scene.layout.StackPane;
2627

2728
public class DinosaurMenu extends FXGLMenu {
2829
private MediaPlayer mainMenuSound;
@@ -42,30 +43,39 @@ public DinosaurMenu() {
4243
var quitButton = new Button("Quit");
4344

4445
Slider volumeSlider = new Slider(0, 1, 1);
45-
volumeSlider.setShowTickLabels(true);
46-
volumeSlider.setShowTickMarks(true);
4746
volumeSlider.setBlockIncrement(0.01);
4847

49-
Label volumeLabel = new Label("Volume: 100%");
48+
volumeSlider.getStylesheets().add(Objects.requireNonNull(getClass().getResource("/styles/styles.css")).toExternalForm());
5049

50+
//Sets the volume label
51+
Label volumeLabel = new Label("100%");
5152
volumeSlider.valueProperty().addListener(new ChangeListener<Number>() {
5253
@Override
5354
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
5455
mainMenuSound.setVolume(newValue.doubleValue());
55-
volumeLabel.setText(String.format("Volume: %.0f%%", newValue.doubleValue() * 100));
56+
volumeLabel.setText(String.format("%.0f%%", newValue.doubleValue() * 100));
5657
}
5758
});
5859

5960

6061
try {
6162

62-
63-
FileInputStream fileInputStream = new FileInputStream("../dinosaur-exploder/src/main/resources/assets/textures/dinomenu.png");
64-
FileInputStream mutemusic_button = new FileInputStream("../dinosaur-exploder/src/main/resources/assets/textures/silent.png");
65-
FileInputStream audioOnButton = new FileInputStream("../dinosaur-exploder/src/main/resources/assets/textures/playing.png");
63+
//Using InputStream for efficient fetching of images
64+
InputStream menuImage = getClass().getClassLoader().getResourceAsStream("assets/textures/dinomenu.png");
65+
if (menuImage == null) {
66+
throw new FileNotFoundException("Resource not found: assets/textures/dinomenu.png");
67+
}
68+
InputStream muteButton = getClass().getClassLoader().getResourceAsStream("assets/textures/silent.png");
69+
if (muteButton == null) {
70+
throw new FileNotFoundException("Resource not found: assets/textures/silent.png");
71+
}
72+
InputStream soundButton = getClass().getClassLoader().getResourceAsStream("assets/textures/playing.png");
73+
if (soundButton == null) {
74+
throw new FileNotFoundException("Resource not found: assets/textures/playing.png");
75+
}
6676

6777
// image for dino in main menu
68-
Image image = new Image(fileInputStream);
78+
Image image = new Image(menuImage);
6979
ImageView imageView = new ImageView(image);
7080
imageView.setFitHeight(250);
7181
imageView.setFitWidth(200);
@@ -74,22 +84,22 @@ public void changed(ObservableValue<? extends Number> observable, Number oldValu
7484
imageView.setPreserveRatio(true);
7585

7686
//adding image to manually mute music
77-
Image mute = new Image(mutemusic_button);
87+
Image mute = new Image(muteButton);
7888

7989

80-
Image audioOn = new Image(audioOnButton);
90+
Image audioOn = new Image(soundButton);
8191
ImageView imageViewPlaying = new ImageView(audioOn);
82-
imageViewPlaying.setFitHeight(40);
83-
imageViewPlaying.setFitWidth(50);
84-
imageViewPlaying.setX(490);
92+
imageViewPlaying.setFitHeight(50);
93+
imageViewPlaying.setFitWidth(60);
94+
imageViewPlaying.setX(470);
8595
imageViewPlaying.setY(20);
8696
imageViewPlaying.setPreserveRatio(true);
8797

8898

8999
startButton.setMinSize(50, 50);
90100
startButton.setPrefSize(140,60);
91101

92-
quitButton.setMinSize(140, 50);
102+
quitButton.setMinSize(140, 60);
93103

94104
title.setTranslateY(100);
95105
title.setTranslateX(getAppWidth() / 2 - 145);
@@ -106,24 +116,34 @@ public void changed(ObservableValue<? extends Number> observable, Number oldValu
106116
root.setTop(title);
107117
BorderPane.setAlignment(title, Pos.CENTER);
108118

119+
109120
BorderPane volumePane = new BorderPane();
110121
volumePane.setLeft(volumeLabel);
122+
BorderPane.setAlignment(volumeLabel, Pos.CENTER);
111123
volumePane.setCenter(volumeSlider);
112-
volumePane.setStyle("-fx-padding: 10;");
124+
volumeSlider.setStyle("-fx-padding: 10px;");
125+
volumeSlider.setTranslateY(25);
126+
volumeSlider.setTranslateX(10);
127+
volumeLabel.setTranslateX(20);
128+
volumeLabel.setTranslateY(20);
129+
volumeLabel.setStyle("-fx-text-fill: #61C181;");
130+
131+
113132

114133
root.setCenter(volumePane);
115134
root.setBottom(new BorderPane(startButton, null, quitButton, null, null));
116135
BorderPane.setAlignment(startButton, Pos.CENTER);
117136
BorderPane.setAlignment(quitButton, Pos.BOTTOM_CENTER);
118137

138+
119139
startButton.setOnAction(event -> {
120140
fireNewGame();
121141
mainMenuSound.stop();
122142
});
123143

124144
imageViewPlaying.setOnMouseClicked(mouseEvent -> {
125145
if (mainMenuSound.isMute()){
126-
mainMenuSound.setMute(false);
146+
mainMenuSound.setMute(false); //False later
127147
imageViewPlaying.setImage(audioOn);
128148
} else {
129149
mainMenuSound.setMute(true);
@@ -133,8 +153,9 @@ public void changed(ObservableValue<? extends Number> observable, Number oldValu
133153

134154
quitButton.setOnAction(event -> fireExit());
135155

156+
136157
getContentRoot().getChildren().addAll(
137-
bg, title, startButton, quitButton, imageView, imageViewPlaying, volumeSlider, volumeLabel
158+
bg, title, startButton, quitButton, imageView, imageViewPlaying, volumeLabel, volumeSlider
138159
);
139160
}
140161
catch (FileNotFoundException e){

src/main/resources/Styles/styles.css

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/* Style for the slider track */
2+
3+
4+
.slider {
5+
-fx-pref-height: 40px;
6+
}
7+
.slider .track {
8+
-fx-background-color: linear-gradient(to right, #0499B0, #44BB82, #7DD858);
9+
-fx-pref-height: 15px;
10+
-fx-background-radius: 10;
11+
}
12+
13+
.slider .thumb {
14+
-fx-background-radius: 10;
15+
-fx-background-color: #005500;
16+
}
44.5 KB
Loading
40.1 KB
Loading

0 commit comments

Comments
 (0)