package com.gamepatriot.androidframework.framework;

import java.util.ArrayList;

/**
 * An AndroidInputter implementation should register all single-touch input received in the application, and then provide a queue of that input information so {@link AndroidRenderer} can
 * broadcast them to active {@link AndroidScreen}s.
 * 
 * @author Pete Schmitz, May 9, 2013
 *
 */
public interface AndroidInputter {
	
	/** An AndroidTouchEvent implementation should store all information of an input. **/
	public interface AndroidTouchEvent{}
	
	/**
	 * Pause the AndroidInputter. Prevents input information from being collected.
	 */
	public void pause();
	
	/**
	 * Resume the AndroidInputter and resume collection of input information.
	 */
	public void resume();
	
	/**
	 * Return a collection of input information.
	 */
	public ArrayList<AndroidTouchEvent> getEvents();
	
	/**
	 * Recycle a touch event by adding it to the implementation's touch event pool. Note: The touch event provided is not removed from the touch events list in this call.
	 */
	public void recycle(AndroidTouchEvent $touchEvent);
	
	/**
	 * Clear the touch events list.
	 */
	public void clear();
	
	/**
	 * Inserts a back-button-pressed broadcast to this inputter.
	 */
	public void insertBackPressed();
}
