package ei.game.algo;

/**
 * The description of a data source for rendering a map
 * 
 * @author Kevin Glass
 */
public interface TileMap {

	/**
	 * Get the tile at a specified location. The index returned should
	 * allow the renderer to look up a renderable object in a renderer
	 * dependent tileset.
	 * 
	 * @param x The x position of the tile to retrieve
	 * @param y The y position of the tile to retrieve
	 * @param layer The layer of the tile to retrieve (zero being the base)
	 * @return The tile at the specified location
	 */
	public int getTileAt(int x,int y,int layer);
	
	/**
	 * Get the width of the map in tiles
	 * 
	 * @return The width of the map in tiles
	 */
	public int getMapWidth();
	
	/**
	 * Get the height of the map in tiles
	 * 
	 * @return The height of the map in tiles
	 */
	public int getMapHeight();
	
	/**
	 * Is a particular tile location current blocked
	 * 
	 * @param x The x coordinate of the tile location to check
	 * @param y The y coordinate of the tile location to check
	 * @return True if the specified locaiton is blocked
	 */
	public boolean isBlocked(int x,int y);
}
