package mods.eln.sim.mna.component; import mods.eln.misc.INBTTReady; import mods.eln.sim.mna.misc.MnaConst; import mods.eln.sim.mna.state.State; import net.minecraft.nbt.NBTTagCompound; public class ResistorSwitch extends Resistor implements INBTTReady { boolean ultraImpedance = false; String name; boolean state = false; protected double baseR = 1; public ResistorSwitch(String name, State aPin, State bPin) { super(aPin, bPin); this.name = name; } public void setState(boolean state) { this.state = state; setR(baseR); } @Override public Resistor setR(double r) { baseR = r; return super.setR(state ? r : (ultraImpedance ? MnaConst.ultraImpedance : MnaConst.highImpedance)); } public boolean getState() { return state; } @Override public void readFromNBT(NBTTagCompound nbt, String str) { str += name; setR(nbt.getDouble(str + "R")); if (Double.isNaN(baseR) || baseR == 0) { if (ultraImpedance) ultraImpedance(); else highImpedance(); } setState(nbt.getBoolean(str + "State")); } @Override public void writeToNBT(NBTTagCompound nbt, String str) { str += name; nbt.setDouble(str + "R", baseR); nbt.setBoolean(str + "State", getState()); } public void mustUseUltraImpedance() { ultraImpedance = true; } }