2022-06-19 18:54:38 +01:00
|
|
|
import javax.sound.sampled.LineUnavailableException;
|
|
|
|
import javax.sound.sampled.UnsupportedAudioFileException;
|
|
|
|
import java.io.*;
|
|
|
|
|
|
|
|
public class SoundWrapper implements Serializable {
|
|
|
|
transient public Sound sound;
|
|
|
|
public String soundString;
|
|
|
|
|
|
|
|
// please note that not as many constructors were implemented as BufferedImage, as this class was created before most sounds were added;
|
|
|
|
// as such, backwards compatibility was not needed
|
|
|
|
public SoundWrapper(String soundLocation) throws UnsupportedAudioFileException, LineUnavailableException, IOException {
|
|
|
|
sound = new Sound(soundLocation);
|
|
|
|
soundString = soundLocation;
|
|
|
|
}
|
|
|
|
|
|
|
|
public SoundWrapper() {}
|
|
|
|
|
|
|
|
@Serial
|
|
|
|
private void writeObject(ObjectOutputStream out) throws IOException {
|
|
|
|
out.writeObject(soundString);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Serial
|
|
|
|
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException, UnsupportedAudioFileException, LineUnavailableException {
|
|
|
|
Object o;
|
|
|
|
o = in.readObject();
|
|
|
|
sound = new Sound((String)o);
|
|
|
|
}
|
2022-06-19 23:10:09 +01:00
|
|
|
public static void playSound(String filePath) throws UnsupportedAudioFileException, LineUnavailableException, IOException {
|
|
|
|
Sound sound = new Sound(filePath);
|
|
|
|
if (sound == null) {
|
|
|
|
try {
|
|
|
|
sound = new Sound(filePath);
|
|
|
|
} catch (UnsupportedAudioFileException | LineUnavailableException | IOException e) {
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
sound.start();
|
|
|
|
}
|
2022-06-19 18:54:38 +01:00
|
|
|
}
|