1 package net.mograsim.logic.core.components;
3 import net.mograsim.logic.core.LogicObservable;
4 import net.mograsim.logic.core.LogicObserver;
5 import net.mograsim.logic.core.timeline.Timeline;
8 * A basic component that recomputes all outputs (with a delay), when it is updated.
10 * @author Fabian Stemmler
12 public abstract class BasicComponent extends Component implements LogicObserver
14 private int processTime;
18 * @param processTime Amount of time this component takes to update its outputs. Must be more than 0, otherwise 1 is assumed.
20 * @author Fabian Stemmler
22 public BasicComponent(Timeline timeline, int processTime)
25 this.processTime = processTime > 0 ? processTime : 1;
29 public void update(LogicObservable initiator)
31 timeline.addEvent(e -> compute(), processTime);
34 protected abstract void compute();