public class Arbol extends ObjetoDelJuego { 
	
	public Arbol(AdventuresOfManuel adventures, Vector2 posicion) {
		super(adventures, posicion);
		Textura = adventures.getManager().get("Miscelanea/Arbol.png", Texture.class);
	}
	
	@Override
	public void draw(SpriteBatch batch) {
		batch.draw(Textura, posicion.x, posicion.y, bordes.height, bordes.width);
	}
	
	@Override
	public void update() {}
	
	// Getters and Setters ------------------------------------------------------------------------

} public class Bloque extends PersonajeDelJuegoEnemigo {
	
	public Bloque(AdventuresOfManuel adventures, Vector2 posicion, Manuel manuel){
		super(adventures, posicion, manuel);
		Textura = adventures.getManager().get("Enemigos/bloque.png", Texture.class);
		esBola = true;
	}
	
	@Override
	public void draw(SpriteBatch batch) {
		batch.draw(Textura, posicion.x, posicion.y, bordes.height, bordes.width);
	}

	@Override
	public void update() {
		// TODO Auto-generated method stub
	}

	@Override
	public void activarAtaque() {
		// TODO Auto-generated method stub
	}
} public class Cofre extends ObjetoDelJuego{
	private static final int CERRADO = 0;
	private static final int ABIERTO = 1;
	private static final int VACIO = 2;
	private int corazonesNecesarios;

	private TextureRegion [] cofreVectorFrames;
	private TextureRegion frameActual;
	
	public Cofre(AdventuresOfManuel adventures, Vector2 posicion, int corazonesNecesarios){
		super(adventures, posicion);
		this.corazonesNecesarios = corazonesNecesarios;
		Textura = adventures.getManager().get("Miscelanea/Cofre.png", Texture.class);
		
		cofreVectorFrames = new TextureRegion[3];
		cofreVectorFrames[0] = new TextureRegion(Textura, 0, 0, Constant.ANCHURA_OBJETO, Constant.ALTURA_OBJETO);
		cofreVectorFrames[1] = new TextureRegion(Textura, Constant.ANCHURA_OBJETO, 0, Constant.ANCHURA_OBJETO, Constant.ALTURA_OBJETO);
		cofreVectorFrames[2] = new TextureRegion(Textura, Constant.ANCHURA_OBJETO * 2, 0, Constant.ANCHURA_OBJETO, Constant.ALTURA_OBJETO);
		frameActual = cofreVectorFrames[CERRADO];
	}
	
	@Override
	public void draw(SpriteBatch batch) {
		batch.draw(frameActual, posicion.x, posicion.y, bordes.height, bordes.width);
	}
	
	@Override
	public void update() {
		
	}
	
	// Getters and Setters ------------------------------------------------------------------------
	
	public int getCorazonesNecesarios(){
		return corazonesNecesarios;
	}
	
	public void abrirCofre(){
		frameActual = cofreVectorFrames[ABIERTO];
	}
	
	public void cogerGema(){
		frameActual = cofreVectorFrames[VACIO];
	}
} public class Corazon extends ObjetoDelJuego
{
	private boolean mostrar = true;
	private int proyectilesOtorga;
	
	public Corazon(AdventuresOfManuel adventures, Vector2 posicion, int proyectilesOtorga)
	{
		super(adventures, posicion);
		this.proyectilesOtorga = proyectilesOtorga;
		Textura = adventures.getManager().get("Miscelanea/Corazon.png", Texture.class);
	}
	
	@Override
	public void draw(SpriteBatch batch) {
		batch.draw(Textura, posicion.x, posicion.y, bordes.height, bordes.width);
	}
	
	@Override
	public void update() {
	}
	
	// Getters and Setters ------------------------------------------------------------------------
	
	public int getProyectilesOtorga(){
		return proyectilesOtorga;
	}
	
	public boolean getEstado(){
		return mostrar;
	}
	
	public void setEstado(){
		mostrar = false;
	}
} public class Leeper extends PersonajeDelJuegoEnemigo {
	public static final int ABAJO = 0;
	public static final int IZQUIERDA = 1;
	public static final int DERECHA = 2;
	public static final int ARRIBA = 3;
	private boolean dormido;
	private int tiempoParaDormir;
	
	//Atributos para pintar
	private TextureRegion [][] leeperMatrizFrames;
	private Animation leeperAnimationAbajoDespierto, leeperAnimationArribaDespierto, leeperAnimationDerechaDespierto, leeperAnimationIzquierdaDespierto;
	private Animation leeperAnimationAbajoDormido, leeperAnimationArribaDormido, leeperAnimationDerechaDormido, leeperAnimationIzquierdaDormido;
	
	public Leeper(AdventuresOfManuel adventures, Vector2 posicion, Manuel manuel, int direccion) {
		super(adventures, posicion, manuel);
		dormido = false;
		ataqueActivado = true;
		this.direccion = direccion;
		
		Textura = adventures.getManager().get("Enemigos/TablaBichoVerde.png", Texture.class);
		
		leeperMatrizFrames = new TextureRegion[8][2];
		leeperMatrizFrames[ABAJO][0] = new TextureRegion(Textura, 0, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
		leeperMatrizFrames[ABAJO][1] = new TextureRegion(Textura, 58, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
		leeperMatrizFrames[ABAJO+4][0] = new TextureRegion(Textura, 0, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
		leeperMatrizFrames[ABAJO+4][1] = new TextureRegion(Textura, 58, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);

		leeperMatrizFrames[IZQUIERDA][0] = new TextureRegion(Textura, 116, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
		leeperMatrizFrames[IZQUIERDA][1] = new TextureRegion(Textura, 174, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
		leeperMatrizFrames[IZQUIERDA+4][0] = new TextureRegion(Textura, 116, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
		leeperMatrizFrames[IZQUIERDA+4][1] = new TextureRegion(Textura, 174, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);

		leeperMatrizFrames[DERECHA][0] = new TextureRegion(Textura, 232, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
		leeperMatrizFrames[DERECHA][1] = new TextureRegion(Textura, 290, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
		leeperMatrizFrames[DERECHA+4][0] = new TextureRegion(Textura, 232, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
		leeperMatrizFrames[DERECHA+4][1] = new TextureRegion(Textura, 290, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);

		leeperMatrizFrames[ARRIBA][0] = new TextureRegion(Textura, 348, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
		leeperMatrizFrames[ARRIBA][1] = new TextureRegion(Textura, 406, 0, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
		leeperMatrizFrames[ARRIBA+4][0] = new TextureRegion(Textura, 348, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);
		leeperMatrizFrames[ARRIBA+4][1] = new TextureRegion(Textura, 406, 58, Constant.ANCHURA_PERSONAJE, Constant.ALTURA_PERSONAJE);

		leeperAnimationAbajoDespierto = new Animation(0.05f, leeperMatrizFrames[ABAJO]);
		leeperAnimationArribaDespierto = new Animation(0.05f, leeperMatrizFrames[ARRIBA]);
		leeperAnimationIzquierdaDespierto = new Animation(0.05f, leeperMatrizFrames[IZQUIERDA]);
		leeperAnimationDerechaDespierto = new Animation(0.05f, leeperMatrizFrames[DERECHA]);
		leeperAnimationAbajoDormido = new Animation(0.05f, leeperMatrizFrames[ABAJO+4]);
		leeperAnimationArribaDormido = new Animation(0.05f, leeperMatrizFrames[ARRIBA+4]);
		leeperAnimationIzquierdaDormido = new Animation(0.05f, leeperMatrizFrames[IZQUIERDA+4]);
		leeperAnimationDerechaDormido = new Animation(0.05f, leeperMatrizFrames[DERECHA+4]);
		
		frameActual = leeperMatrizFrames[direccion][0];
	}
	
	public void activarAtaque() {
	}
	
	@Override
	public void update() {
		boolean colisionDerecha = colisiones.colisionDerechaObjeto(this) || colisiones.colisionDerechaEnemigo(this) || colisiones.colisionMovibleDerecha(this);
		boolean colisionIzquierda = colisiones.colisionIzquierdaObjeto(this) || colisiones.colisionIzquierdaEnemigo(this) || colisiones.colisionMovibleIzquierda(this);
		boolean colisionArriba = colisiones.colisionArribaObjeto(this) || colisiones.colisionArribaEnemigo(this) || colisiones.colisionMovibleArriba(this);
		boolean colisionAbajo = colisiones.colisionAbajoObjeto(this) || colisiones.colisionAbajoEnemigo(this) || colisiones.colisionMovibleAbajo(this);
		boolean colisionManuel = colisiones.colisionAbajoConManuel(this) || colisiones.colisionArribaConManuel(this) || colisiones.colisionDerechaConManuel(this) || colisiones.colisionIzquierdaConManuel(this);
		
		if(dormido == false && !colisionManuel){
			if(direccion == ARRIBA){
				if(!colisionArriba) {
					if(tiempoParaMovimiento == 0){
						posicion.y = (float) (posicion.y + Constant.SPEED);
						stateTime = stateTime + Gdx.graphics.getDeltaTime();
						frameActual = leeperAnimationArribaDespierto.getKeyFrame(stateTime, true);
						tiempoParaMovimiento = Constant.TIEMPO_MOVIMIENTO_LEEPER;
					}
				}
				else{
					if(!colisionDerecha)
						direccion = DERECHA;
					else if(!colisionIzquierda)
						direccion = IZQUIERDA;
					else
						direccion = ABAJO;
				}
			}
			else if(direccion == IZQUIERDA){
				if(!colisionIzquierda){
					if(tiempoParaMovimiento == 0){
						posicion.x = (float) (posicion.x - Constant.SPEED);
						stateTime = stateTime + Gdx.graphics.getDeltaTime();
						frameActual = leeperAnimationIzquierdaDespierto.getKeyFrame(stateTime, true);
						tiempoParaMovimiento = Constant.TIEMPO_MOVIMIENTO_LEEPER;
					}
				}
				else{
					if(!colisionAbajo)
						direccion = ABAJO;
					else if(!colisionArriba)
						direccion = ARRIBA;
					else
						direccion = DERECHA;
				}
			}
			else if(direccion == DERECHA){
				if(!colisionDerecha) {
					if(tiempoParaMovimiento == 0){
						posicion.x = (float) (posicion.x + Constant.SPEED);
						stateTime = stateTime + Gdx.graphics.getDeltaTime();
						frameActual = leeperAnimationDerechaDespierto.getKeyFrame(stateTime, true);
						tiempoParaMovimiento = Constant.TIEMPO_MOVIMIENTO_LEEPER;
					}
				}
				else{
					if(!colisionAbajo)
						direccion = ABAJO;
					else if(!colisionArriba)
						direccion = ARRIBA;
					else
						direccion = IZQUIERDA;
				}
			}
			else {
				if(!colisionAbajo) {
					if(tiempoParaMovimiento == 0){
						posicion.y = (float) (posicion.y - Constant.SPEED);
						stateTime = stateTime + Gdx.graphics.getDeltaTime();
						frameActual = leeperAnimationAbajoDespierto.getKeyFrame(stateTime, true);
						tiempoParaMovimiento = Constant.TIEMPO_MOVIMIENTO_LEEPER;
					}
				}
				else{
					if(!colisionDerecha)
						direccion = DERECHA;
					else if(!colisionIzquierda)
						direccion = IZQUIERDA;
					else
						direccion = ARRIBA;
				}
			}
		}
		else { //leeper esta dormido
			dormido = true;
			
			if(tiempoParaDormir == 0){
				stateTime = stateTime + Gdx.graphics.getDeltaTime();
				if(direccion == ARRIBA)
					frameActual = leeperAnimationArribaDormido.getKeyFrame(stateTime, true);
				else if(direccion == ABAJO)
					frameActual = leeperAnimationAbajoDormido.getKeyFrame(stateTime, true);
				else if(direccion == IZQUIERDA)
					frameActual = leeperAnimationIzquierdaDormido.getKeyFrame(stateTime, true);
				else
					frameActual = leeperAnimationDerechaDormido.getKeyFrame(stateTime, true);
				tiempoParaDormir = Constant.TIEMPO_DORMIDO;
			}
			if(tiempoParaDormir > 0)
				tiempoParaDormir--;
		}
		
		if(tiempoParaMovimiento > 0)
			tiempoParaMovimiento--;
		super.update();
	}
	
	@Override
	public void draw(SpriteBatch batch) {
		super.draw(batch);
	}
	
	// Getters and Setters -----------------------------------------------------------------------
} public class Pared extends ObjetoDelJuego {
	
	public Pared(AdventuresOfManuel adventures, Vector2 posicion, int anchura, int altura) {
		super(adventures, posicion);
		bordes = new Rectangle(posicion.x, posicion.y, anchura, altura);
	}

	@Override
	public void draw(SpriteBatch batch) {}

	@Override
	public void update() {}	
} public class Roca extends ObjetoDelJuego { 
	
	public Roca(AdventuresOfManuel adventures, Vector2 posicion) {
		super(adventures, posicion);
		Textura = adventures.getManager().get("Miscelanea/Roca.png", Texture.class);
	}
	
	@Override
	public void draw(SpriteBatch batch) {
		batch.draw(Textura, posicion.x, posicion.y, bordes.height, bordes.width);
	}
	
	@Override
	public void update() {}
	
	// Getters and Setters ------------------------------------------------------------------------
	
} public class Salida extends ObjetoDelJuego{
	private int estado;
	private int tipo;
	private int indice;
	
	private TextureRegion frameActual;
	
	public Salida(AdventuresOfManuel adventures, Vector2 posicion, int tipo, int indice){
		super(adventures, posicion);
		bordes = new Rectangle(posicion.x, posicion.y, 58, 174);
		this.tipo = tipo;
		this.indice = indice;
		this.estado = 0;
		if(this.tipo == Constant.PUERTA)
			Textura = adventures.getManager().get("Miscelanea/TablaPuerta.png", Texture.class);
		else
			Textura = adventures.getManager().get("Miscelanea/TablaPuerta.png", Texture.class); //--------- CAMBIAR A ESCALERA
		
		frameActual = new TextureRegion(Textura, 0, 0, 174, 58);
	}
	
	public void abrirSalida(){
		estado = 1;
		if(tipo == Constant.PUERTA)
			frameActual = new TextureRegion(Textura, 0, 58, 174, 58);
	}
	
	public int coordenadaPared(){
		return indice;
	}
	
	public boolean salidaAbierta(){
		if(estado == 0) //cerrada
			return false;
		else
			return true;
	}
	
	@Override
	public void draw(SpriteBatch batch) {
		if(tipo == Constant.PUERTA || (tipo == Constant.ESCALERA && estado == 1))
		batch.draw(frameActual, posicion.x, posicion.y, bordes.height, bordes.width);
	}
	
	@Override
	public void update() {
		
	}
	
	// Getters and Setters ------------------------------------------------------------------------
	
	@Override
	public Vector2 getPosicion() {
		return posicion;
	}

	public int getTipo() {
		return tipo;
	}
}
 public class AdventuresOfManuel extends Game {
	public AbstractScreen LOADING, START, MAIN, WIN, GAMEOVER, PAUSE;
	public AbstractScreen NIVEL1, NIVEL2, NIVEL3, NIVEL4, NIVEL5, NIVEL6, NIVEL7, NIVEL8, NIVEL9, NIVEL10;
	private Music musicaMenu, musicaNivel;
	private AssetManager manager;
	private SpriteBatch batch;
	private OrthographicCamera camera;
	private Preferences preferencias;
	private boolean sonidoActivado;
	private boolean musicaActivada;
	private float div;
	//private float divMenus;
	//private float divNivel;
	private int nivelActual;
	private boolean tipoJuegoMustDie;
	
	@Override
	public void create() {
        Gdx.input.setCatchBackKey(true);
		nivelActual = 1;
		manager = new AssetManager();
		batch = new SpriteBatch();
		camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
		preferencias = Gdx.app.getPreferences("-_PreferencesManuel-JMDCG-PINF-_");
		sonidoActivado = preferencias.getBoolean("Sonido", true);
		musicaActivada = preferencias.getBoolean("Musica", true);
		
		// Cargamos todos los elementos externos que usará el juego, como son las texturas y los sonidos.
		manager.load("Pantallas/Loading.png", Texture.class);
		manager.load("Pantallas/FondoMenu.png", Texture.class);
		manager.load("Pantallas/Start.png", Texture.class);
		manager.load("Pantallas/NextLevel.png", Texture.class);
		manager.load("Manolito/TablaSpritesManolitoTransparencia.png", Texture.class);
		manager.load("Enemigos/bloque.png", Texture.class);
		manager.load("Enemigos/TablaCalaveraFinal.png", Texture.class);
		manager.load("Enemigos/TablaDragon.png", Texture.class);
		manager.load("Enemigos/TablaBichoVerde.png", Texture.class);
		manager.load("Enemigos/TablaMedusa.png", Texture.class);
		manager.load("Enemigos/TablaSerpiente.png", Texture.class);
		manager.load("Enemigos/TablaFantasma.png", Texture.class);
		manager.load("Miscelanea/Arbol.png", Texture.class);
		manager.load("Miscelanea/Bordes.png", Texture.class);
		manager.load("Miscelanea/Cofre.png", Texture.class);
		manager.load("Miscelanea/Corazon.png", Texture.class);
		manager.load("Miscelanea/Ganar.png", Texture.class);
		manager.load("Miscelanea/Huevo.png", Texture.class);
		manager.load("Miscelanea/Murallas.png", Texture.class);
		manager.load("Miscelanea/Nivel.png", Texture.class);
		manager.load("Miscelanea/ProyectilManolito.png", Texture.class);
		manager.load("Miscelanea/ProyectilMedusa.png", Texture.class);
		manager.load("Miscelanea/Roca.png", Texture.class);
		manager.load("Miscelanea/Suelo.png", Texture.class);
		manager.load("Miscelanea/TablaAgua.png", Texture.class);
		manager.load("Miscelanea/TablaPuente.png", Texture.class);
		manager.load("Miscelanea/TablaPuerta.png", Texture.class);
		manager.load("Pantallas/1.png", Texture.class);
		manager.load("Pantallas/2.png", Texture.class);
		manager.load("Pantallas/3.png", Texture.class);
		manager.load("Pantallas/4.png", Texture.class);
		manager.load("Pantallas/5.png", Texture.class);
		manager.load("Pantallas/6.png", Texture.class);
		manager.load("Pantallas/7.png", Texture.class);
		manager.load("Pantallas/8.png", Texture.class);
		manager.load("Pantallas/9.png", Texture.class);
		manager.load("Pantallas/10.png", Texture.class);
		manager.load("Pantallas/BotonSFX.png", Texture.class);
		manager.load("Pantallas/BotonNoSFX.png", Texture.class);
		manager.load("Pantallas/BotonMusica.png", Texture.class);
		manager.load("Pantallas/BotonNoMusica.png", Texture.class);
		manager.load("Pantallas/BotonContinuar.png", Texture.class);
		manager.load("Pantallas/BotonMenu.png", Texture.class);
		manager.load("Pantallas/BotonSalir.png", Texture.class);
		manager.load("Pantallas/BotonNoTransparente.png", Texture.class);
		manager.load("Pantallas/BotonT.png", Texture.class);
		manager.load("Pantallas/BotonSiguienteNivel.png", Texture.class);
		manager.load("Pantallas/GameOver.png", Texture.class);
		manager.load("Pantallas/Pausa.png", Texture.class);
		manager.load("Pantallas/Start.png", Texture.class);
		manager.load("Pantallas/BotonReintentar.png", Texture.class);
		manager.load("Pantallas/BotonSiguienteNivel.png", Texture.class);
		manager.load("Musica/Button.mp3", Sound.class);
		manager.load("Musica/DisparoDragon.mp3", Sound.class);
		manager.load("Musica/DisparoManolito.mp3", Sound.class);
		manager.load("Musica/Ganar.mp3", Sound.class);
		manager.load("Musica/Perder.mp3", Sound.class);
		manager.load("Musica/MenuInicial.mp3", Music.class);
		manager.load("Musica/Niveles.mp3", Music.class);
		
		LOADING = new LoadingScreen(this); // Necesario
		setScreen(LOADING);
	}
	
	public void crearNiveles() {
		// Pantallas del juego
		START = new StartScreen(this);
		MAIN = new MainScreen(this);
		WIN = new WinScreen(this);
		GAMEOVER = new GameOverScreen(this);
		PAUSE = new PauseScreen(this);
		iniciarNiveles();
		
		//Musica
		musicaMenu = manager.get("Musica/MenuInicial.mp3", Music.class);
		musicaNivel = manager.get("Musica/Niveles.mp3", Music.class);
	}
	
	public void iniciarNiveles(){
		NIVEL1 = new Nivel1(this, new Vector2(193, 464));
		NIVEL2 = new Nivel2(this, new Vector2(425, 116));
		NIVEL3 = new Nivel3(this, new Vector2(541, 174));
		NIVEL4 = new Nivel4(this, new Vector2(483, 58));
		NIVEL5 = new Nivel5(this, new Vector2(483, 58));
		NIVEL6 = new Nivel6(this, new Vector2(193, 232));
		NIVEL7 = new Nivel7(this, new Vector2(773, 58));
		NIVEL8 = new Nivel8(this, new Vector2(657, 522));
		NIVEL9 = new Nivel9(this, new Vector2(715, 58));
		NIVEL10 = new Nivel10(this, new Vector2(773, 348));
	}
	
	public void destruirNiveles() {
		MAIN = new MainScreen(this);
		NIVEL1 = new Nivel1(this, new Vector2(193, 464));
		NIVEL2 = new Nivel2(this, new Vector2(425, 116));
		NIVEL3 = new Nivel3(this, new Vector2(541, 174));
		NIVEL4 = new Nivel4(this, new Vector2(483, 58));
		NIVEL5 = new Nivel5(this, new Vector2(483, 58));
		NIVEL6 = new Nivel6(this, new Vector2(193, 232));
		NIVEL7 = new Nivel7(this, new Vector2(773, 58));
		NIVEL8 = new Nivel8(this, new Vector2(657, 522));
		NIVEL9 = new Nivel9(this, new Vector2(715, 58));
		NIVEL10 = new Nivel10(this, new Vector2(773, 348));		
	}
	
	public SpriteBatch getBatch() {
		return batch;
	}
	public AssetManager getManager() {
		return manager;
	}
	public OrthographicCamera getCamera() {
		return camera;
	}
	public Preferences getPreferencias() {
		return preferencias;
	}
	public Music getMusicaMenu() {
		return musicaMenu;
	}
	public Music getMusicaNivel() {
		return musicaNivel;
	}
	public boolean isSonidoActivado() {
		return sonidoActivado;
	}
	public void pressSonido() {
		if(sonidoActivado)
			sonidoActivado = false;
		else
			sonidoActivado = true;
	}
	public boolean isMusicaActivada() {
		return musicaActivada;
	}
	public void pressMusica() {
		if(musicaActivada)
			musicaActivada = false;
		else
			musicaActivada = true;
	}
	public float getDiv() {
		return div;
	}
	public void setDiv(float div) {
		this.div = div;
	}
	/*public float getDivMenu() {
		return divMenus;
	}
	public void setDivMenu(float div) {
		this.divMenus = div;
	}
	public float getDivNivel() {
		return divMenus;
	}
	public void setDivNivel(float div) {
		this.divMenus = div;
	}*/

	@Override
	public void dispose() {
		super.dispose();
		preferencias.putBoolean("Sonido", sonidoActivado);
		preferencias.putBoolean("Musica", musicaActivada);
		preferencias.flush();
		manager.dispose();
		batch.dispose();
	}

	@Override
	public void render() {		
		super.render();
	}

	@Override
	public void resize(int width, int height) {
		super.resize(width, height);
	}

	@Override
	public void pause() {
		super.pause();
	}

	@Override
	public void resume() {
		super.resume();
	}
	
	public void setTipoJuegoMustDie(boolean tipo){
		tipoJuegoMustDie = tipo;
	}
	
	public boolean getTipoJuegoMustDie(){
		return tipoJuegoMustDie;
	}
	
	public void siguienteNivel(){
		nivelActual++;
	}
	
	public void pasarSiguienteNivel(){
		nivelActual++;
		if(nivelActual == 1)
			setScreen(NIVEL1);
		else if(nivelActual == 2)
			setScreen(NIVEL2);
		else if(nivelActual == 3)
			setScreen(NIVEL3);
		else if(nivelActual == 4)
			setScreen(NIVEL4);
		else if(nivelActual == 5)
			setScreen(NIVEL5);
		else if(nivelActual == 6)
			setScreen(NIVEL6);
		else if(nivelActual == 7)
			setScreen(NIVEL7);
		else if(nivelActual == 8)
			setScreen(NIVEL8);
		else if(nivelActual == 9)
			setScreen(NIVEL9);
		else if(nivelActual == 10)
			setScreen(NIVEL10);
	}	
	
	public int getNivelActual(){
		return nivelActual;
	}
	
	public void gameOver(){
		setScreen(GAMEOVER);
	}
	
	public void reintentarNivel(){
		if(nivelActual == 1){
			NIVEL1 = new Nivel1(this, new Vector2(193, 464));
			setScreen(NIVEL1);
		}
		else if(nivelActual == 2){
			NIVEL2 = new Nivel2(this, new Vector2(425, 116));
			setScreen(NIVEL2);
		}
		else if(nivelActual == 3){
			NIVEL3 = new Nivel3(this, new Vector2(541, 174));
			setScreen(NIVEL3);
		}
		else if(nivelActual == 4){
			NIVEL4 = new Nivel4(this, new Vector2(483, 58));
			setScreen(NIVEL4);
		}
		else if(nivelActual == 5){
			NIVEL5 = new Nivel5(this, new Vector2(483, 58));
			setScreen(NIVEL5);
		}
		else if(nivelActual == 6){
			NIVEL6 = new Nivel6(this, new Vector2(193, 232));
			setScreen(NIVEL6);
		}
		else if(nivelActual == 7){
			NIVEL7 = new Nivel7(this, new Vector2(773, 58));
			setScreen(NIVEL7);
		}
		else if(nivelActual == 8){
			NIVEL8 = new Nivel8(this, new Vector2(657, 522));
			setScreen(NIVEL8);
		}
		else if(nivelActual == 9){
			NIVEL9 = new Nivel9(this, new Vector2(715, 58));
			setScreen(NIVEL9);
		}
		else if(nivelActual == 10){
			NIVEL10 = new Nivel10(this, new Vector2(773, 348));	
			setScreen(NIVEL10);
		}
	}
	
	public void continuarNivel(){
		if(nivelActual == 1){
			setScreen(NIVEL1);
		}
		else if(nivelActual == 2){
			setScreen(NIVEL2);
		}
		else if(nivelActual == 3){
			setScreen(NIVEL3);
		}
		else if(nivelActual == 4){
			setScreen(NIVEL4);
		}
		else if(nivelActual == 5){
			setScreen(NIVEL5);
		}
		else if(nivelActual == 6){
			setScreen(NIVEL6);
		}
		else if(nivelActual == 7){
			setScreen(NIVEL7);
		}
		else if(nivelActual == 8){
			setScreen(NIVEL8);
		}
		else if(nivelActual == 9){
			setScreen(NIVEL9);
		}
		else if(nivelActual == 10){
			setScreen(NIVEL10);
		}
	}
	
	public void iniciarMustDie(){
		tipoJuegoMustDie = true;
		nivelActual = 1;
		reintentarNivel();
	}
	
	public void setNivel(int nivel){
		nivelActual = nivel;
		reintentarNivel();
	}
	
	public void pruebaSuperada(){
		setScreen(new EnemyTest(this, new Vector2(541,348)));
	}
	
	public void pruebasFinalizadas(){
		setScreen(new PruebaSuperada(this));
	}
}
 public final class Constant {
	private static final Constant constantes = new Constant();
	public static final double SPEED = 3.625; //29; //220; //58
	public static final float BOLA_SPEED = 10;
	public static final int TIEMPO_AGUA = 10;
	public static final int TIEMPO_BOLA = 800;
	public static final int TIEMPO_BOLA_CAMBIO = 400;
	public static final int TIEMPO_PROYECTIL = 50;
	public static final int TIEMPO_DESAPARECIDO = 800;
	public static final int TIEMPO_MOVIMIENTO_LEEPER = 2;
	public static final int TIEMPO_MOVIMIENTO_CALAVERA = 1;
	public static final int TIEMPO_MOVIMIENTO_FANTASMA = 4;
	public static final int TIEMPO_DORMIDO = 20;
    public static final int ANCHURA_PERSONAJE = 58, ANCHURA_OBJETO = 58;
    public static final int ALTURA_PERSONAJE = 58, ALTURA_OBJETO = 58;
    public static final int ANCHURA_PANTALLA = 1024, ALTURA_PANTALLA = 754;
    public static final int ANCHURA_ESCENARIO = 754, ALTURA_ESCENARIO = 754;
    public static final int PUENTE_VERTICAL = 0, PUENTE_HORIZONTAL = 1;
    public static final int PUERTA = 0, ESCALERA = 1;
    public static final int TIEMPO_BOTON = 50;
    		
	public static Constant getConstant() {
		return constantes;
	}
}
import com.badlogic.gdx.math.Vector2;
import com.me.adventures.characters.Arbol;
import com.me.adventures.characters.Bloque;
import com.me.adventures.characters.Cofre;
import com.me.adventures.characters.Corazon;
import com.me.adventures.characters.Leeper;
import com.me.adventures.characters.Pared;
import com.me.adventures.characters.Roca;
import com.me.adventures.characters.Salida;
import com.me.adventures.main.AdventuresOfManuel;
import com.me.adventures.main.Constant;

package com.me.adventures.screens;


public class Nivel7 extends Nivel{
	public Nivel7(AdventuresOfManuel adventures, Vector2 posicionManuel) {
		super(adventures, posicionManuel);
	}
	
	@Override
	protected void mapaDelNivel() {
	}
	
	@Override
	protected void objetosDelNivel() {
		//Se introducen las paredes del nivel
		objetos.add(new Pared(adventures, new Vector2(0, 0), 1024, 58));
		objetos.add(new Pared(adventures, new Vector2(135, 0), 58, 754));
		objetos.add(new Pared(adventures, new Vector2(135, 696), 348, 58));
		objetos.add(new Pared(adventures, new Vector2(483, 725), 58, 29));
		
		objetos.add(new Pared(adventures, new Vector2(483, 696), 58, 29));//
		salida = new Salida(adventures, new Vector2(425, 696), Constant.PUERTA, objetos.size()-1);
		objetos.add(new Pared(adventures, new Vector2(541, 696), 290, 58));
		objetos.add(new Pared(adventures, new Vector2(831, 0), 58, 754));
		
		//Se introducen los demas objetos por fila
		cofre = new Cofre(adventures, new Vector2(193, 638), 9);
		

		objetos.add(new Arbol(adventures, new Vector2(251, 580)));
