/*******************************************************************************
* Copyright 2011 See AUTHORS file.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
******************************************************************************/
package com.badlogic.gdx;
import com.badlogic.gdx.Input.Buttons;
/**
* An InputProcessor is used to receive input events from the keyboard and the touch screen (mouse on the desktop). For
* this it has to be registered with the {@link Input#setInputProcessor(InputProcessor)} method. It will be called each
* frame before the call to {@link ApplicationListener#render()}. The methods return a* boolean in case you want to
* write a multiplexing InputProcessor that has a chain of child processors that signal whether they processed the
* event. The {@link InputMultiplexer} offers you exactly this functionality.
*
* @author badlogicgames@gmail.com
*/
public interface InputProcessor {
/**
* Called when a key was pressed
*
* @param keycode
* one of the constants in {@link Input.Keys}
* @return whether the input was processed
*/
public boolean keyDown(int keycode);
/**
* Called when a key was released
*
* @param keycode
* one of the constants in {@link Input.Keys}
* @return whether the input was processed
*/
public boolean keyUp(int keycode);
/**
* Called when a key was typed
*
* @param character
* The character
* @return whether the input was processed
*/
public boolean keyTyped(char character);
/**
* Called when the screen was touched or a mouse button was pressed. The button parameter will be
* {@link Buttons#LEFT} on Android.
*
* @param screenX
* The x coordinate, origin is in the upper left corner
* @param screenY
* The y coordinate, origin is in the upper left corner
* @param pointer
* the pointer for the event.
* @param button
* the button
* @return whether the input was processed
*/
public boolean touchDown(int screenX, int screenY, int pointer, int button);
/**
* Called when a finger was lifted or a mouse button was released. The button parameter will be {@link Buttons#LEFT}
* on Android.
*
* @param pointer
* the pointer for the event.
* @param button
* the button
* @return whether the input was processed
*/
public boolean touchUp(int screenX, int screenY, int pointer, int button);
/**
* Called when a finger or the mouse was dragged.
*
* @param pointer
* the pointer for the event.
* @return whether the input was processed
*/
public boolean touchDragged(int screenX, int screenY, int pointer);
/**
* Called when the mouse was moved without any buttons being pressed. Will not be called on Android.
*
* @return whether the input was processed
*/
public boolean mouseMoved(int screenX, int screenY);
/**
* Called when the mouse wheel was scrolled. Will not be called on Android.
*
* @param amount
* the scroll amount, -1 or 1 depending on the direction the wheel was scrolled.
* @return whether the input was processed.
*/
public boolean scrolled(int amount);
}