X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.core%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fcore%2Fcomponents%2FManualSwitch.java;h=9ec98ede1297411f357fb7a2bfb8e2a437af247d;hb=c6ad3a18e8a437d7b131b203267fe2723708641f;hp=e3ae37204ebabcb1ca856c78e9724b974012e891;hpb=f338e2a024c8edca6ab72230747ea5e4889d8b0b;p=Mograsim.git diff --git a/net.mograsim.logic.core/src/net/mograsim/logic/core/components/ManualSwitch.java b/net.mograsim.logic.core/src/net/mograsim/logic/core/components/ManualSwitch.java index e3ae3720..9ec98ede 100644 --- a/net.mograsim.logic.core/src/net/mograsim/logic/core/components/ManualSwitch.java +++ b/net.mograsim.logic.core/src/net/mograsim/logic/core/components/ManualSwitch.java @@ -21,7 +21,6 @@ public class ManualSwitch extends Component implements LogicObservable { private Collection observers; private ReadWriteEnd output; - private boolean isOn; public ManualSwitch(Timeline timeline, ReadWriteEnd output) { @@ -44,26 +43,32 @@ public class ManualSwitch extends Component implements LogicObservable public void toggle() { - setState(!isOn); + setState(!isOn()); } public void setState(boolean isOn) { - if (this.isOn == isOn) + setToValueOf(isOn ? Bit.ONE : Bit.ZERO); + } + + public void setToValueOf(Bit bit) + { + if (!bit.isBinary()) + throw new IllegalArgumentException("Cannot set ManualSwitch to the value of Bit " + bit); + if (bit == output.getInputValue()) return; - this.isOn = isOn; - output.feedSignals(getValue()); + output.feedSignals(bit); notifyObservers(); } public boolean isOn() { - return isOn; + return output.getInputValue() == Bit.ONE; } public Bit getValue() { - return isOn ? Bit.ONE : Bit.ZERO; + return output.getInputValue(); } @Override