package openblocks.client.gui; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.ForgeDirection; import openblocks.common.container.ContainerVacuumHopper; import openblocks.common.tileentity.TileEntityVacuumHopper; import openmods.gui.SyncedGuiContainer; import openmods.gui.component.BaseComposite; import openmods.gui.component.GuiComponentLabel; import openmods.gui.component.GuiComponentSideSelector; import openmods.gui.component.GuiComponentSideSelector.ISideSelectedListener; import openmods.gui.component.GuiComponentTab; import openmods.gui.component.GuiComponentTabWrapper; import openmods.gui.component.GuiComponentTankLevel; import openmods.gui.logic.ValueCopyAction; import openmods.utils.bitmap.IReadableBitMap; import openmods.utils.bitmap.IWriteableBitMap; public class GuiVacuumHopper extends SyncedGuiContainer<ContainerVacuumHopper> { public GuiVacuumHopper(ContainerVacuumHopper container) { super(container, 176, 151, "openblocks.gui.vacuumhopper"); } @Override protected BaseComposite createRoot() { final TileEntityVacuumHopper te = getContainer().getOwner(); BaseComposite main = super.createRoot(); final GuiComponentTankLevel tankLevel = new GuiComponentTankLevel(140, 18, 17, 37, TileEntityVacuumHopper.TANK_CAPACITY); addSyncUpdateListener(ValueCopyAction.create(te.getFluidProvider(), tankLevel.fluidReceiver())); main.addComponent(tankLevel); GuiComponentTabWrapper tabs = new GuiComponentTabWrapper(0, 0, main); { GuiComponentTab itemTab = new GuiComponentTab(StandardPalette.lightblue.getColor(), new ItemStack(Blocks.chest), 100, 100); final GuiComponentSideSelector sideSelector = new GuiComponentSideSelector(15, 15, 40.0, null, 0, te, false); wireSideSelector(sideSelector, te.getReadableItemOutputs(), te.getWriteableItemOutputs()); itemTab.addComponent(new GuiComponentLabel(24, 10, StatCollector.translateToLocal("openblocks.gui.item_outputs"))); itemTab.addComponent(sideSelector); tabs.addComponent(itemTab); } { GuiComponentTab xpTab = new GuiComponentTab(StandardPalette.blue.getColor(), new ItemStack(Items.experience_bottle, 1), 100, 100); GuiComponentSideSelector sideSelector = new GuiComponentSideSelector(15, 15, 40.0, null, 0, te, false); wireSideSelector(sideSelector, te.getReadableXpOutputs(), te.getWriteableXpOutputs()); xpTab.addComponent(sideSelector); xpTab.addComponent(new GuiComponentLabel(24, 10, StatCollector.translateToLocal("openblocks.gui.xp_outputs"))); tabs.addComponent(xpTab); } return tabs; } private static void wireSideSelector(final GuiComponentSideSelector sideSelector, final IReadableBitMap<ForgeDirection> readableSides, final IWriteableBitMap<ForgeDirection> writeableSides) { sideSelector.setListener(new ISideSelectedListener() { @Override public void onSideToggled(ForgeDirection side, boolean currentState) { writeableSides.toggle(side); } }); } }