package com.me.missingwords.screens;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.utils.Scaling;
import com.badlogic.gdx.utils.viewport.ScalingViewport;
import com.me.missingwords.MissingWords;
/**
*
* Clase abstracta que recoge la informaci�n en com�n que van a tener todas las pantallas
* descendientes.
*
*/
public abstract class BaseScreen implements Screen {
protected MissingWords missingWords;
protected SpriteBatch myBatch;
/*
* Escenario del juego. El escenario es donde se desarrollar� todo. Tiene una estructura de
* �rbol donde se van a�adiendo sus hijos, por lo que el orden es importante para saber
* cuales se mostrar�n antes y cuales despu�s, es decir, para que no se solapen.
* Todos los objetos que heredan de Actor implementan dos m�todos: draw() y act().
* Lo que es lo mismo: como se dibujaran y como actuar�n en el escenario. Luego el escenario
* llama a sus m�todos stage.act() y stage.draw() que llamar�n recursivamente a todos los
* m�todos act() y draw() de sus hijos para a�adirlos al escenario.
*/
protected Stage stage;
/*
* Un escenario necesita un Viewport. Un viewport es lo que vemos en la pantalla, ya que si
* dibujamos fuera de los l�mites de la pantalla, no significa que no se est�
* dibujando, sino que no lo vemos porque est� fuera del Viewport.
*/
private ScalingViewport viewport;
public BaseScreen(MissingWords missingWords) {
this.missingWords = missingWords; // Conectamos el juego con la pantalla base
this.myBatch = missingWords.getSB();
/*
* Con Scaling.stretch ajustamos la aplicaci�n a la pantalla, estrechando
* si es necesario.
*/
viewport = new ScalingViewport(Scaling.stretch,
MissingWords.VIEWPORT_WIDTH , MissingWords.VIEWPORT_HEIGHT);
stage = new Stage(viewport, myBatch);
}
/*
* El m�todo render() es el m�todo encargado de dibujar los elementos en la pantalla.
* Delta es el n�mero de segundos desde que se ejectu� render() anteriormente.
*/
@Override
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}
/*
* El m�todo resize() es el m�todo que se llama cuando hay que ajustar la pantalla al
* dispositivo, es decir, cuando hay que cambiar la resoluci�n.
*/
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, true); // Actualizamos el viewport del stage
}
/* show(): se ejecuta cuando se muestra la pantalla */
@Override
public void show() {
Gdx.input.setInputProcessor(stage); // Indicamos que la entrada la procesar� el stage
Gdx.input.setCatchBackKey(true); // No usar el bot�n atr�s de Android
}
@Override
public void hide() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void dispose() {
// TODO Auto-generated method stub
}
/* -------------- Getters and Setters -------------- */
public Stage getStage() {
return stage;
}
}