1 package era.mi.logic.components;
\r
3 import era.mi.logic.timeline.Timeline;
\r
4 import era.mi.logic.types.BitVector;
\r
5 import era.mi.logic.wires.Wire.ReadEnd;
\r
6 import era.mi.logic.wires.WireObserver;
\r
9 * A basic component that recomputes all outputs (with a delay), when it is updated.
\r
11 * @author Fabian Stemmler
\r
13 public abstract class BasicComponent extends Component implements WireObserver
\r
15 private int processTime;
\r
19 * @param processTime Amount of time this component takes to update its outputs. Must be more than 0, otherwise 1 is assumed.
\r
21 * @author Fabian Stemmler
\r
23 public BasicComponent(Timeline timeline, int processTime)
\r
26 this.processTime = processTime > 0 ? processTime : 1;
\r
30 public void update(ReadEnd initiator, BitVector oldValues)
\r
32 timeline.addEvent(e -> compute(), processTime);
\r
35 protected abstract void compute();
\r