// Path: src/org/sinrel/engine/Engine.java
// public class Engine {
// 	
// 	private EngineSettings settings;
// 	
// 	private Intent intent;
// 	private Config config;
// 	
// 	private Downloader downloader;
// 	private Checker checker;
// 	private AuthBehavior auth;
// 	private MinecraftStarter starter;
// 	
// 	private boolean debug = false;
// 	
// 	public Engine( EngineSettings settings ) {
// 		try {
// 			intent = new Intent(this);
// 			setSettings(settings);
// 			config = new DefaultConfig(this);
// 			downloader = new DefaultDownloader();
// 			checker = new DefaultChecker();
// 			auth = new DefaultAuthBehavior();
// 			starter = new MinecraftAppletStarter();
// 		}catch( Exception e ) {
// 			FatalError.showErrorWindow(e);
// 		}
// 	}	
// 	
// 	public EngineSettings getSettings() {
// 		return settings;
// 	}
// 	
// 	public Downloader getDownloader() {
// 		return downloader;
// 	}
// 	
// 	public Checker getChecker() {
// 		return checker;
// 	}
// 	
// 	public AuthBehavior getAuth() {
// 		return auth;
// 	}
// 		
// 	public Intent getIntent(){
// 		return intent;
// 	}
// 	
// 	public Config getConfig() {
// 		return config;
// 	}
// 	
// 	public MinecraftStarter getStarter(){
// 		return starter;
// 	}
// 	
// 	public void setSettings(EngineSettings settings){
// 		if( settings == null ) throw new NullPointerException();
// 		this.settings = settings;
// 	}
// 	
// 	public void setDownloader(Downloader downloader) {
// 		if( downloader == null ) throw new NullPointerException();
// 		this.downloader = downloader;
// 	}
// 	
// 	public void setChecker( Checker checker ) {
// 		if( checker == null ) throw new NullPointerException();
// 		this.checker = checker;
// 	}
// 	
// 	public void setAuth(AuthBehavior auth) {
// 		if( auth == null ) throw new NullPointerException();
// 		this.auth = auth;
// 	}
// 			
// 	public void setConfig( Config config ) {
// 		if( config == null ) throw new NullPointerException();
// 		this.config = config;
// 	}
// 	
// 	public void setMinecraftStarter( MinecraftStarter starter ){
// 		if( starter == null ) throw new NullPointerException();
// 		this.starter = starter;
// 	}
// 	
// 	public void useDebug( boolean debug ) {
// 		this.debug = debug;
// 	}
// 	
// 	public boolean isDebug(){
// 		return debug;
// 	}
// 	
// }


import javax.swing.JFrame;
import org.sinrel.engine.Engine;
package org.sinrel.engine.actions;



/**
 * Данный класс содержит методы, которые позволяют подавать команды движку. <br>
 * Рекомендуется использовать только данный класс в целях поддержания совместимости с новыми версиями движка. 
 */
public class Intent {

	private Engine engine;

	public Intent(Engine engine) {
		this.engine = engine;
	}

	/**
	 * Загрузка клиента с сервера
	 * 
	 * @param clientName Имя клиента
	 * @return Возвращает результат загрузки типа {@link DownloadResult}
	 */
	public DownloadResult downloadClient( String clientName ) {
		return engine.getDownloader().downloadClient( engine, clientName );
	}
	
	/**
	 * Авторизация пользователя
	 * 
	 * @param login Логин
	 * @param pass Пароль
	 * @return обьект {@link AuthData } с содержимым сессии, логина и результате авторизации
	 */
	public AuthData auth( String login, String pass ) {
		return engine.getAuth().auth( engine, login, pass );
	}
	
	/**
	 * Проверка клиента
	 * 
	 * @param clientName Имя клиента
	 * @return Статус клиента типа {@link ClientStatus}
	 */
	public ClientStatus checkClient( String clientName ) {
		return engine.getChecker().checkClient( engine, clientName );
	}
	
	/** Запуск клиента Minecraft
	 * @param clientName Имя клиента
	 * @param authData Идентификационные данные
	 * @param frame Окно в котором запускать
	 */
	public void startMinecraft( String clientName, AuthData authData, JFrame frame) {
		engine.getStarter().startMinecraft( engine.getSettings().getDirectory(), clientName, authData, null, null, frame );
	}
	
	/**
	 * Запуск клиента Minecraft
	 * @param clientName Имя клиента
	 * @param authData Идентификационные данные
	 * @param server Адрес сервера
	 * @param port Порт сервера
	 * @param frame Окно в котором запускать
	 */
	public void startMinecraft( String clientName, AuthData authData, String server, String port, JFrame frame ) {
// Path: src/org/sinrel/engine/Engine.java
// public class Engine {
// 	
// 	private EngineSettings settings;
// 	
// 	private Intent intent;
// 	private Config config;
// 	
// 	private Downloader downloader;
// 	private Checker checker;
// 	private AuthBehavior auth;
// 	private MinecraftStarter starter;
// 	
// 	private boolean debug = false;
// 	
// 	public Engine( EngineSettings settings ) {
// 		try {
// 			intent = new Intent(this);
// 			setSettings(settings);
// 			config = new DefaultConfig(this);
// 			downloader = new DefaultDownloader();
// 			checker = new DefaultChecker();
// 			auth = new DefaultAuthBehavior();
// 			starter = new MinecraftAppletStarter();
// 		}catch( Exception e ) {
// 			FatalError.showErrorWindow(e);
// 		}
// 	}	
// 	
// 	public EngineSettings getSettings() {
// 		return settings;
// 	}
// 	
// 	public Downloader getDownloader() {
// 		return downloader;
// 	}
// 	
// 	public Checker getChecker() {
// 		return checker;
// 	}
// 	
// 	public AuthBehavior getAuth() {
// 		return auth;
// 	}
// 		
// 	public Intent getIntent(){
// 		return intent;
// 	}
// 	
// 	public Config getConfig() {
// 		return config;
// 	}
// 	
// 	public MinecraftStarter getStarter(){
// 		return starter;
// 	}
// 	
// 	public void setSettings(EngineSettings settings){
// 		if( settings == null ) throw new NullPointerException();
// 		this.settings = settings;
// 	}
// 	
// 	public void setDownloader(Downloader downloader) {
// 		if( downloader == null ) throw new NullPointerException();
// 		this.downloader = downloader;
// 	}
// 	
// 	public void setChecker( Checker checker ) {
// 		if( checker == null ) throw new NullPointerException();
// 		this.checker = checker;
// 	}
// 	
// 	public void setAuth(AuthBehavior auth) {
// 		if( auth == null ) throw new NullPointerException();
// 		this.auth = auth;
// 	}
// 			
// 	public void setConfig( Config config ) {
// 		if( config == null ) throw new NullPointerException();
// 		this.config = config;
// 	}
// 	
// 	public void setMinecraftStarter( MinecraftStarter starter ){
// 		if( starter == null ) throw new NullPointerException();
// 		this.starter = starter;
// 	}
// 	
// 	public void useDebug( boolean debug ) {
// 		this.debug = debug;
// 	}
// 	
// 	public boolean isDebug(){
// 		return debug;
// 	}
// 	
// }


// Path: src/org/sinrel/engine/actions/Intent.java
import javax.swing.JFrame;
import org.sinrel.engine.Engine;

package org.sinrel.engine.actions;



/**
 * Данный класс содержит методы, которые позволяют подавать команды движку. <br>
 * Рекомендуется использовать только данный класс в целях поддержания совместимости с новыми версиями движка. 
 */
public class Intent {

	private Engine engine;

	public Intent(Engine engine) {
		this.engine = engine;
	}

	/**
	 * Загрузка клиента с сервера
	 * 
	 * @param clientName Имя клиента
	 * @return Возвращает результат загрузки типа {@link DownloadResult}
	 */
	public DownloadResult downloadClient( String clientName ) {
		return engine.getDownloader().downloadClient( engine, clientName );
	}
	
	/**
	 * Авторизация пользователя
	 * 
	 * @param login Логин
	 * @param pass Пароль
	 * @return обьект {@link AuthData } с содержимым сессии, логина и результате авторизации
	 */
	public AuthData auth( String login, String pass ) {
		return engine.getAuth().auth( engine, login, pass );
	}
	
	/**
	 * Проверка клиента
	 * 
	 * @param clientName Имя клиента
	 * @return Статус клиента типа {@link ClientStatus}
	 */
	public ClientStatus checkClient( String clientName ) {
		return engine.getChecker().checkClient( engine, clientName );
	}
	
	/** Запуск клиента Minecraft
	 * @param clientName Имя клиента
	 * @param authData Идентификационные данные
	 * @param frame Окно в котором запускать
	 */
	public void startMinecraft( String clientName, AuthData authData, JFrame frame) {
		engine.getStarter().startMinecraft( engine.getSettings().getDirectory(), clientName, authData, null, null, frame );
	}
	
	/**
	 * Запуск клиента Minecraft
	 * @param clientName Имя клиента
	 * @param authData Идентификационные данные
	 * @param server Адрес сервера
	 * @param port Порт сервера
	 * @param frame Окно в котором запускать
	 */
	public void startMinecraft( String clientName, AuthData authData, String server, String port, JFrame frame ) {
		engine.getStarter().startMinecraft( engine.getSettings().getDirectory() , clientName, authData, server, port, frame );