Skip to content

Commit

Permalink
Manejador de sonidos agregado, solo corre una vez el sonido, agregado…
Browse files Browse the repository at this point in the history
… LRUCache
  • Loading branch information
Luraguse committed May 6, 2013
1 parent 73ce0cd commit 3d8a62c
Show file tree
Hide file tree
Showing 13 changed files with 241 additions and 157 deletions.
24 changes: 0 additions & 24 deletions lumpundform-android/AndroidManifest.xml

This file was deleted.

Binary file not shown.
Binary file not shown.
24 changes: 0 additions & 24 deletions lumpundform-android/bin/AndroidManifest.xml

This file was deleted.

16 changes: 0 additions & 16 deletions lumpundform-html/.classpath

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,80 +1,67 @@
package com.lumpundform.audio;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.Disposable;

public class MusicManager implements Disposable {

public enum MusicaDisponible {
CASTLEVANIA("musica/castlevania.mp3"), DT("musica/dt.mp3");

private final String nombreArchivo;

private MusicaDisponible(String nombreArchivo) {
this.nombreArchivo = nombreArchivo;
}

public String getNombreArchivo() {
return nombreArchivo;
}
}

private Music musicaEnCurso;
private float volumen = 1f;
private boolean habilitado = true;

public MusicManager() {

}

public void play(MusicaDisponible musica) {
if (!habilitado)
return;

stop();

FileHandle archivoMusica = Gdx.files.internal(musica.getNombreArchivo());
musicaEnCurso = Gdx.audio.newMusic(archivoMusica);
musicaEnCurso.setVolume(volumen);
musicaEnCurso.setLooping(true);
musicaEnCurso.play();
}

public void stop() {
if (musicaEnCurso != null) {
musicaEnCurso.stop();
musicaEnCurso.dispose();
}
}

public void cambiarMusica() {
musicaEnCurso.stop();

}

public void acomodarVolumen(float volumen) {
this.volumen = volumen;

if (musicaEnCurso != null)
musicaEnCurso.setVolume(volumen);
}

public void setHabilitado(boolean habilitado) {
this.habilitado = habilitado;

if (!habilitado)
stop();
}

@Override
public void dispose() {
stop();
}

public void siguiente() {
play(MusicaDisponible.DT);
}

}
package com.lumpundform.audio;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.Disposable;

public class ManejadorDeMusica implements Disposable {

private Music musicaEnCurso;
private float volumen = 1f;
private boolean habilitado = true;

public ManejadorDeMusica() {

}

public void play(MusicaDisponible musica) {
if (!habilitado)
return;

stop();

FileHandle archivoMusica = Gdx.files
.internal(musica.getNombreArchivo());
musicaEnCurso = Gdx.audio.newMusic(archivoMusica);
musicaEnCurso.setVolume(volumen);
musicaEnCurso.setLooping(true);
musicaEnCurso.play();
}

public void stop() {
if (musicaEnCurso != null) {
musicaEnCurso.stop();
musicaEnCurso.dispose();
}
}

public void cambiarMusica() {
musicaEnCurso.stop();

}

public void acomodarVolumen(float volumen) {
this.volumen = volumen;

if (musicaEnCurso != null)
musicaEnCurso.setVolume(volumen);
}

public void setHabilitado(boolean habilitado) {
this.habilitado = habilitado;

if (!habilitado)
stop();
}

@Override
public void dispose() {
stop();
}

public void siguiente() {
play(MusicaDisponible.DT);
}

}
63 changes: 63 additions & 0 deletions lumpundform/src/com/lumpundform/audio/ManejadorDeSonido.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package com.lumpundform.audio;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.Disposable;
import com.lumpundform.audio.SonidosDisponibles;
import com.lumpundform.utilerias.LRUCache;
import com.lumpundform.utilerias.LRUCache.CacheEntryRemovedListener;

public class ManejadorDeSonido implements
CacheEntryRemovedListener<SonidosDisponibles, Sound>, Disposable {

private float volumen = 1f;
private boolean habilitado = true;

private final LRUCache<SonidosDisponibles, Sound> cacheSonido;

public ManejadorDeSonido() {
cacheSonido = new LRUCache<SonidosDisponibles, Sound>(10);
cacheSonido.setEntryRemovedListener(this);
}

public void play(SonidosDisponibles sonido) {
if (!habilitado)
return;

Sound sonidoParaReproducir = cacheSonido.get(sonido);
if (sonidoParaReproducir == null) {
FileHandle archivoDeSonido = Gdx.files.internal(sonido
.getNombreArchivo());
sonidoParaReproducir = Gdx.audio.newSound(archivoDeSonido);
cacheSonido.add(sonido, sonidoParaReproducir);
sonidoParaReproducir.play(volumen);
}
}

public void ajustarVolumen(float volumen) {
if (volumen < 0 || volumen > 1f)
throw new IllegalArgumentException(
"El volumen debe de estar entre 1 y 0.");

this.volumen = volumen;
}

public void habilitado(boolean habilitado) {
this.habilitado = habilitado;
}

@Override
public void dispose() {
for (Sound sonido : cacheSonido.retrieaveAll()) {
sonido.stop();
sonido.dispose();
}
}

@Override
public void notifyEntryRemoved(SonidosDisponibles key, Sound value) {
value.dispose();
}

}
15 changes: 15 additions & 0 deletions lumpundform/src/com/lumpundform/audio/MusicaDisponible.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.lumpundform.audio;

public enum MusicaDisponible {
CASTLEVANIA("musica/castlevania.mp3"), DT("musica/dt.mp3");

private final String nombreArchivo;

private MusicaDisponible(String nombreArchivo) {
this.nombreArchivo = nombreArchivo;
}

public String getNombreArchivo() {
return nombreArchivo;
}
}
15 changes: 15 additions & 0 deletions lumpundform/src/com/lumpundform/audio/SonidosDisponibles.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.lumpundform.audio;

public enum SonidosDisponibles {
ATAQUE("sonido/open_menu.mp3");

private final String nombreArchivo;

private SonidosDisponibles(String nombreArchivo) {
this.nombreArchivo = nombreArchivo;
}

public String getNombreArchivo() {
return nombreArchivo;
}
}
13 changes: 9 additions & 4 deletions lumpundform/src/com/lumpundform/escenario/EscenarioBase.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@
import com.lumpundform.actores.Humanoide;
import com.lumpundform.actores.ObjetoActor;
import com.lumpundform.actores.Personaje;
import com.lumpundform.audio.MusicManager;
import com.lumpundform.audio.MusicManager.MusicaDisponible;
import com.lumpundform.audio.ManejadorDeMusica;
import com.lumpundform.audio.ManejadorDeSonido;
import com.lumpundform.audio.MusicaDisponible;
import com.lumpundform.audio.SonidosDisponibles;
import com.lumpundform.colision.Linea;
import com.lumpundform.colision.Poligono;
import com.lumpundform.eventos.Escena;
Expand Down Expand Up @@ -58,7 +60,9 @@ public class EscenarioBase extends Stage {

private boolean interfazBloqueada = false;

public MusicManager mm = new MusicManager();
public ManejadorDeMusica mm = new ManejadorDeMusica();

public ManejadorDeSonido ms = new ManejadorDeSonido();

/**
* Inicializa un nuevo escenario con los datos dados. Se inicializa un nuevo
Expand All @@ -85,7 +89,8 @@ public EscenarioBase(MapaHelper mh, CamaraJuego camara, boolean stretch, SpriteB
cargarEventos(mh.eventosMapa());

// cargar música
mm.play(MusicaDisponible.CASTLEVANIA);
// mm.play(MusicaDisponible.CASTLEVANIA);
// ms.play(SonidosDisponibles.ATAQUE);

setCamera(camara);

Expand Down
Loading

0 comments on commit 3d8a62c

Please sign in to comment.