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 {
|
||||
private Clip clip;
|
||||
private final int SOUND_SYSTEM_DELAY = 30;
|
||||
|
||||
public static boolean fileExists(String fileName) {
|
||||
File fSound = new File(ForgeConstants.SOUND_DIR, fileName);
|
||||
@@ -74,7 +73,7 @@ public class AudioClip implements IAudioClip {
|
||||
}
|
||||
clip.setMicrosecondPosition(0);
|
||||
try {
|
||||
Thread.sleep(SOUND_SYSTEM_DELAY);
|
||||
Thread.sleep(SoundSystem.DELAY);
|
||||
} catch (InterruptedException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
@@ -87,7 +86,7 @@ public class AudioClip implements IAudioClip {
|
||||
}
|
||||
clip.setMicrosecondPosition(0);
|
||||
try {
|
||||
Thread.sleep(SOUND_SYSTEM_DELAY);
|
||||
Thread.sleep(SoundSystem.DELAY);
|
||||
} catch (InterruptedException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ public class AudioMusic implements IAudioMusic {
|
||||
public AudioMusic(String filename) {
|
||||
}
|
||||
|
||||
public void play() {
|
||||
public void play(final Runnable onComplete) {
|
||||
}
|
||||
|
||||
public void pause() {
|
||||
|
||||
@@ -26,7 +26,6 @@ import com.badlogic.gdx.files.FileHandle;
|
||||
|
||||
public class AudioClip implements IAudioClip {
|
||||
private Sound clip;
|
||||
private final int SOUND_SYSTEM_DELAY = 30;
|
||||
|
||||
public static AudioClip createClip(String filename) {
|
||||
FileHandle fileHandle = Gdx.files.absolute(ForgeConstants.SOUND_DIR + filename);
|
||||
@@ -48,7 +47,7 @@ public class AudioClip implements IAudioClip {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
Thread.sleep(SOUND_SYSTEM_DELAY);
|
||||
Thread.sleep(SoundSystem.DELAY);
|
||||
}
|
||||
catch (InterruptedException ex) {
|
||||
ex.printStackTrace();
|
||||
@@ -61,7 +60,7 @@ public class AudioClip implements IAudioClip {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
Thread.sleep(SOUND_SYSTEM_DELAY);
|
||||
Thread.sleep(SoundSystem.DELAY);
|
||||
}
|
||||
catch (InterruptedException ex) {
|
||||
ex.printStackTrace();
|
||||
|
||||
@@ -2,6 +2,7 @@ package forge.sound;
|
||||
|
||||
import com.badlogic.gdx.Gdx;
|
||||
import com.badlogic.gdx.audio.Music;
|
||||
import com.badlogic.gdx.audio.Music.OnCompletionListener;
|
||||
|
||||
public class AudioMusic implements IAudioMusic {
|
||||
private Music music;
|
||||
@@ -10,7 +11,13 @@ public class AudioMusic implements IAudioMusic {
|
||||
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();
|
||||
}
|
||||
|
||||
@@ -25,11 +32,12 @@ public class AudioMusic implements IAudioMusic {
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
music.setOnCompletionListener(null); //prevent firing if stopped manually
|
||||
music.stop();
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
music.stop();
|
||||
stop();
|
||||
music.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package forge.sound;
|
||||
|
||||
public interface IAudioMusic {
|
||||
void play();
|
||||
void play(final Runnable onComplete);
|
||||
void pause();
|
||||
void resume();
|
||||
void stop();
|
||||
|
||||
@@ -18,6 +18,7 @@ import java.util.Map;
|
||||
*
|
||||
*/
|
||||
public class SoundSystem {
|
||||
public static final int DELAY = 30;
|
||||
|
||||
private static final IAudioClip emptySound = new NoSoundClip();
|
||||
private static final Map<SoundEffectType, IAudioClip> loadedClips = new EnumMap<SoundEffectType, IAudioClip>(SoundEffectType.class);
|
||||
@@ -181,7 +182,18 @@ public class SoundSystem {
|
||||
|
||||
try {
|
||||
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) {
|
||||
System.err.println("Unable to load music file: " + filename);
|
||||
|
||||
Reference in New Issue
Block a user