package iamrescue.agent.firebrigade.util; import iamrescue.belief.IAMWorldModel; import java.util.Collection; import java.util.Set; import javolution.util.FastSet; import rescuecore2.standard.entities.Building; import rescuecore2.standard.entities.StandardEntity; import rescuecore2.standard.entities.StandardEntityURN; import rescuecore2.standard.entities.StandardPropertyURN; import rescuecore2.worldmodel.Entity; import rescuecore2.worldmodel.EntityListener; import rescuecore2.worldmodel.Property; public class BurningBuildingMonitor implements EntityListener { Set<Building> burningbuildings; private IAMWorldModel world_model; public BurningBuildingMonitor(IAMWorldModel model){ world_model = model; burningbuildings = new FastSet<Building>(); Collection<StandardEntity> buildings = model.getEntitiesOfType(StandardEntityURN.BUILDING, StandardEntityURN.REFUGE, StandardEntityURN.POLICE_OFFICE, StandardEntityURN.AMBULANCE_CENTRE, StandardEntityURN.FIRE_STATION); for (StandardEntity building : buildings) { Building b = (Building) building; building.addEntityListener(this); if(b.isFierynessDefined() && b.getFieryness() > 0) burningbuildings.add(b); } } /** * * check the fieryness values */ @Override public void propertyChanged(Entity e, Property p, Object oldValue, Object newValue) { if(p.getURN().equals(StandardPropertyURN.FIERYNESS) && p.isDefined()){ if((Integer) newValue > 0 && (Integer) newValue < 4) burningbuildings.add((Building) e); else burningbuildings.remove((Building) e); } } public Set<Building> getBurningbuildings() { return burningbuildings; } }