diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinomainui.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinomainui.java index 67415c5..742bf3b 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinomainui.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinomainui.java @@ -1,6 +1,7 @@ package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui; /** Main UI application for Casono. Loads the main FXML layout and sets up the stage. */ +import ch.unibas.dmi.dbis.cs108.casono.ui.sound.SoundManager; import java.io.IOException; import javafx.application.Application; import javafx.fxml.FXMLLoader; @@ -30,6 +31,9 @@ public class Casinomainui extends Application { * @throws IOException If loading the FXML fails. */ public void start(Stage stage) throws IOException { + // Pre-load sounds to avoid delays on first play + SoundManager.getInstance().preloadSounds(); + // If the launcher passed an address argument (ip:port), expose it as // system properties so controllers can read it without embedding defaults. var raw = getParameters().getRaw(); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/CasinomainuiController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/CasinomainuiController.java index 518b8cf..0201504 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/CasinomainuiController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/CasinomainuiController.java @@ -5,6 +5,7 @@ import ch.unibas.dmi.dbis.cs108.casono.client.chat.ChatController; import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService; import ch.unibas.dmi.dbis.cs108.casono.client.network.LobbyClient; import ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.gameuicomponents.HighscoreViewController; +import ch.unibas.dmi.dbis.cs108.casono.ui.sound.SoundManager; import java.io.IOException; import java.net.URL; import javafx.application.Platform; @@ -169,6 +170,7 @@ public class CasinomainuiController { /** Handles the login button action. Validates input and calls LobbyClient.login(). */ @FXML public void handleLoginButton() { + SoundManager.getInstance().playButtonClick(); String username = usernameField == null ? null : usernameField.getText(); if (username == null || username.isBlank()) { showAlert("Please enter a username."); @@ -258,6 +260,7 @@ public class CasinomainuiController { /** Handles the exit button action to close the application. */ @FXML public void handleexitbutton() { + SoundManager.getInstance().playButtonClick(); if (chatController != null) { chatController.shutdown(); } @@ -271,6 +274,7 @@ public class CasinomainuiController { */ @FXML public void handleCreateLobbyButton() { + SoundManager.getInstance().playButtonClick(); if (translationManager.isFull()) { LOGGER.warn("Grid is full! No more lobbies available."); return; diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/LobbyButtonGridManager.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/LobbyButtonGridManager.java index c2c5163..81d1a84 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/LobbyButtonGridManager.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/LobbyButtonGridManager.java @@ -6,6 +6,7 @@ import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService; import ch.unibas.dmi.dbis.cs108.casono.client.network.LobbyClient; import ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.CasinoGameUI; import ch.unibas.dmi.dbis.cs108.casono.server.network.command.parsing.RequestParameter; +import ch.unibas.dmi.dbis.cs108.casono.ui.sound.SoundManager; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -363,6 +364,7 @@ public class LobbyButtonGridManager { btn.setOnAction( e -> { + SoundManager.getInstance().playButtonClick(); Integer targetLobbyId = translationManager.getLobbyIdForButton(buttonId); if (targetLobbyId != null) {