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