package rescuecore2.standard.entities;
import rescuecore2.registry.AbstractPropertyFactory;
import rescuecore2.worldmodel.Property;
import rescuecore2.worldmodel.properties.IntProperty;
import rescuecore2.worldmodel.properties.IntArrayProperty;
import rescuecore2.worldmodel.properties.EntityRefProperty;
import rescuecore2.worldmodel.properties.EntityRefListProperty;
import rescuecore2.worldmodel.properties.BooleanProperty;
/**
PropertyFactory that builds standard Robocup Standard properties.
*/
public final class StandardPropertyFactory extends AbstractPropertyFactory<StandardPropertyURN> {
/**
Singleton class. Use this instance to do stuff.
*/
public static final StandardPropertyFactory INSTANCE = new StandardPropertyFactory();
/**
Singleton class: private constructor.
*/
private StandardPropertyFactory() {
super(StandardPropertyURN.class);
}
@Override
public Property makeProperty(StandardPropertyURN urn) {
switch (urn) {
case START_TIME:
case LONGITUDE:
case LATITUDE:
case WIND_FORCE:
case WIND_DIRECTION:
case X:
case Y:
case FLOORS:
case BUILDING_ATTRIBUTES:
case FIERYNESS:
case BROKENNESS:
case BUILDING_CODE:
case BUILDING_AREA_GROUND:
case BUILDING_AREA_TOTAL:
case DIRECTION:
case STAMINA:
case HP:
case DAMAGE:
case BURIEDNESS:
case WATER_QUANTITY:
case TEMPERATURE:
case IMPORTANCE:
case TRAVEL_DISTANCE:
case REPAIR_COST:
return new IntProperty(urn);
case APEXES:
case POSITION_HISTORY:
return new IntArrayProperty(urn);
case IGNITION:
return new BooleanProperty(urn);
case POSITION:
return new EntityRefProperty(urn);
case BLOCKADES:
return new EntityRefListProperty(urn);
case EDGES:
return new EdgeListProperty(urn);
default:
throw new IllegalArgumentException("Unrecognised property urn: " + urn);
}
}
}