Package robocode

# Class Condition

java.lang.Object
robocode.Condition

Direct Known Subclasses:
  `GunTurnCompleteCondition`, `MoveCompleteCondition`, `RadarTurnCompleteCondition`, `TurnCompleteCondition`

public abstract class Condition extends Object
Condition is used to define custom `waitFor(Condition)` and custom events for an `AdvancedRobot`. The code below is taken from the sample robot named `sample.Target`. See the `sample/Target.java` for details.

       addCustomEvent(
           new Condition("triggerhit") {
               public boolean test() {
                   return (getEnergy() <= trigger);
               };
           }
       );

You should note that by extending Condition this way, you are actually creating an inner class -- so if you distribute your robot, there will be multiple class files. (i.e. `Target$1.class`)

Author:
  Mathew A. Nelson (original), Flemming N. Larsen (contributor), Nathaniel Troutman (contributor)
See Also:
  - `AdvancedRobot.waitFor(Condition)`
  - `AdvancedRobot.addCustomEvent(Condition)`
  - `AdvancedRobot.removeCustomEvent(Condition)`
  - `AdvancedRobot.onCustomEvent(CustomEvent)`

## Field Summary

Fields
Modifier and Type
Field
Description
`String`
`name`
The name of this condition.
`int`
`priority`
The priority of this condition.

## Constructor Summary

Constructors
Constructor
Description
`Condition()`
Creates a new, unnamed Condition with the default priority, which is 80.
`Condition(String name)`
Creates a new Condition with the specified name, and default priority, which is 80.
`Condition(String name, int priority)`
Creates a new Condition with the specified name and priority.

## Method Summary

Modifier and Type
Method
Description
`void`
`cleanup()`
Called by the system in order to clean up references to internal objects.
`String`
`getName()`
Returns the name of this condition.
`final int`
`getPriority()`
Returns the priority of this condition.
`void`
`setName(String newName)`
Sets the name of this condition.
`void`
`setPriority(int newPriority)`
Sets the priority of this condition.
`abstract boolean`
`test()`
Overriding the test() method is the point of a Condition.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### priority

public int priority
The priority of this condition. Defaults to 80.

### name

public String name
The name of this condition.

## Constructor Details

### Condition

public Condition()
Creates a new, unnamed Condition with the default priority, which is 80.

### Condition

public Condition(String name)
Creates a new Condition with the specified name, and default priority, which is 80.

Parameters:
  `name` - the name for the new Condition

### Condition

public Condition(String name, int priority)
Creates a new Condition with the specified name and priority. A condition priority is a value from 0 - 99. The higher value, the higher priority. The default priority is 80.

Parameters:
  `name` - the name for the new condition
  `priority` - the priority of the new condition

## Method Details

### getName

public String getName()
Returns the name of this condition.

Returns:
  the name of this condition

### getPriority

public final int getPriority()
Returns the priority of this condition. A condition priority is a value from 0 - 99. The higher value, the higher priority. The default priority is 80.

Returns:
  the priority of this condition

### setName

public void setName(String newName)
Sets the name of this condition.

Parameters:
  `newName` - the new name of this condition

### setPriority

public void setPriority(int newPriority)
Sets the priority of this condition. A condition priority is a value from 0 - 99. The higher value, the higher priority. The default priority is 80.

Parameters:
  `newPriority` - the new priority of this condition.

### test

public abstract boolean test()
Overriding the test() method is the point of a Condition. The game will call your test() function, and take action if it returns `true`. This is valid for both `AdvancedRobot.waitFor(robocode.Condition)` and `AdvancedRobot.addCustomEvent(robocode.Condition)`.

You may not take any actions inside of test().

Returns:
  `true` if the condition has been met, `false` otherwise.

### cleanup

public void cleanup()
Called by the system in order to clean up references to internal objects.

Since:
  1.4.3