package sample; import java.util.Collection; import java.util.EnumSet; import rescuecore2.worldmodel.ChangeSet; import rescuecore2.worldmodel.Entity; import rescuecore2.worldmodel.EntityID; import rescuecore2.messages.Command; import rescuecore2.registry.Registry; import rescuecore2.registry.EntityFactory; import rescuecore2.standard.entities.StandardEntityURN; import rescuecore2.standard.entities.StandardEntityFactory; import rescuecore2.standard.entities.Human; import rescuecore2.log.Logger; /** An agent for testing custom registry objects. */ public class CustomRegistryTestAgent extends AbstractSampleAgent<Human> { @Override public String toString() { return "Custom registry test agent"; } @Override public Registry getPreferredRegistry(Registry parent) { Registry result = new Registry("Custom registry", parent); result.registerEntityFactory(new CustomEntityFactory()); return result; } @Override protected void postConnect() { super.postConnect(); Logger.info("Custom registry test agent " + getID() + " connected"); Logger.info("Current registry: " + Registry.getCurrentRegistry()); } @Override protected void think(int time, ChangeSet changed, Collection<Command> heard) { sendRest(time); } @Override protected EnumSet<StandardEntityURN> getRequestedEntityURNsEnum() { return EnumSet.of(StandardEntityURN.FIRE_BRIGADE, StandardEntityURN.POLICE_FORCE, StandardEntityURN.AMBULANCE_TEAM); } private static class CustomEntityFactory implements EntityFactory { private StandardEntityFactory downstream = StandardEntityFactory.INSTANCE; @Override public Entity makeEntity(String urn, EntityID id) { // Logger.debug("CustomEntityFactory.makeEntity(" + urn + ", " + id + ")"); return downstream.makeEntity(urn, id); } @Override public String[] getKnownEntityURNs() { return downstream.getKnownEntityURNs(); } @Override public String toString() { return "Custom entity factory"; } } }