package crazypants.enderio.gui; import com.enderio.core.api.client.gui.IGuiScreen; import com.enderio.core.client.gui.button.CycleButton; import com.enderio.core.common.util.BlockCoord; import crazypants.enderio.EnderIO; import crazypants.enderio.machine.IRedstoneModeControlable; import crazypants.enderio.machine.PacketRedstoneMode; import crazypants.enderio.machine.RedstoneControlMode; import crazypants.enderio.network.PacketHandler; public class RedstoneModeButton extends CycleButton<RedstoneControlMode> { private IRedstoneModeControlable model; private BlockCoord bc; private String tooltipKey = "enderio.gui.tooltip.redstoneControlMode"; public RedstoneModeButton(IGuiScreen gui, int id, int x, int y, IRedstoneModeControlable model) { this(gui, id, x, y, model, null); } public RedstoneModeButton(IGuiScreen gui, int id, int x, int y, IRedstoneModeControlable model, BlockCoord bc) { super(gui, id, x, y, RedstoneControlMode.class); this.model = model; this.bc = bc; setMode(model.getRedstoneControlMode()); } public void setMode(RedstoneControlMode newMode) { if (model == null) { return; } super.setMode(newMode); model.setRedstoneControlMode(getMode()); if (bc != null) { PacketHandler.INSTANCE.sendToServer(new PacketRedstoneMode(model, bc.x, bc.y, bc.z)); } setTooltipKey(tooltipKey); // forces our behavior } public void setTooltipKey(String key) { tooltipKey = key; setToolTip(EnderIO.lang.localizeExact(tooltipKey), getMode().getTooltip()); } }