package iamrescue.agent; import java.util.List; import javolution.util.FastList; public class SimulationTimer implements ISimulationTimer { private int time; private List<ITimeStepListener> listeners = new FastList<ITimeStepListener>(); public void setTime(int time) { this.time = time; } public int getTime() { return time; } /** * Registers a new listener with this. * * @param listener * The new listener */ public void addTimeStepListener(ITimeStepListener listener) { listeners.add(listener); } /** * Removes a listener * * @param listener * The listener to remove */ public void removeTimeStepListener(ITimeStepListener listener) { listeners.remove(listener); } /** * Fires the listeners. */ public void fireTimeStepStarted() { List<ITimeStepListener> copy = new FastList<ITimeStepListener>( listeners); for (ITimeStepListener listener : copy) { listener.notifyTimeStepStarted(time); } } }