/*******************************************************************************
* Copyright (c) 2001, 2010 Mathew A. Nelson and Robocode contributors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://robocode.sourceforge.net/license/epl-v10.html
*
* Contributors:
* Pavel Savara
* - Initial implementation
* Flemming N. Larsen
* - Javadocs
*******************************************************************************/
package robocode.robotinterfaces;
/**
* A robot interface for creating a more advanced type of robot like
* {@link robocode.AdvancedRobot} that is able to handle advanced robot events.
* An advanced robot allows non-blocking calls, custom events, get notifications
* about skipped turns, and also allow writes to the file system.
*
* @author Pavel Savara (original)
* @author Flemming N. Larsen (javadoc)
* @see robocode.AdvancedRobot
* @see IBasicRobot
* @see IJuniorRobot
* @see IInteractiveRobot
* @see ITeamRobot
* @since 1.6
*/
public interface IAdvancedRobot extends IBasicRobot {
/**
* This method is called by the game to notify this robot about advanced
* robot event. Hence, this method must be implemented so it returns your
* {@link IAdvancedEvents} listener.
*
* @return listener to advanced events or {@code null} if this robot should
* not receive the notifications.
* @since 1.6
*/
IAdvancedEvents getAdvancedEventListener();
}