package com.github.czyzby.kiwi.util.gdx;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputProcessor;
/** Combines utility of {@link com.badlogic.gdx.ApplicationAdapter} and {@link com.badlogic.gdx.InputAdapter}:
* implements {@link ApplicationListener} and {@link InputProcessor} with mostly empty methods to limit boilerplate
* needed to set up an application listener that also listens to user input. This is basically an updated version of
* {@link InputAwareApplicationAdapter}.
*
* <p>
* {@link #create()} method invokes {@link #initiate()} and then sets this listener as application's main
* {@link InputProcessor}. Similarly to {@link AbstractApplicationListener}, {@link #render(float)} is provided: it is
* automatically called by {@link #render()} with time passed since the last render (in seconds) right after clearing
* the screen with black color.
*
* @author MJ */
public abstract class InputAwareApplicationListener implements ApplicationListener, InputProcessor {
@Override
public void create() {
initiate();
Gdx.input.setInputProcessor(this);
}
/** Invoked by {@link #create()} method before setting this listener as application's {@link InputProcessor}. */
protected abstract void initiate();
@Override
public void resize(final int width, final int height) {
}
@Override
public void render() {
GdxUtilities.clearScreen();
render(Gdx.graphics.getDeltaTime());
}
/** Called after clearing the screen by default {@link #render()} implementation with
* {@code Gdx.graphics.getDeltaTime()} as parameter.
*
* @param deltaTime time passed since the last render call. */
protected abstract void render(float deltaTime);
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void dispose() {
}
@Override
public boolean keyDown(final int keycode) {
return false;
}
@Override
public boolean keyUp(final int keycode) {
return false;
}
@Override
public boolean keyTyped(final char character) {
return false;
}
@Override
public boolean touchDown(final int screenX, final int screenY, final int pointer, final int button) {
return false;
}
@Override
public boolean touchUp(final int screenX, final int screenY, final int pointer, final int button) {
return false;
}
@Override
public boolean touchDragged(final int screenX, final int screenY, final int pointer) {
return false;
}
@Override
public boolean mouseMoved(final int screenX, final int screenY) {
return false;
}
@Override
public boolean scrolled(final int amount) {
return false;
}
}