Android Open Source - feup-lpoo-android-tower-defense Music Player






From Project

Back to project page feup-lpoo-android-tower-defense.

License

The source code is released under:

MIT License

If you think the Android project feup-lpoo-android-tower-defense listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package pt.up.fe.lpoo.towerdefense;
/*w w  w  . jav  a2s  .co m*/
import pt.up.fe.lpoo.framework.Music;

/**
 * This class serves as a handler for the application's music, allowing the themes to be easily swapped and providing
 *  fade out and fade in effects for smooth transitions between songs
 *  
 * @author Joao Marinheiro
 * @author Luis Cleto
 */
public class MusicPlayer {
  /** current theme being played */
  public static Music currentTheme = null;
  private static Music nextTheme = null;
  private static boolean changingThemes = false;
  private static boolean resettingSound = false;
  /** Volume for the background music */
  public static final float MAX_VOLUME = 0.85f;
  private static float currentVolume = 0.85f;
  /** Volume for game sounds */
  public static float SOUNDS_VOLUME = 0.5f;

  /**
   * Sets a new theme to be played next and toggles the theme transition
   * @param newTheme theme to be played
   */
  public static void changeCurrentTheme(Music newTheme){
    if(newTheme.equals(currentTheme))
      return;
    if(currentTheme != null){
      nextTheme = newTheme;
      changingThemes = true;
    }
    else{
      currentTheme = newTheme;
      currentTheme.setVolume(MAX_VOLUME);
      currentTheme.play();
    }
  }

  /**
   * Handles the theme transition to make it smooth by lowering the volume of the current theme before stopping it
   *  and increasing the volume of the new theme until it reaches the preset volume
   * @param deltaTime time elapsed since the last update
   */
  public static void update(float deltaTime){
    if(changingThemes){
      currentVolume -= deltaTime/100.0f;
      if(currentVolume <= 0){
        currentTheme.stop();
        currentTheme.setVolume(0);
        currentTheme = nextTheme;
        nextTheme = null;
        changingThemes = false;
        resettingSound = true;
        currentTheme.setVolume(0);
        currentTheme.play();
      }
      else{
        currentTheme.setVolume(currentVolume);
      }
    }
    else if(resettingSound){
      currentVolume += deltaTime/100.0f;
      if(currentVolume >= MAX_VOLUME){
        currentVolume = MAX_VOLUME;
        resettingSound = false;
      }
      currentTheme.setVolume(currentVolume);
    }
  }
}




Java Source Code List

pt.up.fe.lpoo.framework.Audio.java
pt.up.fe.lpoo.framework.FileIO.java
pt.up.fe.lpoo.framework.Game.java
pt.up.fe.lpoo.framework.Graphics.java
pt.up.fe.lpoo.framework.Image.java
pt.up.fe.lpoo.framework.Input.java
pt.up.fe.lpoo.framework.Music.java
pt.up.fe.lpoo.framework.Pool.java
pt.up.fe.lpoo.framework.Screen.java
pt.up.fe.lpoo.framework.Sound.java
pt.up.fe.lpoo.framework.implementation.AndroidAudio.java
pt.up.fe.lpoo.framework.implementation.AndroidFastRenderView.java
pt.up.fe.lpoo.framework.implementation.AndroidFileIO.java
pt.up.fe.lpoo.framework.implementation.AndroidGame.java
pt.up.fe.lpoo.framework.implementation.AndroidGraphics.java
pt.up.fe.lpoo.framework.implementation.AndroidImage.java
pt.up.fe.lpoo.framework.implementation.AndroidInput.java
pt.up.fe.lpoo.framework.implementation.AndroidMusic.java
pt.up.fe.lpoo.framework.implementation.AndroidSound.java
pt.up.fe.lpoo.framework.implementation.MultiTouchHandler.java
pt.up.fe.lpoo.framework.implementation.SingleTouchHandler.java
pt.up.fe.lpoo.framework.implementation.TouchHandler.java
pt.up.fe.lpoo.towerdefense.Animation.java
pt.up.fe.lpoo.towerdefense.Assets.java
pt.up.fe.lpoo.towerdefense.BarricadeDefense.java
pt.up.fe.lpoo.towerdefense.BoulderProjectile.java
pt.up.fe.lpoo.towerdefense.BoulderTower.java
pt.up.fe.lpoo.towerdefense.BuildingOption.java
pt.up.fe.lpoo.towerdefense.DefenseObject.java
pt.up.fe.lpoo.towerdefense.DescriptionObject.java
pt.up.fe.lpoo.towerdefense.Enemy.java
pt.up.fe.lpoo.towerdefense.FreezeTower.java
pt.up.fe.lpoo.towerdefense.GameElements.java
pt.up.fe.lpoo.towerdefense.GameObj.java
pt.up.fe.lpoo.towerdefense.Golem.java
pt.up.fe.lpoo.towerdefense.InstructionsScreen.java
pt.up.fe.lpoo.towerdefense.LevelScreen.java
pt.up.fe.lpoo.towerdefense.LevelSelectionScreen.java
pt.up.fe.lpoo.towerdefense.LoadingScreen.java
pt.up.fe.lpoo.towerdefense.MainMenuScreen.java
pt.up.fe.lpoo.towerdefense.Messages.java
pt.up.fe.lpoo.towerdefense.MusicPlayer.java
pt.up.fe.lpoo.towerdefense.PathCluster.java
pt.up.fe.lpoo.towerdefense.PoisonTower.java
pt.up.fe.lpoo.towerdefense.Projectile.java
pt.up.fe.lpoo.towerdefense.Skull.java
pt.up.fe.lpoo.towerdefense.Slime.java
pt.up.fe.lpoo.towerdefense.SplashLoadingScreen.java
pt.up.fe.lpoo.towerdefense.StatusEffect.java
pt.up.fe.lpoo.towerdefense.TarPoolDefense.java
pt.up.fe.lpoo.towerdefense.TextParser.java
pt.up.fe.lpoo.towerdefense.Tile.java
pt.up.fe.lpoo.towerdefense.TowerDefenseGame.java
pt.up.fe.lpoo.towerdefense.TurretProjectile.java
pt.up.fe.lpoo.towerdefense.TurretTower.java
pt.up.fe.lpoo.towerdefense.Wave.java