package mods.eln.sim; import mods.eln.Eln; import mods.eln.misc.INBTTReady; import mods.eln.sim.nbt.NbtElectricalGateInput; import net.minecraft.nbt.NBTTagCompound; public abstract class NodeElectricalGateInputHysteresisProcess implements IProcess, INBTTReady { NbtElectricalGateInput gate; String name; boolean state = false; public NodeElectricalGateInputHysteresisProcess(String name, NbtElectricalGateInput gate) { this.gate = gate; this.name = name; } protected abstract void setOutput(boolean value); @Override public void process(double time) { if (state) { if (gate.getU() < Eln.instance.SVU * 0.3) { state = false; setOutput(false); } else setOutput(true); } else { if (gate.getU() > Eln.instance.SVU * 0.7) { state = true; setOutput(true); } else setOutput(false); } } @Override public void readFromNBT(NBTTagCompound nbt, String str) { state = nbt.getBoolean(str + name + "state"); } @Override public void writeToNBT(NBTTagCompound nbt, String str) { nbt.setBoolean(str + name + "state", state); } }