package ignition; import rescuecore2.worldmodel.ChangeSet; import rescuecore2.messages.control.KSCommands; import rescuecore2.log.Logger; import rescuecore2.standard.components.StandardSimulator; import rescuecore2.standard.entities.Building; import java.util.Set; /** A simulator that determines when new building fires begin. */ public class IgnitionSimulator extends StandardSimulator { private IgnitionModel ignitionModel; @Override protected void postConnect() { super.postConnect(); ignitionModel = new RandomIgnitionModel(model, config); } @Override protected void processCommands(KSCommands c, ChangeSet changes) { long start = System.currentTimeMillis(); int time = c.getTime(); Logger.info("Timestep " + time); // Find out which buildings have ignited. Set<Building> buildings = ignitionModel.findIgnitionPoints(model, c.getTime()); for (Building next : buildings) { Logger.info("Igniting " + next); next.setIgnition(true); changes.addChange(next, next.getIgnitionProperty()); } long end = System.currentTimeMillis(); Logger.info("Timestep " + time + " took " + (end - start) + " ms"); } @Override public String getName() { return "Ignition simulator"; } }