package de.lessvoid.nifty.effects.impl; import de.lessvoid.nifty.Nifty; import de.lessvoid.nifty.effects.EffectImpl; import de.lessvoid.nifty.effects.EffectProperties; import de.lessvoid.nifty.effects.Falloff; import de.lessvoid.nifty.elements.Element; import de.lessvoid.nifty.render.NiftyRenderEngine; import de.lessvoid.nifty.spi.sound.SoundHandle; import de.lessvoid.nifty.tools.SizeValue; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.logging.Logger; /** * Fade a sound out. * * @author void */ public class FadeMusic implements EffectImpl { @Nonnull private static final Logger log = Logger.getLogger(FadeMusic.class.getName()); @Nullable private Nifty nifty; private float fromVolume; private float toVolume; @Nullable private SoundHandle music; @Override public void activate( @Nonnull final Nifty niftyParam, @Nonnull final Element element, @Nonnull final EffectProperties parameter) { nifty = niftyParam; music = nifty.getSoundSystem().getMusic(parameter.getProperty("sound")); if (music == null) { log.warning("Failed to get music for effect."); } else { fromVolume = new SizeValue(parameter.getProperty("from", "0%")).getValue(1.0f); toVolume = new SizeValue(parameter.getProperty("to", "100%")).getValue(1.0f); } } @Override public void execute( @Nonnull final Element element, final float normalizedTime, @Nullable final Falloff falloff, @Nonnull final NiftyRenderEngine r) { if (nifty == null) { log.warning("FadeMusic effect is executed before it was activated."); return; } if (music != null) { float volume = normalizedTime * (toVolume - fromVolume) + fromVolume; music.setVolume(volume); nifty.getSoundSystem().setMusicVolume(volume); } } @Override public void deactivate() { } }