mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Support switching tracks when music completes
This commit is contained in:
@@ -35,7 +35,6 @@ import java.util.MissingResourceException;
|
|||||||
*/
|
*/
|
||||||
public class AudioClip implements IAudioClip {
|
public class AudioClip implements IAudioClip {
|
||||||
private Clip clip;
|
private Clip clip;
|
||||||
private final int SOUND_SYSTEM_DELAY = 30;
|
|
||||||
|
|
||||||
public static boolean fileExists(String fileName) {
|
public static boolean fileExists(String fileName) {
|
||||||
File fSound = new File(ForgeConstants.SOUND_DIR, fileName);
|
File fSound = new File(ForgeConstants.SOUND_DIR, fileName);
|
||||||
@@ -74,7 +73,7 @@ public class AudioClip implements IAudioClip {
|
|||||||
}
|
}
|
||||||
clip.setMicrosecondPosition(0);
|
clip.setMicrosecondPosition(0);
|
||||||
try {
|
try {
|
||||||
Thread.sleep(SOUND_SYSTEM_DELAY);
|
Thread.sleep(SoundSystem.DELAY);
|
||||||
} catch (InterruptedException ex) {
|
} catch (InterruptedException ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
@@ -87,7 +86,7 @@ public class AudioClip implements IAudioClip {
|
|||||||
}
|
}
|
||||||
clip.setMicrosecondPosition(0);
|
clip.setMicrosecondPosition(0);
|
||||||
try {
|
try {
|
||||||
Thread.sleep(SOUND_SYSTEM_DELAY);
|
Thread.sleep(SoundSystem.DELAY);
|
||||||
} catch (InterruptedException ex) {
|
} catch (InterruptedException ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ public class AudioMusic implements IAudioMusic {
|
|||||||
public AudioMusic(String filename) {
|
public AudioMusic(String filename) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void play() {
|
public void play(final Runnable onComplete) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pause() {
|
public void pause() {
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import com.badlogic.gdx.files.FileHandle;
|
|||||||
|
|
||||||
public class AudioClip implements IAudioClip {
|
public class AudioClip implements IAudioClip {
|
||||||
private Sound clip;
|
private Sound clip;
|
||||||
private final int SOUND_SYSTEM_DELAY = 30;
|
|
||||||
|
|
||||||
public static AudioClip createClip(String filename) {
|
public static AudioClip createClip(String filename) {
|
||||||
FileHandle fileHandle = Gdx.files.absolute(ForgeConstants.SOUND_DIR + filename);
|
FileHandle fileHandle = Gdx.files.absolute(ForgeConstants.SOUND_DIR + filename);
|
||||||
@@ -48,7 +47,7 @@ public class AudioClip implements IAudioClip {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
Thread.sleep(SOUND_SYSTEM_DELAY);
|
Thread.sleep(SoundSystem.DELAY);
|
||||||
}
|
}
|
||||||
catch (InterruptedException ex) {
|
catch (InterruptedException ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
@@ -61,7 +60,7 @@ public class AudioClip implements IAudioClip {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
Thread.sleep(SOUND_SYSTEM_DELAY);
|
Thread.sleep(SoundSystem.DELAY);
|
||||||
}
|
}
|
||||||
catch (InterruptedException ex) {
|
catch (InterruptedException ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package forge.sound;
|
|||||||
|
|
||||||
import com.badlogic.gdx.Gdx;
|
import com.badlogic.gdx.Gdx;
|
||||||
import com.badlogic.gdx.audio.Music;
|
import com.badlogic.gdx.audio.Music;
|
||||||
|
import com.badlogic.gdx.audio.Music.OnCompletionListener;
|
||||||
|
|
||||||
public class AudioMusic implements IAudioMusic {
|
public class AudioMusic implements IAudioMusic {
|
||||||
private Music music;
|
private Music music;
|
||||||
@@ -10,7 +11,13 @@ public class AudioMusic implements IAudioMusic {
|
|||||||
music = Gdx.audio.newMusic(Gdx.files.absolute(filename));
|
music = Gdx.audio.newMusic(Gdx.files.absolute(filename));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void play() {
|
public void play(final Runnable onComplete) {
|
||||||
|
music.setOnCompletionListener(new OnCompletionListener() {
|
||||||
|
@Override
|
||||||
|
public void onCompletion(Music music) {
|
||||||
|
onComplete.run();
|
||||||
|
}
|
||||||
|
});
|
||||||
music.play();
|
music.play();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,11 +32,12 @@ public class AudioMusic implements IAudioMusic {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void stop() {
|
public void stop() {
|
||||||
|
music.setOnCompletionListener(null); //prevent firing if stopped manually
|
||||||
music.stop();
|
music.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
music.stop();
|
stop();
|
||||||
music.dispose();
|
music.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package forge.sound;
|
package forge.sound;
|
||||||
|
|
||||||
public interface IAudioMusic {
|
public interface IAudioMusic {
|
||||||
void play();
|
void play(final Runnable onComplete);
|
||||||
void pause();
|
void pause();
|
||||||
void resume();
|
void resume();
|
||||||
void stop();
|
void stop();
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import java.util.Map;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class SoundSystem {
|
public class SoundSystem {
|
||||||
|
public static final int DELAY = 30;
|
||||||
|
|
||||||
private static final IAudioClip emptySound = new NoSoundClip();
|
private static final IAudioClip emptySound = new NoSoundClip();
|
||||||
private static final Map<SoundEffectType, IAudioClip> loadedClips = new EnumMap<SoundEffectType, IAudioClip>(SoundEffectType.class);
|
private static final Map<SoundEffectType, IAudioClip> loadedClips = new EnumMap<SoundEffectType, IAudioClip>(SoundEffectType.class);
|
||||||
@@ -181,7 +182,18 @@ public class SoundSystem {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
currentTrack = GuiBase.getInterface().createAudioMusic(filename);
|
currentTrack = GuiBase.getInterface().createAudioMusic(filename);
|
||||||
currentTrack.play();
|
currentTrack.play(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
Thread.sleep(SoundSystem.DELAY);
|
||||||
|
}
|
||||||
|
catch (InterruptedException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
changeBackgroundTrack(); //change track when music completes on its own
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
System.err.println("Unable to load music file: " + filename);
|
System.err.println("Unable to load music file: " + filename);
|
||||||
|
|||||||
Reference in New Issue
Block a user