You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.5 KiB
82 lines
1.5 KiB
10 years ago
|
package mightypork.gamecore.audio.players;
|
||
10 years ago
|
|
||
10 years ago
|
|
||
10 years ago
|
import mightypork.gamecore.audio.DeferredAudio;
|
||
10 years ago
|
import mightypork.gamecore.control.interf.Destroyable;
|
||
10 years ago
|
import mightypork.utils.objects.Mutable;
|
||
|
|
||
|
|
||
10 years ago
|
public abstract class BaseAudioPlayer implements Destroyable {
|
||
10 years ago
|
|
||
10 years ago
|
/** the track */
|
||
10 years ago
|
private final DeferredAudio audio;
|
||
10 years ago
|
|
||
10 years ago
|
/** base gain for sfx */
|
||
10 years ago
|
private final double baseGain;
|
||
10 years ago
|
|
||
10 years ago
|
/** base pitch for sfx */
|
||
10 years ago
|
private final double basePitch;
|
||
10 years ago
|
|
||
10 years ago
|
/** dedicated volume control */
|
||
10 years ago
|
private final Mutable<Double> gainMultiplier;
|
||
10 years ago
|
|
||
|
|
||
10 years ago
|
public BaseAudioPlayer(DeferredAudio track, double baseGain, Mutable<Double> gainMultiplier) {
|
||
10 years ago
|
this(track, 1, baseGain, gainMultiplier);
|
||
|
}
|
||
10 years ago
|
|
||
|
|
||
10 years ago
|
public BaseAudioPlayer(DeferredAudio track, double basePitch, double baseGain, Mutable<Double> gainMultiplier) {
|
||
10 years ago
|
this.audio = track;
|
||
10 years ago
|
|
||
10 years ago
|
this.baseGain = baseGain;
|
||
|
this.basePitch = basePitch;
|
||
10 years ago
|
|
||
10 years ago
|
if (gainMultiplier == null) gainMultiplier = new Mutable<Double>(1D);
|
||
10 years ago
|
|
||
10 years ago
|
this.gainMultiplier = gainMultiplier;
|
||
|
}
|
||
10 years ago
|
|
||
|
|
||
10 years ago
|
@Override
|
||
10 years ago
|
public void destroy()
|
||
|
{
|
||
|
audio.destroy();
|
||
|
}
|
||
10 years ago
|
|
||
|
|
||
10 years ago
|
protected DeferredAudio getAudio()
|
||
10 years ago
|
{
|
||
|
return audio;
|
||
|
}
|
||
10 years ago
|
|
||
|
|
||
10 years ago
|
protected double getGain(double multiplier)
|
||
|
{
|
||
|
return baseGain * gainMultiplier.get() * multiplier;
|
||
|
}
|
||
10 years ago
|
|
||
|
|
||
10 years ago
|
protected double getPitch(double multiplier)
|
||
|
{
|
||
|
return basePitch * multiplier;
|
||
|
}
|
||
10 years ago
|
|
||
|
|
||
10 years ago
|
/**
|
||
|
* Get if audio is valid
|
||
|
*
|
||
|
* @return is valid
|
||
|
*/
|
||
10 years ago
|
protected boolean hasAudio()
|
||
10 years ago
|
{
|
||
|
return (audio != null);
|
||
|
}
|
||
10 years ago
|
|
||
|
|
||
10 years ago
|
public void load()
|
||
|
{
|
||
10 years ago
|
if (hasAudio()) audio.load();
|
||
10 years ago
|
}
|
||
|
}
|