package mods.eln.sixnode.wirelesssignal.rx; import mods.eln.misc.INBTTReady; import mods.eln.misc.Utils; import mods.eln.sim.IProcess; import mods.eln.sixnode.wirelesssignal.IWirelessSignalSpot; import mods.eln.sixnode.wirelesssignal.IWirelessSignalTx; import mods.eln.sixnode.wirelesssignal.WirelessUtils; import net.minecraft.nbt.NBTTagCompound; import java.util.HashMap; import java.util.HashSet; public class WirelessSignalRxProcess implements IProcess, INBTTReady { private WirelessSignalRxElement rx; double sleepTimer = 0; HashMap<String, HashSet<IWirelessSignalTx>> txSet = new HashMap<String, HashSet<IWirelessSignalTx>>(); HashMap<IWirelessSignalTx, Double> txStrength = new HashMap<IWirelessSignalTx, Double>(); public WirelessSignalRxProcess(WirelessSignalRxElement rx) { this.rx = rx; } @Override public void process(double time) { double output; sleepTimer -= time; if (sleepTimer < 0) { sleepTimer += Utils.rand(1.2, 2); IWirelessSignalSpot spot = WirelessUtils.buildSpot(rx.getCoordonate(), rx.channel, 0); WirelessUtils.getTx(spot, txSet, txStrength); } HashSet<IWirelessSignalTx> txs = txSet.get(rx.channel); if (txs == null) { output = 0; rx.setConnection(false); } else { output = rx.getAggregator().aggregate(txs); rx.setConnection(true); } rx.outputGateProcess.setOutputNormalized(output); } @Override public void readFromNBT(NBTTagCompound nbt, String str) { } @Override public void writeToNBT(NBTTagCompound nbt, String str) { } }