package com.uoc.educationalVG.framework;

/**
 * Here’s what an implementation of this interface has to do: 1) Set up the
 * window and UI component and hook into callbacks so that we can receive window
 * and input events. 2) Start the main loop thread. 3) Keep track of the current
 * screen, and tell it to update and present itself in every main loop iteration
 * (aka frame). 4) Transfer any window events (for example, pause and resume
 * events) from the UI thread to the main loop thread and pass them on to the
 * current screen so that it can change its state accordingly. 5) Grant access
 * to all the modules we developed earlier: Input, FileIO, Graphics, and Audio.
 * 
 * @author "Beginning Android 4 Games Development"
 * 
 */
public interface Game {
	public Input getInput();

	public FileIO getFileIO();

	public Graphics getGraphics();

	public Audio getAudio();

	/**
	 * Allows us to set the current Screen of the Game
	 * @param screen
	 */
	public void setScreen(Screen screen);

	/**
	 * @return the currently active Screen. 
	 */
	public Screen getCurrentScreen();

	/**
	 * @return an instance to the first screen of our game.
	 */
	public Screen getStartScreen();
}