diff --git a/src/main/java/gregtech/api/cover/CoverWithUI.java b/src/main/java/gregtech/api/cover/CoverWithUI.java index 7ddf250bbca..2ad525d3e3e 100644 --- a/src/main/java/gregtech/api/cover/CoverWithUI.java +++ b/src/main/java/gregtech/api/cover/CoverWithUI.java @@ -1,11 +1,22 @@ package gregtech.api.cover; +import com.cleanroommc.modularui.utils.Alignment; +import com.cleanroommc.modularui.utils.MouseData; +import com.cleanroommc.modularui.widget.Widget; +import com.cleanroommc.modularui.widgets.ToggleButton; + import gregtech.api.gui.IUIHolder; import gregtech.api.gui.ModularUI; +import gregtech.api.mui.GTGuiTextures; import gregtech.api.mui.GTGuiTheme; import gregtech.api.mui.GregTechGuiScreen; import gregtech.api.mui.factory.CoverGuiFactory; +import gregtech.common.covers.CoverConveyor; +import gregtech.common.covers.FluidFilterMode; +import gregtech.common.covers.ItemFilterMode; +import gregtech.common.covers.ManualImportExportMode; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; @@ -107,6 +118,97 @@ default ParentWidget<?> createSettingsRow() { return new ParentWidget<>().height(16).widthRel(1.0f).marginBottom(2); } + default Widget<ToggleButton> createManualIoButton(EnumSyncValue<ManualImportExportMode> value, ManualImportExportMode mode) { + return new ToggleButton().size(18) + .marginRight(2) + .value(boolValueOf(value, mode)) + .background(GTGuiTextures.MC_BUTTON_DISABLED) + .selectedBackground(GTGuiTextures.MC_BUTTON) + .overlay(GTGuiTextures.MANUAL_IO_OVERLAY[mode.ordinal()]) + .addTooltipLine(switch (mode) { + case DISABLED -> IKey.lang("cover.universal.manual_import_export.mode.disabled"); + case UNFILTERED -> IKey.lang("cover.universal.manual_import_export.mode.unfiltered"); + case FILTERED -> IKey.lang("cover.universal.manual_import_export.mode.filtered"); + }); + } + + + default Widget<ToggleButton> createConveyorModeButton(EnumSyncValue<CoverConveyor.ConveyorMode> value, CoverConveyor.ConveyorMode mode) { + return new ToggleButton().size(18) + .marginRight(2) + .value(boolValueOf(value, mode)) + .background(GTGuiTextures.MC_BUTTON_DISABLED) + .selectedBackground(GTGuiTextures.MC_BUTTON) + .overlay(GTGuiTextures.CONVEYOR_MODE_OVERLAY[mode.ordinal()]) + .addTooltipLine(switch (mode) { + case EXPORT -> IKey.lang("cover.conveyor.mode.export"); + case IMPORT -> IKey.lang("cover.conveyor.mode.import"); + }); + } + + default Row createItemFilterModeRow(EnumSyncValue<ItemFilterMode> filteringMode) { + return new Row().coverChildrenHeight() + .widthRel(1f).left(0) + .child(createItemFilterModeButton(filteringMode, ItemFilterMode.FILTER_INSERT)) + .child(createItemFilterModeButton(filteringMode, ItemFilterMode.FILTER_EXTRACT)) + .child(createItemFilterModeButton(filteringMode, ItemFilterMode.FILTER_BOTH)) + .child(IKey.str("Filter Mode").asWidget().align(Alignment.CenterRight)); + } + + default Widget<ToggleButton> createItemFilterModeButton(EnumSyncValue<ItemFilterMode> value, ItemFilterMode mode) { + return new ToggleButton().size(18) + .value(boolValueOf(value, mode)) + .background(GTGuiTextures.MC_BUTTON_DISABLED) + .selectedBackground(GTGuiTextures.MC_BUTTON) + .marginRight(2) +// .overlay(GTGuiTextures.MANUAL_IO_OVERLAY[mode.ordinal()]) todo new overlays + .addTooltipLine(IKey.lang(mode.localeName)); + } + + default Row createFluidFilterModeRow(EnumSyncValue<FluidFilterMode> filteringMode) { + return new Row().coverChildrenHeight() + .widthRel(1f).left(0) + .child(createFluidFilterModeButton(filteringMode, FluidFilterMode.FILTER_FILL)) + .child(createFluidFilterModeButton(filteringMode, FluidFilterMode.FILTER_DRAIN)) + .child(createFluidFilterModeButton(filteringMode, FluidFilterMode.FILTER_BOTH)) + .child(IKey.str("Filter Mode").asWidget().align(Alignment.CenterRight)); + } + + default Widget<ToggleButton> createFluidFilterModeButton(EnumSyncValue<FluidFilterMode> value, FluidFilterMode mode) { + return new ToggleButton().size(18) + .value(boolValueOf(value, mode)) + .background(GTGuiTextures.MC_BUTTON_DISABLED) + .selectedBackground(GTGuiTextures.MC_BUTTON) + .marginRight(2) +// .overlay(GTGuiTextures.MANUAL_IO_OVERLAY[mode.ordinal()]) todo new overlays + .addTooltipLine(IKey.lang(mode.localeName)); + } + + default int getIncrementValue(MouseData data) { + int adjust = 1; + if (data.shift) adjust *= 4; + if (data.ctrl) adjust *= 16; + if (data.alt) adjust *= 64; + return adjust; + } + + default IKey createAdjustOverlay(boolean increment) { + final StringBuilder builder = new StringBuilder(); + builder.append(increment ? '+' : '-'); + builder.append(getIncrementValue(MouseData.create(-1))); + + float scale = 1f; + if (builder.length() == 3) { + scale = 0.8f; + } else if (builder.length() == 4) { + scale = 0.6f; + } else if (builder.length() > 4) { + scale = 0.5f; + } + return IKey.str(builder.toString()) + .scale(scale); + } + /** * Get a BoolValue for use with toggle buttons which are "linked together," * meaning only one of them can be pressed at a time. diff --git a/src/main/java/gregtech/common/covers/CoverConveyor.java b/src/main/java/gregtech/common/covers/CoverConveyor.java index 6dc0537f1db..f637c98d967 100644 --- a/src/main/java/gregtech/common/covers/CoverConveyor.java +++ b/src/main/java/gregtech/common/covers/CoverConveyor.java @@ -606,58 +606,6 @@ protected ParentWidget<Column> createUI(ModularPanel mainPanel, GuiSyncManager g .height(18))); } - private Widget<ToggleButton> createManualIoButton(EnumSyncValue<ManualImportExportMode> value, ManualImportExportMode mode) { - return new ToggleButton().size(18) - .marginRight(2) - .value(boolValueOf(value, mode)) - .background(GTGuiTextures.MC_BUTTON_DISABLED) - .selectedBackground(GTGuiTextures.MC_BUTTON) - .overlay(GTGuiTextures.MANUAL_IO_OVERLAY[mode.ordinal()]) - .addTooltipLine(switch (mode) { - case DISABLED -> IKey.lang("cover.universal.manual_import_export.mode.disabled"); - case UNFILTERED -> IKey.lang("cover.universal.manual_import_export.mode.unfiltered"); - case FILTERED -> IKey.lang("cover.universal.manual_import_export.mode.filtered"); - }); - } - - private Widget<ToggleButton> createConveyorModeButton(EnumSyncValue<ConveyorMode> value, ConveyorMode mode) { - return new ToggleButton().size(18) - .marginRight(2) - .value(boolValueOf(value, mode)) - .background(GTGuiTextures.MC_BUTTON_DISABLED) - .selectedBackground(GTGuiTextures.MC_BUTTON) - .overlay(GTGuiTextures.CONVEYOR_MODE_OVERLAY[mode.ordinal()]) - .addTooltipLine(switch (mode) { - case EXPORT -> IKey.lang("cover.conveyor.mode.export"); - case IMPORT -> IKey.lang("cover.conveyor.mode.import"); - }); - } - - protected int getIncrementValue(MouseData data) { - int adjust = 1; - if (data.shift) adjust *= 4; - if (data.ctrl) adjust *= 16; - if (data.alt) adjust *= 64; - return adjust; - } - - protected IKey createAdjustOverlay(boolean increment) { - final StringBuilder builder = new StringBuilder(); - builder.append(increment ? '+' : '-'); - builder.append(getIncrementValue(MouseData.create(-1))); - - float scale = 1f; - if (builder.length() == 3) { - scale = 0.8f; - } else if (builder.length() == 4) { - scale = 0.6f; - } else if (builder.length() > 4) { - scale = 0.5f; - } - return IKey.str(builder.toString()) - .scale(scale); - } - protected int getMaxStackSize() { return 1; } diff --git a/src/main/java/gregtech/common/covers/CoverFluidFilter.java b/src/main/java/gregtech/common/covers/CoverFluidFilter.java index 038983c7015..2742df9ad7e 100644 --- a/src/main/java/gregtech/common/covers/CoverFluidFilter.java +++ b/src/main/java/gregtech/common/covers/CoverFluidFilter.java @@ -1,5 +1,12 @@ package gregtech.common.covers; +import com.cleanroommc.modularui.drawable.Rectangle; + +import com.cleanroommc.modularui.utils.Alignment; +import com.cleanroommc.modularui.value.sync.EnumSyncValue; + +import com.cleanroommc.modularui.widgets.layout.Column; + import gregtech.api.capability.impl.FluidHandlerDelegate; import gregtech.api.cover.CoverBase; import gregtech.api.cover.CoverDefinition; @@ -147,9 +154,16 @@ public boolean usesMui2() { @Override public ModularPanel buildUI(SidedPosGuiData guiData, GuiSyncManager guiSyncManager) { - return getFluidFilter().createPanel(guiSyncManager).padding(7) + var filteringMode = new EnumSyncValue<>(FluidFilterMode.class, this::getFilterMode, this::setFilterMode); + + return getFluidFilter().createPanel(guiSyncManager) + .size(176, 194).padding(7) .child(CoverWithUI.createTitleRow(getPickItem())) - .child(getFluidFilter().createWidgets(guiSyncManager).top(22)) + .child(new Column().widthRel(1f).align(Alignment.TopLeft).top(22).coverChildrenHeight() + .child(createFluidFilterModeRow(filteringMode)) + .child(new Rectangle().setColor(UI_TEXT_COLOR).asWidget() + .height(1).widthRel(0.95f).margin(0, 4)) + .child(getFluidFilter().createWidgets(guiSyncManager))) .child(SlotGroupWidget.playerInventory(0).bottom(7).left(7)); } diff --git a/src/main/java/gregtech/common/covers/CoverItemFilter.java b/src/main/java/gregtech/common/covers/CoverItemFilter.java index 0f253f1b376..62bb5a66d9c 100644 --- a/src/main/java/gregtech/common/covers/CoverItemFilter.java +++ b/src/main/java/gregtech/common/covers/CoverItemFilter.java @@ -162,32 +162,13 @@ public ModularPanel buildUI(SidedPosGuiData guiData, GuiSyncManager guiSyncManag .size(176, 194).padding(7) .child(CoverWithUI.createTitleRow(getPickItem()).left(4)) .child(new Column().widthRel(1f).align(Alignment.TopLeft).top(22).coverChildrenHeight() - .child(new Row().coverChildrenHeight() - .widthRel(1f).left(0) - .child(createFilterModeButton(filteringMode, ItemFilterMode.FILTER_INSERT)) - .child(createFilterModeButton(filteringMode, ItemFilterMode.FILTER_EXTRACT)) - .child(createFilterModeButton(filteringMode, ItemFilterMode.FILTER_BOTH)) - .child(IKey.str("Filter Mode").asWidget().align(Alignment.CenterRight))) + .child(createItemFilterModeRow(filteringMode)) .child(new Rectangle().setColor(UI_TEXT_COLOR).asWidget() .height(1).widthRel(0.95f).margin(0, 4)) .child(getItemFilter().createWidgets(guiSyncManager).left(0))) .child(SlotGroupWidget.playerInventory(0).bottom(7).left(7)); } - private Widget<ToggleButton> createFilterModeButton(EnumSyncValue<ItemFilterMode> value, ItemFilterMode mode) { - return new ToggleButton().size(18) - .value(boolValueOf(value, mode)) - .background(GTGuiTextures.MC_BUTTON_DISABLED) - .selectedBackground(GTGuiTextures.MC_BUTTON) - .marginRight(2) -// .overlay(GTGuiTextures.MANUAL_IO_OVERLAY[mode.ordinal()]) todo new overlays - .addTooltipLine(switch (mode) { - case FILTER_INSERT -> IKey.lang("cover.universal.manual_import_export.mode.disabled"); - case FILTER_EXTRACT -> IKey.lang("cover.universal.manual_import_export.mode.unfiltered"); - case FILTER_BOTH -> IKey.lang("cover.universal.manual_import_export.mode.filtered"); - }); - } - @Override public void renderCover(CCRenderState renderState, Matrix4 translation, IVertexOperation[] pipeline, Cuboid6 plateBox, BlockRenderLayer layer) { diff --git a/src/main/java/gregtech/common/covers/CoverPump.java b/src/main/java/gregtech/common/covers/CoverPump.java index a626a325566..aea1769028b 100644 --- a/src/main/java/gregtech/common/covers/CoverPump.java +++ b/src/main/java/gregtech/common/covers/CoverPump.java @@ -321,67 +321,6 @@ protected ParentWidget<?> createUI(ModularPanel mainPanel, GuiSyncManager syncMa .height(18))); } - private Widget<ToggleButton> createManualIoButton(EnumSyncValue<ManualImportExportMode> value, ManualImportExportMode mode) { - return new ToggleButton().size(18) - .value(boolValueOf(value, mode)) - .background(GTGuiTextures.MC_BUTTON_DISABLED) - .selectedBackground(GTGuiTextures.MC_BUTTON) - .overlay(GTGuiTextures.MANUAL_IO_OVERLAY[mode.ordinal()]) - .addTooltipLine(switch (mode) { - case DISABLED -> IKey.lang("cover.universal.manual_import_export.mode.disabled"); - case UNFILTERED -> IKey.lang("cover.universal.manual_import_export.mode.unfiltered"); - case FILTERED -> IKey.lang("cover.universal.manual_import_export.mode.filtered"); - }); - } - - protected int getIncrementValue(MouseData data) { - int adjust = 1; - if (data.shift) adjust *= 4; - if (data.ctrl) adjust *= 16; - if (data.alt) adjust *= 64; - return adjust; - } - - protected IKey createAdjustOverlay(boolean increment) { - final StringBuilder builder = new StringBuilder(); - builder.append(increment ? '+' : '-'); - builder.append(getIncrementValue(MouseData.create(-1))); - - float scale = 1f; - if (builder.length() == 3) { - scale = 0.8f; - } else if (builder.length() == 4) { - scale = 0.6f; - } else if (builder.length() > 4) { - scale = 0.5f; - } - return IKey.str(builder.toString()) - .scale(scale); - } - - public static Function<String, String> getTextFieldValidator(IntSupplier maxSupplier) { - int min = 1; - return val -> { - if (val.isEmpty()) { - return String.valueOf(min); - } - int max = maxSupplier.getAsInt(); - int num; - try { - num = Integer.parseInt(val); - } catch (NumberFormatException ignored) { - return String.valueOf(max); - } - if (num < min) { - return String.valueOf(min); - } - if (num > max) { - return String.valueOf(max); - } - return val; - }; - } - @Override public @NotNull EnumActionResult onScrewdriverClick(@NotNull EntityPlayer playerIn, @NotNull EnumHand hand, @NotNull CuboidRayTraceResult hitResult) {