Skip to content

Commit

Permalink
move common methods to CoverWithUI
Browse files Browse the repository at this point in the history
more work on ui
  • Loading branch information
ghzdude committed Jan 15, 2024
1 parent 4ae1a33 commit c379aa9
Show file tree
Hide file tree
Showing 5 changed files with 119 additions and 135 deletions.
102 changes: 102 additions & 0 deletions src/main/java/gregtech/api/cover/CoverWithUI.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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.
Expand Down
52 changes: 0 additions & 52 deletions src/main/java/gregtech/common/covers/CoverConveyor.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down
18 changes: 16 additions & 2 deletions src/main/java/gregtech/common/covers/CoverFluidFilter.java
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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));
}

Expand Down
21 changes: 1 addition & 20 deletions src/main/java/gregtech/common/covers/CoverItemFilter.java
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
61 changes: 0 additions & 61 deletions src/main/java/gregtech/common/covers/CoverPump.java
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down

0 comments on commit c379aa9

Please sign in to comment.