package shedar.mods.ic2.nuclearcontrol.gui.controls; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiButton; import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; import shedar.mods.ic2.nuclearcontrol.api.PanelSetting; import shedar.mods.ic2.nuclearcontrol.tileentities.TileEntityInfoPanel; import shedar.mods.ic2.nuclearcontrol.utils.NuclearNetworkHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class GuiInfoPanelCheckBox extends GuiButton { private static final String TEXTURE_FILE = "nuclearcontrol:textures/gui/GUIInfoPanel.png"; private static final ResourceLocation TEXTURE_LOCATION = new ResourceLocation(TEXTURE_FILE); private TileEntityInfoPanel panel; private boolean checked; private PanelSetting setting; private byte slot; public GuiInfoPanelCheckBox(int id, int x, int y, PanelSetting setting, TileEntityInfoPanel panel, byte slot, FontRenderer renderer) { super(id, x, y, 0, 0, setting.title); this.setting = setting; this.slot = slot; height = renderer.FONT_HEIGHT + 1; width = renderer.getStringWidth(setting.title) + 8; this.panel = panel; } @Override public void drawButton(Minecraft minecraft, int par2, int par3) { if (this.visible) { checked = (panel.getDisplaySettingsForCardInSlot(slot) & setting.displayBit) > 0; minecraft.renderEngine.bindTexture(TEXTURE_LOCATION); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); int delta = checked ? 6 : 0; drawTexturedModalRect(xPosition, yPosition + 1, 176, delta, 6, 6); minecraft.fontRenderer.drawString(displayString, xPosition + 8, yPosition, 0x404040); } } @Override public int getHoverState(boolean flag) { return 0; } @Override public boolean mousePressed(Minecraft minecraft, int mouseX, int mouseY) { if(super.mousePressed(minecraft, mouseX, mouseY)){ checked = !checked; int value; if (checked) value = panel.getDisplaySettingsForCardInSlot(slot) | setting.displayBit; else value = panel.getDisplaySettingsForCardInSlot(slot) & (~setting.displayBit); NuclearNetworkHelper.setDisplaySettings(panel, slot, value); panel.setDisplaySettings(slot, value); return true; }else return false; } }