Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Manejador de sonidos agregado, solo corre una vez el sonido, agregado…

… LRUCache
  • Loading branch information...
commit 3d8a62c94a4c46ccb8f963d4db2a6f2592daeb3e 1 parent 73ce0cd
@Luraguse Luraguse authored
View
24 lumpundform-android/AndroidManifest.xml
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.lumpundform.lumpundform"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk android:minSdkVersion="5" android:targetSdkVersion="16" />
-
- <application
- android:icon="@drawable/ic_launcher"
- android:label="Lumpundform" >
- <activity
- android:name=".MainActivity"
- android:label="Lumpundform"
- android:screenOrientation="landscape"
- android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-
-</manifest>
View
BIN  lumpundform-android/assets/sonido/open_menu.mp3
Binary file not shown
View
BIN  lumpundform-android/assets/sonido/zelda_secret.mp3
Binary file not shown
View
24 lumpundform-android/bin/AndroidManifest.xml
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.lumpundform.lumpundform"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk android:minSdkVersion="5" android:targetSdkVersion="16" />
-
- <application
- android:icon="@drawable/ic_launcher"
- android:label="Lumpundform" >
- <activity
- android:name=".MainActivity"
- android:label="Lumpundform"
- android:screenOrientation="landscape"
- android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
-
-</manifest>
View
16 lumpundform-html/.classpath
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" combineaccessrules="false" path="/lumpundform"/>
- <classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="lib" path="/lumpundform/libs/bodyeditor-loader.jar" sourcepath="/lumpundform/libs/bodyeditor-loader-sources.jar"/>
- <classpathentry kind="lib" path="/lumpundform/libs/bodyeditor-loader-sources.jar"/>
- <classpathentry kind="lib" path="/lumpundform/libs/gdx.jar" sourcepath="/lumpundform/libs/gdx-sources.jar"/>
- <classpathentry kind="lib" path="/lumpundform/libs/gdx-sources.jar"/>
- <classpathentry kind="lib" path="war/WEB-INF/lib/gdx-backend-gwt.jar" sourcepath="war/WEB-INF/lib/gdx-backend-gwt-sources.jar"/>
- <classpathentry kind="lib" path="war/WEB-INF/lib/gdx-backend-gwt-sources.jar"/>
- <classpathentry kind="lib" path="/lumpundform/libs/tween-engine-api.jar" sourcepath="/lumpundform/libs/tween-engine-api-sources.jar"/>
- <classpathentry kind="lib" path="/lumpundform/libs/tween-engine-api-sources.jar"/>
- <classpathentry kind="output" path="war/WEB-INF/classes"/>
-</classpath>
View
147 ...dform/src/com/lumpundform/audio/MusicManager.java → .../src/com/lumpundform/audio/ManejadorDeMusica.java
@@ -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);
+ }
+
+}
View
63 lumpundform/src/com/lumpundform/audio/ManejadorDeSonido.java
@@ -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();
+ }
+
+}
View
15 lumpundform/src/com/lumpundform/audio/MusicaDisponible.java
@@ -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;
+ }
+}
View
15 lumpundform/src/com/lumpundform/audio/SonidosDisponibles.java
@@ -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;
+ }
+}
View
13 lumpundform/src/com/lumpundform/escenario/EscenarioBase.java
@@ -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;
@@ -58,7 +60,9 @@
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
@@ -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);
View
25 lumpundform/src/com/lumpundform/escenario/EscenarioHelper.java
@@ -5,6 +5,7 @@
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.lumpundform.actores.Heroe;
import com.lumpundform.actores.ObjetoActor;
+import com.lumpundform.audio.SonidosDisponibles;
import com.lumpundform.eventos.Evento;
import com.lumpundform.excepciones.EscenarioSinHeroeException;
import com.lumpundform.interfaz.InterfazHelper;
@@ -99,17 +100,23 @@ private void moverCamara() {
float destinoCamara;
if (heroe.derecha()) {
- destinoCamara = heroe.getX() + heroe.getWidth() / 2 + camara.viewportWidth / 6;
+ destinoCamara = heroe.getX() + heroe.getWidth() / 2
+ + camara.viewportWidth / 6;
if (camara.position.x < destinoCamara) {
- camara.setPosicion((float) (camara.position.x + heroe.velDelta() * factor), camara.position.y);
+ camara.setPosicion(
+ (float) (camara.position.x + heroe.velDelta()
+ * factor), camara.position.y);
}
if (camara.position.x >= destinoCamara) {
camara.setPosicion(destinoCamara, camara.position.y);
}
} else {
- destinoCamara = heroe.getX() + heroe.getWidth() / 2 - camara.viewportWidth / 6;
+ destinoCamara = heroe.getX() + heroe.getWidth() / 2
+ - camara.viewportWidth / 6;
if (camara.position.x > destinoCamara) {
- camara.setPosicion((float) (camara.position.x - heroe.velDelta() * factor), camara.position.y);
+ camara.setPosicion(
+ (float) (camara.position.x - heroe.velDelta()
+ * factor), camara.position.y);
}
if (camara.position.x <= destinoCamara) {
camara.setPosicion(destinoCamara, camara.position.y);
@@ -118,8 +125,10 @@ private void moverCamara() {
if (camara.getPosicionOrigen().x < 0)
camara.setPosicionOrigen(0, camara.getPosicionOrigen().y);
- if (camara.getPosicionOrigen().x + camara.viewportWidth > mh.getWidth())
- camara.setPosicionOrigen(mh.getWidth() - camara.viewportWidth, camara.getPosicionOrigen().y);
+ if (camara.getPosicionOrigen().x + camara.viewportWidth > mh
+ .getWidth())
+ camara.setPosicionOrigen(mh.getWidth() - camara.viewportWidth,
+ camara.getPosicionOrigen().y);
} catch (EscenarioSinHeroeException e) {
}
}
@@ -191,4 +200,8 @@ public void setInterfazBloqueada(boolean estado) {
public void siguienteCancion() {
this.escenario.mm.siguiente();
}
+
+ public void sonidoAtacar() {
+ escenario.ms.play(SonidosDisponibles.ATAQUE);
+ }
}
View
10 lumpundform/src/com/lumpundform/input/ProcesadorEntradaJuego.java
@@ -63,7 +63,8 @@ public boolean zoom(float originalDistance, float currentDistance) {
}
@Override
- public boolean pinch(Vector2 initialFirstPointer, Vector2 initialSecondPointer, Vector2 firstPointer,
+ public boolean pinch(Vector2 initialFirstPointer,
+ Vector2 initialSecondPointer, Vector2 firstPointer,
Vector2 secondPointer) {
return false;
}
@@ -78,6 +79,7 @@ public boolean keyDown(int keycode) {
/* Disparar */
if (keycode == Keys.SPACE) {
heroe.habilidad("disparar");
+ escenario.sonidoAtacar();
return true;
}
/* Usar escudo */
@@ -124,7 +126,8 @@ public boolean keyDown(int keycode) {
}
/* Usar habilidades de interfaz */
if (keycode >= Keys.NUM_1 && keycode <= Keys.NUM_6) {
- escenario.getInterfazHelper().ejecutarHabilidad(U.numeroConKeycode(keycode));
+ escenario.getInterfazHelper().ejecutarHabilidad(
+ U.numeroConKeycode(keycode));
}
/* Toggle líneas de colisión */
if (keycode == Keys.BACKSPACE) {
@@ -142,7 +145,8 @@ public boolean keyDown(int keycode) {
public boolean keyUp(int keycode) {
try {
Heroe heroe = escenario.getHeroe();
- if ((keycode == Keys.A && heroe.getMovimiento() == -1) || (keycode == Keys.D && heroe.getMovimiento() == 1)) {
+ if ((keycode == Keys.A && heroe.getMovimiento() == -1)
+ || (keycode == Keys.D && heroe.getMovimiento() == 1)) {
heroe.setMovimiento(0);
return true;
}
View
46 lumpundform/src/com/lumpundform/utilerias/LRUCache.java
@@ -0,0 +1,46 @@
+package com.lumpundform.utilerias;
+
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class LRUCache<K, V> {
+ public interface CacheEntryRemovedListener<K, V> {
+ void notifyEntryRemoved(K key, V value);
+ }
+
+ private Map<K, V> cache;
+ private CacheEntryRemovedListener<K, V> entryRemovedListener;
+
+ public LRUCache(final int maxEntries) {
+ cache = new LinkedHashMap<K, V>(maxEntries + 1, .75f, true) {
+ public boolean removeEldestEntry(Map.Entry<K, V> eldest) {
+ if (size() > maxEntries) {
+ if (entryRemovedListener != null) {
+ entryRemovedListener.notifyEntryRemoved(
+ eldest.getKey(), eldest.getValue());
+ }
+ return true;
+ }
+ return false;
+ }
+ };
+ }
+
+ public void add(K key, V value) {
+ cache.put(key, value);
+ }
+
+ public V get(K key) {
+ return cache.get(key);
+ }
+
+ public Collection<V> retrieaveAll() {
+ return cache.values();
+ }
+
+ public void setEntryRemovedListener(
+ CacheEntryRemovedListener<K, V> entryRemovedListener) {
+ this.entryRemovedListener = entryRemovedListener;
+ }
+}
Please sign in to comment.
Something went wrong with that request. Please try again.