package shedar.mods.ic2.nuclearcontrol.gui.controls;
import ic2.core.IC2;
import ic2.core.network.NetworkManager;
import java.lang.reflect.Method;
import ic2.api.network.NetworkHelper;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import shedar.mods.ic2.nuclearcontrol.IC2NuclearControl;
import shedar.mods.ic2.nuclearcontrol.tileentities.TileEntityHowlerAlarm;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class GuiHowlerAlarmSlider extends GuiButton {
private static final String TEXTURE_FILE = "nuclearcontrol:textures/gui/GUIHowlerAlarm.png";
private static final ResourceLocation TEXTURE_LOCATION = new ResourceLocation(TEXTURE_FILE);
public float sliderValue;
public boolean dragging;
private int minValue = 0;
private int maxValue = 256;
private int step = 8;
private String label;
private TileEntityHowlerAlarm alarm;
public GuiHowlerAlarmSlider(int id, int x, int y, String label, TileEntityHowlerAlarm alarm) {
super(id, x, y, 107, 16, label);
this.alarm = alarm;
dragging = false;
this.label = label;
if (alarm.getWorldObj().isRemote)
maxValue = IC2NuclearControl.instance.maxAlarmRange;
int currentRange = alarm.getRange();
if (alarm.getWorldObj().isRemote && currentRange > maxValue)
currentRange = maxValue;
sliderValue = ((float) currentRange - minValue) / (maxValue - minValue);
displayString = String.format(label, getNormalizedValue());
}
private int getNormalizedValue() {
return (minValue + (int) Math.floor((maxValue - minValue) * sliderValue)) / step * step;
}
private void setSliderPos(int targetX) {
sliderValue = (float) (targetX - (xPosition + 4)) / (float) (width - 8);
if (sliderValue < 0.0F)
sliderValue = 0.0F;
if (sliderValue > 1.0F)
sliderValue = 1.0F;
int newValue = getNormalizedValue();
if (alarm.getRange() != newValue) {
//alarm.setRange(newValue);
((NetworkManager)IC2.network.get()).initiateClientTileEntityEvent(alarm, newValue);
}
displayString = String.format(label, newValue);
}
@Override
public void drawButton(Minecraft minecraft, int targetX, int targetY) {
if (visible) {
minecraft.renderEngine.bindTexture(TEXTURE_LOCATION);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
if (dragging)
setSliderPos(targetX);
drawTexturedModalRect(xPosition + (int) (sliderValue * (width - 8)), yPosition, 131, 0, 8, 16);
minecraft.fontRenderer.drawString(displayString, xPosition, yPosition - 12, 0x404040);
}
}
@Override
public boolean mousePressed(Minecraft minecraft, int targetX, int j) {
if (super.mousePressed(minecraft, targetX, j)) {
setSliderPos(targetX);
dragging = true;
return true;
}else
return false;
}
@Override
public void mouseReleased(int i, int j) {
super.mouseReleased(i, j);
dragging = false;
}
}