MusicController.java

package org.microcol.gui;

import org.microcol.gui.event.VolumeChangeController;
import org.microcol.gui.event.VolumeChangeEvent;

import com.google.common.base.Preconditions;
import com.google.inject.Inject;

/**
 * Communicate between GUI and sound and music playing.
 * 
 */
public class MusicController {

	private final MusicPlayer musicPlayer;

	@Inject
	public MusicController(final MusicPlayer musicPlayer, final VolumeChangeController volumeChangeController) {
		this.musicPlayer = Preconditions.checkNotNull(musicPlayer);
		volumeChangeController.addListener(e -> onVolumeChanged(e));
	}

	private void onVolumeChanged(final VolumeChangeEvent event) {
		musicPlayer.setVolume(event.getVolume());
	}

	public void start(int defaultVolume) {
		new Thread(() -> musicPlayer.playSound("music/AnnounceMyName_1.wav", defaultVolume)).start();
	}

	public void stop() {
		musicPlayer.stop();
	}

}