package mods.eln.gridnode.electricalpole;
import mods.eln.Eln;
import mods.eln.cable.CableRenderType;
import mods.eln.gridnode.GridRender;
import mods.eln.misc.LRDUMask;
import mods.eln.misc.SlewLimiter;
import mods.eln.node.transparent.TransparentNodeDescriptor;
import mods.eln.node.transparent.TransparentNodeEntity;
import mods.eln.sound.LoopedSound;
import net.minecraft.client.audio.ISound;
import java.io.DataInputStream;
import java.io.IOException;
/**
* Created by svein on 07/08/15.
*/
public class ElectricalPoleRender extends GridRender {
CableRenderType cableRenderType;
LRDUMask eConn = new LRDUMask();
private final ElectricalPoleDescriptor descriptor;
private final SlewLimiter load = new SlewLimiter(0.5f);
public ElectricalPoleRender(TransparentNodeEntity entity, final TransparentNodeDescriptor descriptor) {
super(entity, descriptor);
this.descriptor = (ElectricalPoleDescriptor) descriptor;
if (this.descriptor.includeTransformer) {
addLoopedSound(new LoopedSound("eln:Transformer", coordonate(), ISound.AttenuationType.LINEAR) {
@Override
public float getVolume() {
if (load.getPosition() > ElectricalPoleRender.this.descriptor.minimalLoadToHum)
return 0.05f * (load.getPosition() - ElectricalPoleRender.this.descriptor.minimalLoadToHum) /
(1 - ElectricalPoleRender.this.descriptor.minimalLoadToHum);
else
return 0f;
}
});
}
}
@Override
public void draw() {
super.draw();
cableRenderType = drawCable(front.down(), Eln.instance.stdCableRender3200V, eConn, cableRenderType);
}
@Override
public void networkUnserialize(DataInputStream stream) {
super.networkUnserialize(stream);
eConn.deserialize(stream);
cableRenderType = null;
try {
load.setTarget(stream.readFloat());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void refresh(float deltaT) {
super.refresh(deltaT);
load.step(deltaT);
}
}