/*
* PluggableRobot, by Robert J. Walker
* Home page: http://robowiki.net/cgi-bin/robowiki?PluggableRobot
* This software is made available under the RoboWiki Limited Public Code License (RWLPCL). The full
* text of the license may be found at http://robowiki.net/cgi-bin/robowiki?RWLPCL.
*/
package rjw.pluggablerobot;
/**
* Components encapsulate the main combat behavior of the robot into pluggable modules. Any code
* that actually sets an action for the robot (moving, turning, rotating the turret or radar, etc.)
* should be done in the go() method. Components should NEVER call any blocking methods;
* PluggableRobot will call execute() automatically when all components have had a chance to act.
* @author Robert J. Walker
*/
public interface Component {
/**
* Asks this Component to execute any actions that it wants to take this turn. PluggableRobot
* will call this method once per turn for each registered Component. Don't put any blocking
* calls in here; PluggableRobot will call execute() for you automatically after calling go() on
* each Component.
*/
public abstract void go();
}