3
3
import com .almasb .fxgl .app .scene .FXGLMenu ;
4
4
import com .almasb .fxgl .app .scene .MenuType ;
5
5
import com .almasb .fxgl .dsl .FXGL ;
6
+ import com .almasb .fxgl .scene .Scene ;
6
7
import com .almasb .fxgl .ui .FontType ;
7
8
import com .dinosaur .dinosaurexploder .model .GameConstants ;
8
9
import javafx .scene .control .Button ;
24
25
import java .io .FileNotFoundException ;
25
26
26
27
public class DinosaurMenu extends FXGLMenu {
28
+ private MediaPlayer mainMenuSound ;
27
29
28
30
public DinosaurMenu () {
29
31
super (MenuType .MAIN_MENU );
30
32
31
33
Media media = new Media (getClass ().getResource (GameConstants .MAINMENU_SOUND ).toExternalForm ());
32
- MediaPlayer mainMenuSound = new MediaPlayer (media );
34
+ mainMenuSound = new MediaPlayer (media );
33
35
mainMenuSound .play ();
34
36
mainMenuSound .setCycleCount (MediaPlayer .INDEFINITE );
35
37
@@ -38,7 +40,7 @@ public DinosaurMenu() {
38
40
var title = FXGL .getUIFactoryService ().newText (GameConstants .GAME_NAME , Color .LIME , FontType .MONO , 35 );
39
41
var startButton = new Button ("Start Game" );
40
42
var quitButton = new Button ("Quit" );
41
-
43
+
42
44
Slider volumeSlider = new Slider (0 , 1 , 1 );
43
45
volumeSlider .setShowTickLabels (true );
44
46
volumeSlider .setShowTickMarks (true );
@@ -53,13 +55,14 @@ public void changed(ObservableValue<? extends Number> observable, Number oldValu
53
55
volumeLabel .setText (String .format ("Volume: %.0f%%" , newValue .doubleValue () * 100 ));
54
56
}
55
57
});
56
-
57
-
58
+
59
+
58
60
try {
59
61
60
62
61
63
FileInputStream fileInputStream = new FileInputStream ("../dinosaur-exploder/src/main/resources/assets/textures/dinomenu.png" );
62
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
66
64
67
// image for dino in main menu
65
68
Image image = new Image (fileInputStream );
@@ -71,16 +74,21 @@ public void changed(ObservableValue<? extends Number> observable, Number oldValu
71
74
imageView .setPreserveRatio (true );
72
75
73
76
//adding image to manually mute music
74
-
75
77
Image mute = new Image (mutemusic_button );
76
- ImageView imageView_mute = new ImageView (mute );
77
- imageView_mute .setFitHeight (40 );
78
- imageView_mute .setFitWidth (50 );
79
- imageView_mute .setX (490 );
80
- imageView_mute .setY (20 );
81
- imageView_mute .setPreserveRatio (true );
78
+
79
+
80
+ Image audioOn = new Image (audioOnButton );
81
+ ImageView imageViewPlaying = new ImageView (audioOn );
82
+ imageViewPlaying .setFitHeight (40 );
83
+ imageViewPlaying .setFitWidth (50 );
84
+ imageViewPlaying .setX (490 );
85
+ imageViewPlaying .setY (20 );
86
+ imageViewPlaying .setPreserveRatio (true );
87
+
82
88
83
89
startButton .setMinSize (50 , 50 );
90
+ startButton .setPrefSize (140 ,60 );
91
+
84
92
quitButton .setMinSize (140 , 50 );
85
93
86
94
title .setTranslateY (100 );
@@ -93,7 +101,7 @@ public void changed(ObservableValue<? extends Number> observable, Number oldValu
93
101
quitButton .setTranslateY (500 );
94
102
quitButton .setTranslateX (getAppWidth () / 2 - 50 );
95
103
quitButton .setStyle ("-fx-font-size:20" );
96
-
104
+
97
105
BorderPane root = new BorderPane ();
98
106
root .setTop (title );
99
107
BorderPane .setAlignment (title , Pos .CENTER );
@@ -113,22 +121,31 @@ public void changed(ObservableValue<? extends Number> observable, Number oldValu
113
121
mainMenuSound .stop ();
114
122
});
115
123
116
- imageView_mute .setOnMouseClicked (event -> {
117
- if (mainMenuSound .getStatus () == MediaPlayer .Status .PLAYING ) {
118
- mainMenuSound .pause ();
119
- } else {
120
- mainMenuSound .play ();
121
- }
124
+ imageViewPlaying .setOnMouseClicked (mouseEvent -> {
125
+ if (mainMenuSound .isMute ()){
126
+ mainMenuSound .setMute (false );
127
+ imageViewPlaying .setImage (audioOn );
128
+ } else {
129
+ mainMenuSound .setMute (true );
130
+ imageViewPlaying .setImage (mute );
131
+ }
122
132
});
133
+
123
134
quitButton .setOnAction (event -> fireExit ());
124
135
125
136
getContentRoot ().getChildren ().addAll (
126
- bg , title , startButton , quitButton , imageView , imageView_mute , volumeSlider , volumeLabel
137
+ bg , title , startButton , quitButton , imageView , imageViewPlaying , volumeSlider , volumeLabel
127
138
);
128
139
}
129
140
catch (FileNotFoundException e ){
130
- System .out .println ("File not found" + e .getMessage ());
141
+ System .out .println ("File not found" + e .getMessage ());
131
142
}
132
143
}
144
+ @ Override
145
+ public void onEnteredFrom (Scene prevState ) {
146
+ super .onEnteredFrom (prevState );
147
+ FXGL .getAudioPlayer ().stopAllSounds ();
148
+ mainMenuSound .play ();
149
+ }
133
150
134
- }
151
+ }
0 commit comments