package mods.eln.transparentnode.powerinductor;
import mods.eln.misc.Direction;
import mods.eln.misc.LRDU;
import mods.eln.misc.Utils;
import mods.eln.node.transparent.TransparentNode;
import mods.eln.node.transparent.TransparentNodeDescriptor;
import mods.eln.node.transparent.TransparentNodeElement;
import mods.eln.node.transparent.TransparentNodeElementInventory;
import mods.eln.sim.ElectricalLoad;
import mods.eln.sim.ThermalLoad;
import mods.eln.sim.mna.component.Inductor;
import mods.eln.sim.nbt.NbtElectricalLoad;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.nbt.NBTTagCompound;
import java.io.DataInputStream;
public class PowerInductorElement extends TransparentNodeElement {
PowerInductorDescriptor descriptor;
NbtElectricalLoad positiveLoad = new NbtElectricalLoad("positiveLoad");
NbtElectricalLoad negativeLoad = new NbtElectricalLoad("negativeLoad");
Inductor inductor = new Inductor("inductor", positiveLoad, negativeLoad);
public PowerInductorElement(TransparentNode transparentNode,
TransparentNodeDescriptor descriptor) {
super(transparentNode, descriptor);
this.descriptor = (PowerInductorDescriptor) descriptor;
electricalLoadList.add(positiveLoad);
electricalLoadList.add(negativeLoad);
electricalComponentList.add(inductor);
positiveLoad.setAsMustBeFarFromInterSystem();
}
@Override
public ElectricalLoad getElectricalLoad(Direction side, LRDU lrdu) {
if (lrdu != LRDU.Down) return null;
if (side == front.left()) return positiveLoad;
if (side == front.right()) return negativeLoad;
return null;
}
@Override
public ThermalLoad getThermalLoad(Direction side, LRDU lrdu) {
return null;
}
@Override
public int getConnectionMask(Direction side, LRDU lrdu) {
if (lrdu != LRDU.Down) return 0;
if (side == front.left()) return node.maskElectricalPower;
if (side == front.right()) return node.maskElectricalPower;
return 0;
}
@Override
public String multiMeterString(Direction side) {
return Utils.plotAmpere("I", inductor.getCurrent());
}
@Override
public String thermoMeterString(Direction side) {
return null;
}
@Override
public void initialize() {
//Eln.applySmallRs(positiveLoad);
//Eln.applySmallRs(negativeLoad);
setupPhysical();
connect();
}
@Override
public void inventoryChange(IInventory inventory) {
super.inventoryChange(inventory);
setupPhysical();
}
boolean fromNbt = false;
public void setupPhysical() {
double rs = descriptor.getRsValue(inventory);
inductor.setL(descriptor.getlValue(inventory));
positiveLoad.setRs(rs);
negativeLoad.setRs(rs);
if (fromNbt) {
fromNbt = false;
} else {
inductor.resetStates();
}
}
@Override
public boolean onBlockActivated(EntityPlayer entityPlayer, Direction side,
float vx, float vy, float vz) {
return false;
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
fromNbt = true;
}
public void networkSerialize(java.io.DataOutputStream stream) {
super.networkSerialize(stream);
/*
* try {
*
*
* } catch (IOException e) {
*
* e.printStackTrace(); }
*/
}
public static final byte unserializePannelAlpha = 0;
public byte networkUnserialize(DataInputStream stream) {
byte packetType = super.networkUnserialize(stream);
/*
* try { switch(packetType) {
*
*
* default: return packetType; } } catch (IOException e) {
*
* e.printStackTrace(); }
*/
return unserializeNulldId;
}
TransparentNodeElementInventory inventory = new TransparentNodeElementInventory(2, 64, this);
@Override
public IInventory getInventory() {
return inventory;
}
@Override
public boolean hasGui() {
return true;
}
@Override
public Container newContainer(Direction side, EntityPlayer player) {
return new PowerInductorContainer(player, inventory);
}
}