Sounder.java

package ch.ladestation.connectncharge.pui;

import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;

/**
 * plays sounds when user Interacts
 */
public final class Sounder {
    private static Media deactivateMedia;
    private static Media activateMedia;

    private static Media notificationMedia;

    private static Media winMedia;
    private static boolean initialized = false;
    private static boolean muted = false;

    private Sounder() {
    }

    public static void init() {
        String resourcePath = Sounder.class.getResource("/deactivate.mp3").toString();
        deactivateMedia = new Media(resourcePath);

        resourcePath = Sounder.class.getResource("/activate.mp3").toString();
        activateMedia = new Media(resourcePath);

        resourcePath = Sounder.class.getResource("/notification.mp3").toString();
        notificationMedia = new Media(resourcePath);

        resourcePath = Sounder.class.getResource("/success.mp3").toString();
        winMedia = new Media(resourcePath);
        initialized = true;
    }

    public static void playActivate() {
        playMedia(activateMedia);
    }

    public static void playDeactivate() {
        playMedia(deactivateMedia);
    }

    public static void playNotification() {
        playMedia(notificationMedia);
    }

    public static void playWin() {
        playMedia(winMedia);
    }

    private static void playMedia(Media media) {
        if (!initialized || muted) {
            return;
        }
        var mp = new MediaPlayer(media);
        mp.setOnEndOfMedia(() -> {
            mp.dispose();
        });
        mp.setOnReady(() -> {
            mp.play();
        });
    }

    public static void shutdown() {
        //not needed i guess
    }

    public static void changeMuted(boolean nV) {
        muted = nV;
    }
}