Working sound effect for clicking, bug when using audio volume changer (changes some sounds to be wrong)

This commit is contained in:
lieght
2025-10-03 17:12:50 +02:00
parent 5a200a8a70
commit dd192692bd
7 changed files with 83 additions and 16 deletions

View File

@@ -23,8 +23,10 @@ public final class MainMenu extends Menu {
public MainMenu() {
final Region background = createBackground();
tictactoe = createButton(loc.getString("mainMenuSelectTicTacToe",currentLocale), () -> { App.activate(new GameSelectMenu(GameType.TICTACTOE)); });
reversi = createButton(loc.getString("mainMenuSelectReversi",currentLocale), () -> { App.activate(new GameSelectMenu(GameType.REVERSI)); });
tictactoe = createButton(
loc.getString("mainMenuSelectTicTacToe",currentLocale), () -> { App.activate(new GameSelectMenu(GameType.TICTACTOE)); });
reversi = createButton(
loc.getString("mainMenuSelectReversi",currentLocale), () -> { App.activate(new GameSelectMenu(GameType.REVERSI)); });
final VBox gamesBox = new VBox(10, tictactoe, reversi);
gamesBox.setAlignment(Pos.TOP_LEFT);

View File

@@ -4,6 +4,8 @@ import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Region;
import javafx.scene.text.Text;
import org.toop.framework.audio.events.AudioEvents;
import org.toop.framework.eventbus.EventFlow;
public abstract class Menu {
protected Pane pane;
@@ -34,7 +36,10 @@ public abstract class Menu {
public Button createButton(String css, String x, Runnable runnable) {
final Button button = new Button(x);
button.setOnAction(_ -> runnable.run());
button.setOnAction(_ -> {
new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent();
runnable.run();
});
button.getStyleClass().add(css);
return button;

View File

@@ -55,7 +55,7 @@ public final class OptionsMenu extends Menu {
selectLanguage.getItems().add(locFile);
}
selectLanguage.setConverter(new javafx.util.StringConverter<Locale>() {
selectLanguage.setConverter(new javafx.util.StringConverter<>() {
@Override
public String toString(Locale locale) {
return locale.getDisplayName();
@@ -67,7 +67,12 @@ public final class OptionsMenu extends Menu {
}
});
selectLanguage.setOnShowing(event -> {
new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent();
});
selectLanguage.setOnAction(event -> {
new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent();
Locale selectedLocale = selectLanguage.getSelectionModel().getSelectedItem();
if (selectedLocale != null) {
AppContext.setLocale(selectedLocale);
@@ -87,7 +92,12 @@ public final class OptionsMenu extends Menu {
selectScreen.getItems().add(screen);
}
selectScreen.setOnShowing(event -> {
new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent();
});
selectScreen.setOnAction(event -> {
new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent();
int selectedIndex = selectScreen.getSelectionModel().getSelectedIndex();
Object selectedItem = selectScreen.getSelectionModel().getSelectedItem();
@@ -102,6 +112,17 @@ public final class OptionsMenu extends Menu {
for (DisplayMode displayMode : currentScreenDevice.getDisplayModes()) {
selectWindowSize.getItems().add(displayMode);
}
selectWindowSize.setOnShowing(event -> {
new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent();
});
selectWindowSize.setOnAction(event -> {
new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent();
int selectedIndex = selectWindowSize.getSelectionModel().getSelectedIndex();
Object selectedItem = selectWindowSize.getSelectionModel().getSelectedItem();
System.out.println("Selection made: [" + selectedIndex + "] " + selectedItem);
System.out.println(" ChoiceBox.getValue(): " + selectWindowSize.getValue());
});
return selectWindowSize;
}
@@ -109,6 +130,7 @@ public final class OptionsMenu extends Menu {
final CheckBox setFullscreen = new CheckBox("Fullscreen");
setFullscreen.setSelected(App.isFullscreen());
setFullscreen.setOnAction(event -> {
new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent();
boolean isSelected = setFullscreen.isSelected();
App.setFullscreen(isSelected);
});
@@ -131,11 +153,24 @@ public final class OptionsMenu extends Menu {
Label valueLabel = new Label(String.valueOf((int) volumeSlider.getValue()));
final long[] lastPlayed = {0};
final long cooldown = 50;
volumeSlider.valueProperty().addListener((obs, oldVal, newVal) -> {
long now = System.currentTimeMillis();
if (now - lastPlayed[0] >= cooldown) {
lastPlayed[0] = now;
int value = newVal.intValue();
valueLabel.setText(String.valueOf(value));
new EventFlow().addPostEvent(new AudioEvents.PlayEffect("soft-button-click.wav", false)).asyncPostEvent();
}
valueLabel.setText(String.valueOf(newVal.intValue()));
new EventFlow().addPostEvent(new AudioEvents.ChangeVolume(newVal.doubleValue()/100.0))
.asyncPostEvent();
});
return volumeSlider;
}