package mods.eln.sixnode.electricalredstoneinput;
import mods.eln.misc.Coordonate;
import mods.eln.misc.Utils;
import mods.eln.sim.IProcess;
public class ElectricalRedstoneInputSlowProcess implements IProcess {
ElectricalRedstoneInputElement element;
double sleepCounter = 0;
static final double sleepDuration = 0.15;
public int oldSignal = 0;
public ElectricalRedstoneInputSlowProcess(ElectricalRedstoneInputElement element) {
this.element = element;
}
@Override
public void process(double time) {
if (sleepCounter == 0.0) {
Coordonate coord = element.sixNode.coordonate;
// TODO: Ignore the value of a signal to redstone converter if it is connected to this converted directly.
int signal = Utils.getRedstoneLevelAround(coord, element.side);
//Utils.println("Light : " + light);
element.outputGateProcess.setOutputNormalized((signal) / 15.0);
if (signal != oldSignal) {
element.needPublish();
}
sleepCounter = sleepDuration + Math.random() * sleepDuration;
oldSignal = signal;
} else {
sleepCounter -= time;
if (sleepCounter < 0.0) sleepCounter = 0.0;
}
}
}