GameMusicPlayer.java

package com.example.project.services;

import com.example.project.Application;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;

/**
 * plays a media player music track.
 */
public class GameMusicPlayer
{
    private static MediaPlayer gameMusicPlayer;

    private static final Logger logger = new Logger();

    /**
     * gets the singleton instance.
     * @return the game soundtrack player.
     */
    public static MediaPlayer getInstance(){
        if (gameMusicPlayer == null){
            initialiseLevelMusic();
        }

        return gameMusicPlayer;
    }

    private static void initialiseLevelMusic()
    {
        var rawPath = Application.class.getResource("/com/example/project/Sounds/puzzleMusic.wav");
        if (rawPath == null)
        {
            logger.logMessage("sound file not found.");
            return;
        }

        String path = rawPath.toExternalForm();
        Media media = new Media(path);
        gameMusicPlayer = new MediaPlayer(media);
        gameMusicPlayer.setCycleCount(MediaPlayer.INDEFINITE);
        gameMusicPlayer.play();
    }
}