package nl.tudelft.bw4t.client.agent;
import eis.exceptions.ActException;
import nl.tudelft.bw4t.client.message.BW4TMessage;
/**
* Interface for the actions that an agent should be able to perform.
*/
public interface ActionInterface {
/**
* The "go to" action for specified coordinates.
*
* @param x
* the x coordinate.
* @param y
* the y coordinate.
* @throws ActException
* the act exception which is thrown if the requested action
* cannot be performed on the server.
*/
void goTo(double x, double y) throws ActException;
/**
* The "nagivate obstacles action". Takes a different route after colliding
* with obstacles.
*
* @throws ActException
* the act exception which is thrown if the requested action
* cannot be performed on the server.
*/
void navigateObstacles() throws ActException;
/**
* The "go to block" action. Picks up a specified block.
*
* @param id
* the id of the block to be retrieved.
* @throws ActException
* the act exception which is thrown if the requested action
* cannot be performed on the server.
*/
void goToBlock(long id) throws ActException;
/**
* The "go to" action for a specified navPoint.
*
* @param navPointId
* the navigation point id where the bot needs to travel to.
* @throws ActException
* the act exception which is thrown if the requested action
* cannot be performed on the server.
*/
void goTo(String navPointId) throws ActException;
/**
* The "pick up" action. When located at a block, picks up the block.
*
* @param id
* the id of the block to be retrieved.
* @throws ActException
* the act exception which is thrown if the requested action
* cannot be performed on the server.
*/
void pickUp(long id) throws ActException;
/**
* The "put down" action. Which puts down the block somewhere in the current
* Room/Zone.
*
* @throws ActException
* the act exception which is thrown if the requested action
* cannot be performed on the server.
*/
void putDown() throws ActException;
/**
* The "send message" action. Sends a BW4T Message to another agent.
*
* @param receiver
* the receiving agent
* @param message
* the message to be sent
* @throws ActException
* the act exception which is thrown if the requested action
* cannot be performed on the server.
*/
void sendMessage(String receiver, BW4TMessage message) throws ActException;
}