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
`String` `name` The name of this condition.
`int` `priority` The priority of this condition.

### Constructor Summary

Constructors
Constructor and 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

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `cleanup()` Called by the system in order to clean up references to internal objects.
`String` `getName()` Returns the name of this condition.
`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 Detail

#### priority

    public int priority

The priority of this condition. Defaults to 80.

#### name

    public String name

The name of this condition.

### Constructor Detail

#### 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 Detail

#### 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