DebugPanel

Es buena costumbre implementar herramientas de diagnóstico lo más temprano posible, y como ya la base y primera escena están listas, es tiempo de codificar un panel visual con información en tiempo real.

Aprovechando la librería de Scene2d.ui usaré «Label» y «Table» para codificar una pequeña ventana para mostrar información importante en vivo para facilitar y diagnosticar el proceso.

Para esto, necesito un arreglo de «Labels», un «Table» y utilizar el «StringBuilder».

private final StringBuilder stringBuilder;
private final Label[] labels;
private final Table table;

Proximo, iniciar todo en el constructor. Java trae la clase de «StringBuilder», pero estoy usando la de LibGDX.

stringBuilder = new StringBuilder();

labels = new Label[3];

table = new Table();
table.pad(20).setFillParent(true);
table.defaults().padBottom(-1).fill();

El primer texto en la tabla será el título del proyecto. Creo nuevo «Label», se añade a la tabla y se llama al método «row» para una nueva línea.

Label label = new Label("THEOLIUM BY QUAGEM", skin, "Style2");
table.add(label);
table.row();

Información de la resolución actual (RES). Además de leer la resolución al inicio, este texto también se actualiza cada vez que el dispositivo cambia de orientación.

setResolutionString();

labels[0] = new Label(stringBuilder, skin, "Style1");

table.add(labels[0]).row();

private void setResolutionString() {
    stringBuilder.setLength(0);
    stringBuilder.append("RES: ");
    stringBuilder.append(Math.round(mStage.getWidth()));
    stringBuilder.append(" X ");
    stringBuilder.append(Math.round(mStage.getHeight()));
}

Densidad en píxeles de la pantalla (DEN):

setDensityString();
        
labels[1] = new Label(stringBuilder, skin, "Style1");

table.add(labels[1]).row();

private void setDensityString() {
    stringBuilder.setLength(0);
    stringBuilder.append("DEN: ");
    stringBuilder.append(Gdx.graphics.getDensity());
}

Para actualizar resolución y densidad solo necesito hacerlo cuando la pantalla cambia de tamaño u orientación, por eso añado este código en el modulo de «resize»:

public void resize() {

    setResolutionString();
    labels[0].setText(stringBuilder);

    setDensityString();
    labels[1].setText(stringBuilder);
}

Por ultimo, «Frames Per Second» (FPS) y conteo de entidades:

setFPSString();

labels[2] = new Label(stringBuilder, skin, "Style2");

table.add(labels[2]).row();

private void setFPSString() {
    stringBuilder.setLength(0);
    stringBuilder.append("FPS: ");
    stringBuilder.append("[");
    stringBuilder.append(Gdx.graphics.getFramesPerSecond());
    stringBuilder.append("]-[");
    stringBuilder.append(getActorCount());
    stringBuilder.append("]");
}

Para actualizar los (FPS) en vivo, añado este código en el método de «render»:

public void render() {
    setFPSString();
    labels[2].setText(stringBuilder);
}

Y asi se ve:

Únete a otros 36 suscriptores

Deja una respuesta

Anuncios


Consola en pantalla 

Algo que siempre he querido tener es la consola visual en pantalla. Lo encuentro útil porque puedo ver el evento directo sin tener que desviar la mirada hacia la consola.

Continua Leyendo…
Anuncios