/*******************************************************************************
* 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.control.snapshot;
/**
* Interface of a robot snapshot at a specific time in a battle.
*
* @author Pavel Savara (original)
* @author Flemming N. Larsen (contributor)
*
* @since 1.6.2
*/
public interface IRobotSnapshot {
/**
* Returns the name of the robot.
*
* @return the name of the robot.
*/
String getName();
/**
* Returns the short name of the robot.
*
* @return the short name of the robot.
*/
String getShortName();
/**
* Returns the very short name of the robot.
*
* @return the very short name of the robot.
*/
String getVeryShortName();
/**
* Returns the name of the team, which can be the name of a robot if the contestant is not a team, but a robot.
*
* @return the name of the team.
*/
String getTeamName();
/**
* Returns the contestant index of the robot, which is constant during a battle.
*
* @return the contestant index of the robot.
*/
int getContestantIndex();
/**
* Returns the robot state.
*
* @return the robot state.
*/
RobotState getState();
/**
* Returns the energy level of the robot.
*
* @return the energy level of the robot.
*/
double getEnergy();
/**
* Returns the velocity of the robot.
*
* @return the velocity of the robot.
*/
double getVelocity();
/**
* Returns the body heading of the robot in radians.
*
* @return the body heading of the robot in radians.
*/
double getBodyHeading();
/**
* Returns the gun heading of the robot in radians.
*
* @return the gun heading of the robot in radians.
*/
double getGunHeading();
/**
* Returns the radar heading of the robot in radians.
*
* @return the radar heading of the robot in radians.
*/
double getRadarHeading();
/**
* Returns the gun heat of the robot.
*
* @return the gun heat of the robot.
*/
double getGunHeat();
/**
* Returns the X position of the robot.
*
* @return the X position of the robot.
*/
double getX();
/**
* Returns the Y position of the robot.
*
* @return the Y position of the robot.
*/
double getY();
/**
* Returns the color of the body.
*
* @return an ARGB color value. (Bits 24-31 are alpha, 16-23 are red, 8-15 are green, 0-7 are blue)
*
* @see java.awt.Color#getRGB()
*/
int getBodyColor();
/**
* Returns the color of the gun.
*
* @return an ARGB color value. (Bits 24-31 are alpha, 16-23 are red, 8-15 are green, 0-7 are blue)
*
* @see java.awt.Color#getRGB()
*/
int getGunColor();
/**
* Returns the color of the radar.
*
* @return an ARGB color value. (Bits 24-31 are alpha, 16-23 are red, 8-15 are green, 0-7 are blue)
*
* @see java.awt.Color#getRGB()
*/
int getRadarColor();
/**
* Returns the color of the scan arc.
*
* @return an ARGB color value. (Bits 24-31 are alpha, 16-23 are red, 8-15 are green, 0-7 are blue)
*
* @see java.awt.Color#getRGB()
*/
int getScanColor();
/**
* Checks if this robot is a {@link robocode.Droid Droid}.
*
* @return {@code true} if this robot is a Droid; {@code false} otherwise.
*/
boolean isDroid();
/**
* Checks if this robot is a {@link robocode.robotinterfaces.IPaintRobot IPaintRobot} or is invoking getGraphics()
*
* @return {@code true} if this robot is a painting; {@code false} otherwise.
*/
boolean isPaintRobot();
/**
* Checks if painting is enabled for this robot.
*
* @return {@code true} if painting is enabled for this robot; {@code false} otherwise.
*/
boolean isPaintEnabled();
/**
* Checks if RobocodeSG painting (the point (0,0) is in the upper left corner) is enabled for this robot.
*
* @return {@code true} if RobocodeSG painting is enabled for this robot; {@code false} otherwise.
*/
boolean isSGPaintEnabled();
/**
* Returns a snapshot of debug properties.
*
* @return a snapshot of debug properties.
*/
IDebugProperty[] getDebugProperties();
/**
* Returns a snapshot of the output print stream for this robot.
*
* @return a string containing the snapshot of the output print stream.
*/
String getOutputStreamSnapshot();
/**
* Returns a snapshot of the current score for this robot.
*
* @return a snapshot of the current score for this robot.
*/
IScoreSnapshot getScoreSnapshot();
}