package de.fau.cs.mad.fly.sound; import com.badlogic.gdx.audio.Sound; public interface Playback { public Playable source(); public void pause(); public void resume(); public void stop(); public void setVolume(float volume); public void setLooping(boolean looping); public void setPan(float pan, float volume); } class SoundPlayback implements Playback { private final SoundPlayable source; private final long id; public SoundPlayback(SoundPlayable source) { this.source = source; this.id = source.target.play(1.0f * source.defaultVolume * source.manager().volume); setLooping(source.defaultLooping); } @Override public Playable source() { return source; } @Override public void pause() { source.target.pause(id); } @Override public void resume() { source.target.resume(id); } @Override public void stop() { source.target.stop(id); } @Override public void setVolume(float volume) { source.target.setVolume(id, source.defaultVolume * volume * source.manager().volume); } @Override public void setLooping(boolean looping) { source.target.setLooping(id, looping); } @Override public void setPan(float pan, float volume) { source.target.setPan(id, pan, volume); } }