/*
 * Created on 01.12.2004
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package de.farafin.snEADy.inOut;

import java.io.FileNotFoundException;

import de.farafin.snEADy.communication.D_Level;

/**
 * interface for the levelLoader.. maybe we reallie it in different ways
 * 
 * @author roland
 *
 * 
 * @version $Revision: 1.4 $
 */
public interface I_LevelLoader_interface
{
	/** Loads a level file into a D_Level object
	 * 
	 * @param root the root-path of the levelFolder. Its only possible to point to folders which are subfolders
	 * of the gake-folder
	 * @param levName the name of the level that should be loaded. Its the name of the file, the level
	 * may have an different name.
	 * @return the loaded level see here for file specifications: @see D_ModuleCom.D_File_Level
	 * @throws E_LevelFileException if the file was found, but in a wrong format
	 * @throws FileNotFoundException if the file was not found
	 */
	public D_Level loadLevel(String root, String levName) throws E_LevelFileException, FileNotFoundException;
	/** its almost the same funktion, with the root directory of
	 * "levels".
	 * @see #loadLevel(String, String) 
	 * @param levName levName the name of the level that should be loaded. Its the name of the file, the level
	 * may have an different name.
	 * @return the loaded level see here for file specifications: @see D_ModuleCom.D_File_Level
	 * @throws E_LevelFileException if the file was found, but in a wrong format
	 * @throws FileNotFoundException if the file was not found
	 */
	public D_Level loadLevel(String levName) throws E_LevelFileException, FileNotFoundException;
	
	
	/** Loads only the header of the File into a D_Level objecrt. The playfield is ignored.
	 * 
	 * @param root
	 * @param levName
	 * @return
	 * @throws E_LevelFileException
	 * @throws FileNotFoundException
	 */
	public D_Level loadLevelHeader(String root, String levName) throws E_LevelFileException, FileNotFoundException;

	/** Loads only the header of the File into a D_Level objecrt. The playfield is ignored. its almost the same funktion, with the root directory of
	 * "levels".
	 * 
	 * @see #loadLevelHeader(String, String)
	 * @param levName levName the name of the level that should be loaded. Its the name of the file, the level
	 * may have an different name.
	 * @return the loaded level see here for file specifications: @see D_ModuleCom.D_File_Level
	 * @throws E_LevelFileException if the file was found, but in a wrong format
	 * @throws FileNotFoundException if the file was not found
	 */
	public D_Level loadLevelHeader(String levName) throws E_LevelFileException, FileNotFoundException;
}
