/*******************************************************************************
* 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;
import robocode.CustomEvent;
import robocode.SkippedTurnEvent;
/**
* An event interface for receiving advanced robot events with an
* {@link IAdvancedRobot}.
*
* @author Pavel Savara (original)
* @author Flemming N. Larsen (javadoc)
* @see IAdvancedRobot
* @since 1.6
*/
public interface IAdvancedEvents {
/**
* This method is called if the robot is using too much time between
* actions. When this event occur, the robot's turn is skipped, meaning that
* it cannot take action anymore in this turn.
* <p/>
* If you receive 30 skipped turn event, your robot will be removed from the
* round and loose the round.
* <p/>
* You will only receive this event after taking an action. So a robot in an
* infinite loop will not receive any events, and will simply be stopped.
* <p/>
* No correctly working, reasonable robot should ever receive this event
* unless it is using too many CPU cycles.
*
* @param event the skipped turn event set by the game
* @see robocode.SkippedTurnEvent
* @see robocode.Event
*/
void onSkippedTurn(SkippedTurnEvent event);
/**
* This method is called when a custom condition is met.
* <p/>
* See the sample robots for examples of use, e.g. the {@code sample.Target}
* robot.
*
* @param event the custom event that occurred
* @see robocode.AdvancedRobot#addCustomEvent
* @see robocode.CustomEvent
* @see robocode.Event
*/
void onCustomEvent(CustomEvent event);
}