Skip to content

Commit e7969e3

Browse files
committed
Reduce capturing lambdas for various parts of gui code interaction
1 parent 4f5ef0e commit e7969e3

File tree

74 files changed

+583
-394
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+583
-394
lines changed

src/generators/java/mekanism/generators/client/gui/GuiFissionReactor.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ protected void addGuiElements() {
8181
return Collections.singletonList(MekanismLang.DISSIPATED_RATE.translate(environment));
8282
}));
8383
activateButton = addRenderableWidget(new TranslationButton(this, 6, 75, 81, 16, GeneratorsLang.FISSION_ACTIVATE,
84-
() -> PacketUtils.sendToServer(new PacketGeneratorsGuiInteract(GeneratorsGuiInteraction.FISSION_ACTIVE, tile, 1)), null,
85-
() -> EnumColor.DARK_GREEN) {
84+
(element, mouseX, mouseY) -> PacketUtils.sendToServer(new PacketGeneratorsGuiInteract(GeneratorsGuiInteraction.FISSION_ACTIVE,
85+
((GuiFissionReactor) element.gui()).tile, 1)), null, () -> EnumColor.DARK_GREEN) {
8686
@Override
8787
public void renderForeground(GuiGraphics guiGraphics, int mouseX, int mouseY) {
8888
super.renderForeground(guiGraphics, mouseX, mouseY);
@@ -102,8 +102,8 @@ public void renderForeground(GuiGraphics guiGraphics, int mouseX, int mouseY) {
102102
}
103103
});
104104
scramButton = addRenderableWidget(new TranslationButton(this, 89, 75, 81, 16, GeneratorsLang.FISSION_SCRAM,
105-
() -> PacketUtils.sendToServer(new PacketGeneratorsGuiInteract(GeneratorsGuiInteraction.FISSION_ACTIVE, tile, 0)), null,
106-
() -> EnumColor.DARK_RED));
105+
(element, mouseX, mouseY) -> PacketUtils.sendToServer(new PacketGeneratorsGuiInteract(GeneratorsGuiInteraction.FISSION_ACTIVE,
106+
((GuiFissionReactor) element.gui()).tile, 0)), null, () -> EnumColor.DARK_RED));
107107
addRenderableWidget(new GuiBigLight(this, 173, 76, tile.getMultiblock()::isActive));
108108
addRenderableWidget(new GuiDynamicHorizontalRateBar(this, new IBarInfoHandler() {
109109
@Override

src/generators/java/mekanism/generators/client/gui/GuiFusionReactorInfo.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ protected GuiFusionReactorInfo(EmptyTileContainer<TileEntityFusionReactorControl
3030
protected void addGuiElements() {
3131
super.addGuiElements();
3232
addRenderableWidget(new MekanismImageButton(this, 6, 6, 14, getButtonLocation("back"),
33-
() -> PacketUtils.sendToServer(new PacketTileButtonPress(ClickedTileButton.BACK_BUTTON, tile)), getOnHover(MekanismLang.BACK)));
33+
(element, mouseX, mouseY) -> PacketUtils.sendToServer(new PacketTileButtonPress(ClickedTileButton.BACK_BUTTON, ((GuiFusionReactorInfo) element.gui()).tile)),
34+
(element, graphics, mouseX, mouseY) -> element.displayTooltips(graphics, mouseX, mouseY, MekanismLang.BACK.translate())));
3435
addRenderableWidget(new GuiEnergyTab(this, () -> {
3536
FusionReactorMultiblockData multiblock = tile.getMultiblock();
3637
return List.of(MekanismLang.STORING.translate(EnergyDisplay.of(multiblock.energyContainer)),

src/generators/java/mekanism/generators/client/gui/GuiFusionReactorLogicAdapter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ protected void addGuiElements() {
3737
super.addGuiElements();
3838
addRenderableWidget(new GuiElementHolder(this, 16, 31, 130, 90));
3939
addRenderableWidget(new ToggleButton(this, 16, 19, 11, tile::isActiveCooled,
40-
() -> PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.NEXT_MODE, tile)), getOnHover(GeneratorsLang.REACTOR_LOGIC_TOGGLE_COOLING)));
40+
(element, mouseX, mouseY) -> PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.NEXT_MODE, ((GuiFusionReactorLogicAdapter) element.gui()).tile)),
41+
(element, graphics, mouseX, mouseY) -> element.displayTooltips(graphics, mouseX, mouseY, GeneratorsLang.REACTOR_LOGIC_TOGGLE_COOLING.translate())));
4142
scrollBar = addRenderableWidget(new GuiScrollBar(this, 146, 31, 90, () -> tile.getModes().length, () -> DISPLAY_COUNT));
4243
for (int i = 0; i < DISPLAY_COUNT; i++) {
4344
int typeShift = 22 * i;

src/generators/java/mekanism/generators/client/gui/element/button/ReactorLogicButton.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class ReactorLogicButton<TYPE extends Enum<TYPE> & IReactorLogicMode<TYPE
2525
private final IReactorLogic<TYPE> tile;
2626
private final int typeOffset;
2727
private final Supplier<@Nullable TYPE> modeSupplier;
28+
private final Consumer<TYPE> onPress;
2829

2930

3031
public ReactorLogicButton(IGuiWrapper gui, int x, int y, int index, @NotNull IReactorLogic<TYPE> tile, IntSupplier indexSupplier, Supplier<TYPE[]> modeList,
@@ -37,22 +38,26 @@ public ReactorLogicButton(IGuiWrapper gui, int x, int y, int index, @NotNull IRe
3738
}
3839

3940
private ReactorLogicButton(IGuiWrapper gui, int x, int y, int index, @NotNull IReactorLogic<TYPE> tile, Consumer<TYPE> onPress, Supplier<@Nullable TYPE> modeSupplier) {
40-
super(gui, x, y, 128, 22, Component.empty(), () -> {
41-
TYPE mode = modeSupplier.get();
41+
super(gui, x, y, 128, 22, Component.empty(), (element, mouseX, mouseY) -> ((ReactorLogicButton<?>) element).click(), (element, guiGraphics, mouseX, mouseY) -> {
42+
IReactorLogicMode<?> mode = ((ReactorLogicButton<?>) element).modeSupplier.get();
4243
if (mode != null) {
43-
onPress.accept(mode);
44-
}
45-
}, (onHover, guiGraphics, mouseX, mouseY) -> {
46-
TYPE mode = modeSupplier.get();
47-
if (mode != null) {
48-
gui.displayTooltips(guiGraphics, mouseX, mouseY, mode.getDescription());
44+
element.displayTooltips(guiGraphics, mouseX, mouseY, mode.getDescription());
4945
}
5046
});
47+
this.onPress = onPress;
5148
this.typeOffset = 22 * index;
5249
this.modeSupplier = modeSupplier;
5350
this.tile = tile;
5451
}
5552

53+
private boolean click() {
54+
TYPE mode = modeSupplier.get();
55+
if (mode != null) {
56+
onPress.accept(mode);
57+
}
58+
return true;
59+
}
60+
5661
@Override
5762
public void drawBackground(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) {
5863
TYPE mode = modeSupplier.get();

src/main/java/mekanism/client/gui/GuiDimensionalStabilizer.java

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,20 @@ protected void addGuiElements() {
5050
int shiftedZ = z + TileEntityDimensionalStabilizer.MAX_LOAD_RADIUS;
5151
int chunkZ = tileChunkZ + z;
5252
if (x == 0 && z == 0) {
53-
addRenderableWidget(BasicColorButton.renderActive(this, 63 + 10 * shiftedX, 19 + 10 * shiftedZ, 10, EnumColor.DARK_BLUE, () -> {
53+
addRenderableWidget(BasicColorButton.renderActive(this, 63 + 10 * shiftedX, 19 + 10 * shiftedZ, 10, EnumColor.DARK_BLUE, (element, mouseX, mouseY) -> {
5454
for (int i = 1; i <= TileEntityDimensionalStabilizer.MAX_LOAD_RADIUS; i++) {
5555
if (hasAtRadius(i, false)) {
56-
PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.ENABLE_RADIUS_CHUNKLOAD, tile, i));
57-
break;
56+
return PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.ENABLE_RADIUS_CHUNKLOAD, tile, i));
5857
}
5958
}
60-
}, () -> {
59+
return false;
60+
}, (element, mouseX, mouseY) -> {
6161
for (int i = TileEntityDimensionalStabilizer.MAX_LOAD_RADIUS; i > 0; i--) {
6262
if (hasAtRadius(i, true)) {
63-
PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.DISABLE_RADIUS_CHUNKLOAD, tile, i));
64-
break;
63+
return PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.DISABLE_RADIUS_CHUNKLOAD, tile, i));
6564
}
6665
}
66+
return false;
6767
}, (onHover, guiGraphics, mouseX, mouseY) -> {
6868
List<Component> tooltips = new ArrayList<>();
6969
tooltips.add(MekanismLang.STABILIZER_CENTER.translate(EnumColor.INDIGO, chunkX, EnumColor.INDIGO, chunkZ));
@@ -86,15 +86,17 @@ protected void addGuiElements() {
8686
break;
8787
}
8888
}
89-
displayTooltips(guiGraphics, mouseX, mouseY, tooltips);
89+
onHover.displayTooltips(guiGraphics, mouseX, mouseY, tooltips);
9090
}));
9191
} else {
9292
int packetTarget = shiftedX * TileEntityDimensionalStabilizer.MAX_LOAD_DIAMETER + shiftedZ;
9393
addRenderableWidget(BasicColorButton.toggle(this, 63 + 10 * shiftedX, 19 + 10 * shiftedZ, 10, EnumColor.DARK_BLUE,
9494
() -> tile.isChunkLoadingAt(shiftedX, shiftedZ),
95-
() -> PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.TOGGLE_CHUNKLOAD, tile, packetTarget)),
96-
getOnHover(() -> MekanismLang.STABILIZER_TOGGLE_LOADING.translate(OnOff.of(tile.isChunkLoadingAt(shiftedX, shiftedZ), true),
97-
EnumColor.INDIGO, chunkX, EnumColor.INDIGO, chunkZ))));
95+
(element, mouseX, mouseY) -> PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.TOGGLE_CHUNKLOAD, tile, packetTarget)),
96+
(element, graphics, mouseX, mouseY) -> element.displayTooltips(graphics, mouseX, mouseY,
97+
MekanismLang.STABILIZER_TOGGLE_LOADING.translate(OnOff.of(tile.isChunkLoadingAt(shiftedX, shiftedZ), true),
98+
EnumColor.INDIGO, chunkX, EnumColor.INDIGO, chunkZ)
99+
)));
98100
}
99101
}
100102
}

src/main/java/mekanism/client/gui/GuiLogisticalSorter.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -43,22 +43,27 @@ public GuiLogisticalSorter(MekanismTileContainer<TileEntityLogisticalSorter> con
4343
protected void addGuiElements() {
4444
super.addGuiElements();
4545
addRenderableWidget(new GuiSlot(SlotType.NORMAL, this, 12, 136).setRenderAboveSlots());
46-
addRenderableWidget(new TranslationButton(this, 96, 136, 156, 20, MekanismLang.BUTTON_NEW_FILTER,
47-
() -> addWindow(new GuiSorterFilerSelect(this, tile))));
46+
addRenderableWidget(new TranslationButton(this, 96, 136, 156, 20, MekanismLang.BUTTON_NEW_FILTER, (element, mouseX, mouseY) -> {
47+
GuiLogisticalSorter gui = (GuiLogisticalSorter) element.gui();
48+
gui.addWindow(new GuiSorterFilerSelect(gui, gui.tile));
49+
return true;
50+
}));
4851
addRenderableWidget(new MekanismImageButton(this, 12, 46, 14, getButtonLocation("single"),
49-
() -> PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.SINGLE_ITEM_BUTTON, tile)),
50-
getOnHover(MekanismLang.SORTER_SINGLE_ITEM_DESCRIPTION)));
52+
(element, mouseX, mouseY) -> PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.SINGLE_ITEM_BUTTON, ((GuiLogisticalSorter) element.gui()).tile)),
53+
(element, graphics, mouseX, mouseY) -> element.displayTooltips(graphics, mouseX, mouseY, MekanismLang.SORTER_SINGLE_ITEM_DESCRIPTION.translate())));
5154
addRenderableWidget(new MekanismImageButton(this, 12, 76, 14, getButtonLocation("round_robin"),
52-
() -> PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.ROUND_ROBIN_BUTTON, tile)),
53-
getOnHover(MekanismLang.SORTER_ROUND_ROBIN_DESCRIPTION)));
55+
(element, mouseX, mouseY) -> PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.ROUND_ROBIN_BUTTON, ((GuiLogisticalSorter) element.gui()).tile)),
56+
(element, graphics, mouseX, mouseY) -> element.displayTooltips(graphics, mouseX, mouseY, MekanismLang.SORTER_ROUND_ROBIN_DESCRIPTION.translate())));
5457
addRenderableWidget(new MekanismImageButton(this, 12, 106, 14, getButtonLocation("auto_eject"),
55-
() -> PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.AUTO_EJECT_BUTTON, tile)),
56-
getOnHover(MekanismLang.SORTER_AUTO_EJECT_DESCRIPTION)));
57-
addRenderableWidget(new ColorButton(this, 13, 137, 16, 16, () -> tile.color,
58-
() -> PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.CHANGE_COLOR, tile,
59-
hasShiftDown() ? -1 : TransporterUtils.getColorIndex(TransporterUtils.increment(tile.color)))),
60-
() -> PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.CHANGE_COLOR, tile,
61-
TransporterUtils.getColorIndex(TransporterUtils.decrement(tile.color))))));
58+
(element, mouseX, mouseY) -> PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.AUTO_EJECT_BUTTON, ((GuiLogisticalSorter) element.gui()).tile)),
59+
(element, graphics, mouseX, mouseY) -> element.displayTooltips(graphics, mouseX, mouseY, MekanismLang.SORTER_AUTO_EJECT_DESCRIPTION.translate())));
60+
addRenderableWidget(new ColorButton(this, 13, 137, 16, 16, () -> tile.color, (element, mouseX, mouseY) -> {
61+
TileEntityLogisticalSorter tile = ((GuiLogisticalSorter) element.gui()).tile;
62+
return PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.CHANGE_COLOR, tile, hasShiftDown() ? -1 : TransporterUtils.getColorIndex(TransporterUtils.increment(tile.color))));
63+
}, (element, mouseX, mouseY) -> {
64+
TileEntityLogisticalSorter tile = ((GuiLogisticalSorter) element.gui()).tile;
65+
return PacketUtils.sendToServer(new PacketGuiInteract(GuiInteraction.CHANGE_COLOR, tile, TransporterUtils.getColorIndex(TransporterUtils.decrement(tile.color))));
66+
}));
6267
}
6368

6469
@Override

src/main/java/mekanism/client/gui/GuiMekanism.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@
77
import java.util.Optional;
88
import java.util.function.BiFunction;
99
import java.util.function.BooleanSupplier;
10-
import java.util.function.Supplier;
11-
import mekanism.api.text.ILangEntry;
1210
import mekanism.client.gui.element.GuiElement;
13-
import mekanism.client.gui.element.GuiElement.IHoverable;
1411
import mekanism.client.gui.element.slot.GuiSlot;
1512
import mekanism.client.gui.element.slot.GuiVirtualSlot;
1613
import mekanism.client.gui.element.slot.SlotType;
@@ -175,14 +172,6 @@ protected void renderTitleText(GuiGraphics guiGraphics) {
175172
drawTitleText(guiGraphics, title, titleLabelY);
176173
}
177174

178-
protected IHoverable getOnHover(ILangEntry translationHelper) {
179-
return getOnHover((Supplier<Component>) translationHelper::translate);
180-
}
181-
182-
protected IHoverable getOnHover(Supplier<Component> componentSupplier) {
183-
return (onHover, guiGraphics, mouseX, mouseY) -> displayTooltips(guiGraphics, mouseX, mouseY, componentSupplier.get());
184-
}
185-
186175
protected ResourceLocation getButtonLocation(String name) {
187176
return MekanismUtils.getResource(ResourceType.GUI_BUTTON, name + ".png");
188177
}
@@ -616,7 +605,7 @@ private boolean isVirtualSlotAvailable(IVirtualSlot virtualSlot) {
616605
protected boolean isHovering(int x, int y, int width, int height, double mouseX, double mouseY) {
617606
// overridden to prevent slot interactions when a GuiElement is blocking
618607
return super.isHovering(x, y, width, height, mouseX, mouseY) && getWindowHovering(mouseX, mouseY) == null &&
619-
overNoButtons(null, mouseX, mouseY);
608+
overNoButtons((GuiWindow) null, mouseX, mouseY);
620609
}
621610

622611
protected void addSlots() {

src/main/java/mekanism/client/gui/GuiModificationStation.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,10 @@ protected void addGuiElements() {
3737
addRenderableWidget(new GuiVerticalPowerBar(this, tile.getEnergyContainer(), 154, 40));
3838
addRenderableWidget(new GuiEnergyTab(this, tile.getEnergyContainer(), tile::usedEnergy));
3939
addRenderableWidget(new GuiProgress(tile::getScaledProgress, ProgressType.LARGE_RIGHT, this, 65, 123));
40-
removeButton = addRenderableWidget(new TranslationButton(this, 34, 96, 108, 17, MekanismLang.BUTTON_REMOVE,
41-
() -> PacketUtils.sendToServer(new PacketRemoveModule(tile.getBlockPos(), selectedModule.getData(), Screen.hasShiftDown())),
42-
getOnHover(MekanismLang.REMOVE_ALL_MODULES_TOOLTIP)));
40+
removeButton = addRenderableWidget(new TranslationButton(this, 34, 96, 108, 17, MekanismLang.BUTTON_REMOVE, (element, mouseX, mouseY) -> {
41+
GuiModificationStation gui = (GuiModificationStation) element.gui();
42+
return PacketUtils.sendToServer(new PacketRemoveModule(gui.tile.getBlockPos(), gui.selectedModule.getData(), Screen.hasShiftDown()));
43+
}, (element, graphics, mouseX, mouseY) -> element.displayTooltips(graphics, mouseX, mouseY, MekanismLang.REMOVE_ALL_MODULES_TOOLTIP.translate())));
4344
removeButton.active = selectedModule != null;
4445

4546
addRenderableWidget(new GuiModuleScrollList(this, 34, 20, 108, 74, () -> tile.containerSlot.getStack().copy(), this::onModuleSelected));

src/main/java/mekanism/client/gui/GuiModuleTweaker.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ protected void addGuiElements() {
7171
moduleScreen = addRenderableWidget(new GuiModuleScreen(this, 138, 20, saveCallback, armorPreview));
7272
scrollList = addRenderableWidget(new GuiModuleScrollList(this, 30, 20, 108, 116, () -> getStack(selected), this::onModuleSelected));
7373
addRenderableWidget(new GuiElementHolder(this, 30, 136, 108, 18));
74-
optionsButton = addRenderableWidget(new TranslationButton(this, 31, 137, 106, 16, MekanismLang.BUTTON_OPTIONS, this::openOptions));
74+
optionsButton = addRenderableWidget(new TranslationButton(this, 31, 137, 106, 16, MekanismLang.BUTTON_OPTIONS, (element, mouseX, mouseY) -> {
75+
((GuiModuleTweaker) element.gui()).openOptions();
76+
return true;
77+
}));
7578
optionsButton.active = false;
7679
int size = menu.slots.size();
7780
for (int i = 0; i < size; i++) {

0 commit comments

Comments
 (0)