From eb34e71e22177fb2d8072522eb7f3e5401b84eea Mon Sep 17 00:00:00 2001 From: HoleFish <48403212+HoleFish@users.noreply.github.com> Date: Sat, 24 Aug 2024 00:28:22 +0800 Subject: Add Structure Update button (#2941) * trigger * structure update button --------- Co-authored-by: Martin Robertz --- .../modularui/ControllerWithOptionalFeatures.java | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java') diff --git a/src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java b/src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java index 67e6a72776..66eee78822 100644 --- a/src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java +++ b/src/main/java/gregtech/api/interfaces/modularui/ControllerWithOptionalFeatures.java @@ -360,4 +360,33 @@ public interface ControllerWithOptionalFeatures extends IVoidable, IRecipeLockab } return (ButtonWidget) button; } + + Pos2d getStructureUpdateButtonPos(); + + int getStructureUpdateTime(); + + void setStructureUpdateTime(int time); + + default ButtonWidget createStructureUpdateButton(IWidgetBuilder builder) { + Widget button = new ButtonWidget().setOnClick((clickData, widget) -> { setStructureUpdateTime(1); }) + .setPlayClickSound(true) + .setBackground(() -> { + List ret = new ArrayList<>(); + if (getStructureUpdateTime() > -20) { + ret.add(GT_UITextures.BUTTON_STANDARD_PRESSED); + } else { + ret.add(GT_UITextures.BUTTON_STANDARD); + } + ret.add(GT_UITextures.OVERLAY_BUTTON_STRUCTURE_UPDATE); + return ret.toArray(new IDrawable[0]); + }) + .attachSyncer( + new FakeSyncWidget.IntegerSyncer(this::getStructureUpdateTime, this::setStructureUpdateTime), + builder) + .addTooltip(StatCollector.translateToLocal("GT5U.gui.button.structure_update")) + .setTooltipShowUpDelay(TOOLTIP_DELAY) + .setPos(getStructureUpdateButtonPos()) + .setSize(16, 16); + return (ButtonWidget) button; + } } -- cgit