package org.newdawn.slick.state;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.InputListener;
import org.newdawn.slick.SlickException;
/**
* A single state building up part of the game. The state include rendering, logic and input handling
* for the state.
*
* @author kevin
*/
public interface GameState extends InputListener {
/**
* Get the ID of this state
*
* @return The game unique ID of this state
*/
public int getID();
/**
* Initialise the state. It should load any resources it needs at this stage
*
* @param container The container holding the game
* @param game The game holding this state
* @throws SlickException Indicates a failure to initialise a resource for this state
*/
public void init(GameContainer container, StateBasedGame game) throws SlickException;
/**
* Render this state to the game's graphics context
*
* @param container The container holding the game
* @param game The game holding this state
* @param g The graphics context to render to
* @throws SlickException Indicates a failure to render an artifact
*/
public void render(GameContainer container, StateBasedGame game, Graphics g) throws SlickException;
/**
* Update the state's logic based on the amount of time thats passed
*
* @param container The container holding the game
* @param game The game holding this state
* @param delta The amount of time thats passed in millisecond since last update
* @throws SlickException Indicates an internal error that will be reported through the
* standard framework mechanism
*/
public void update(GameContainer container, StateBasedGame game, int delta) throws SlickException ;
/**
* Notification that we've entered this game state
*
* @param container The container holding the game
* @param game The game holding this state
* @throws SlickException Indicates an internal error that will be reported through the
* standard framework mechanism
*/
public void enter(GameContainer container, StateBasedGame game) throws SlickException;
/**
* Notification that we're leaving this game state
*
* @param container The container holding the game
* @param game The game holding this state
* @throws SlickException Indicates an internal error that will be reported through the
* standard framework mechanism
*/
public void leave(GameContainer container, StateBasedGame game) throws SlickException;
}