From cac77610b54a76300227bdd2e6d576480ec7725f Mon Sep 17 00:00:00 2001 From: querns <33518699+querns@users.noreply.github.com> Date: Sat, 9 Sep 2023 08:39:16 -0500 Subject: Request drill changes, eliminates recipe info in drill GUI (#2285) --- .../gui/widgets/GT_DisabledWhileActiveButton.java | 104 --------------------- .../gui/widgets/GT_LockedWhileActiveButton.java | 90 ++++++++++++++++++ 2 files changed, 90 insertions(+), 104 deletions(-) delete mode 100644 src/main/java/gregtech/api/gui/widgets/GT_DisabledWhileActiveButton.java create mode 100644 src/main/java/gregtech/api/gui/widgets/GT_LockedWhileActiveButton.java (limited to 'src/main/java/gregtech/api/gui/widgets') diff --git a/src/main/java/gregtech/api/gui/widgets/GT_DisabledWhileActiveButton.java b/src/main/java/gregtech/api/gui/widgets/GT_DisabledWhileActiveButton.java deleted file mode 100644 index e86589ac2a..0000000000 --- a/src/main/java/gregtech/api/gui/widgets/GT_DisabledWhileActiveButton.java +++ /dev/null @@ -1,104 +0,0 @@ -package gregtech.api.gui.widgets; - -import java.lang.ref.WeakReference; -import java.util.Arrays; -import java.util.List; -import java.util.Optional; -import java.util.function.BiConsumer; -import java.util.function.Supplier; - -import net.minecraft.util.StatCollector; - -import org.jetbrains.annotations.NotNull; - -import com.google.common.collect.ImmutableList; -import com.gtnewhorizons.modularui.api.drawable.IDrawable; -import com.gtnewhorizons.modularui.api.screen.ModularWindow; -import com.gtnewhorizons.modularui.api.widget.Widget; -import com.gtnewhorizons.modularui.common.widget.ButtonWidget; -import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget; - -import gregtech.api.gui.modularui.GT_UITextures; -import gregtech.api.interfaces.tileentity.IMachineProgress; - -public class GT_DisabledWhileActiveButton extends ButtonWidget { - - @NotNull - private final WeakReference machineRef; - - public GT_DisabledWhileActiveButton(@NotNull IMachineProgress machine, @NotNull ModularWindow.Builder builder) { - super(); - machineRef = new WeakReference<>(machine); - - super.attachSyncer( - new FakeSyncWidget.BooleanSyncer(() -> isMachineActive().orElse(true), a -> {}), - builder, - (widget, aBoolean) -> widget.notifyTooltipChange()); - - super.dynamicTooltip(this::generateTooltip); - } - - @NotNull - @Override - public ButtonWidget setOnClick(@NotNull BiConsumer clickAction) { - return super.setOnClick((clickData, widget) -> isMachineActive().ifPresent(isActive -> { - if (!isActive) { - clickAction.accept(clickData, widget); - } - })); - } - - @NotNull - @Override - public Widget setBackground(@NotNull IDrawable... drawables) { - return super.setBackground(() -> appendLockedOverlay(drawables)); - } - - @NotNull - @Override - public Widget setBackground(@NotNull Supplier drawablesSupplier) { - return super.setBackground(() -> appendLockedOverlay(drawablesSupplier.get())); - } - - @NotNull - @Override - public Widget dynamicTooltip(@NotNull Supplier> dynamicTooltip) { - return super.dynamicTooltip(() -> { - ImmutableList.Builder tooltips = ImmutableList.builder() - .addAll(dynamicTooltip.get()); - tooltips.addAll(generateTooltip()); - - return tooltips.build(); - }); - } - - @NotNull - private Optional isMachineActive() { - return Optional.ofNullable(machineRef.get()) - .map(IMachineProgress::isActive); - } - - @NotNull - private IDrawable[] appendLockedOverlay(@NotNull IDrawable[] drawables) { - return isMachineActive().map(isActive -> { - if (isActive) { - final IDrawable[] copy = Arrays.copyOf(drawables, drawables.length + 1); - copy[drawables.length] = GT_UITextures.OVERLAY_BUTTON_LOCKED; - return copy; - } - return drawables; - }) - .orElse(drawables); - } - - @NotNull - private List generateTooltip() { - return isMachineActive().map(isActive -> { - if (isActive) { - return ImmutableList.of(StatCollector.translateToLocal("GT5U.gui.button.forbidden_while_running")); - } - return ImmutableList.of(); - }) - .orElse(ImmutableList.of()); - } -} diff --git a/src/main/java/gregtech/api/gui/widgets/GT_LockedWhileActiveButton.java b/src/main/java/gregtech/api/gui/widgets/GT_LockedWhileActiveButton.java new file mode 100644 index 0000000000..9a93a8fadf --- /dev/null +++ b/src/main/java/gregtech/api/gui/widgets/GT_LockedWhileActiveButton.java @@ -0,0 +1,90 @@ +package gregtech.api.gui.widgets; + +import java.util.Arrays; +import java.util.List; +import java.util.function.BiConsumer; +import java.util.function.Supplier; + +import net.minecraft.util.StatCollector; + +import org.jetbrains.annotations.NotNull; + +import com.google.common.collect.ImmutableList; +import com.gtnewhorizons.modularui.api.drawable.IDrawable; +import com.gtnewhorizons.modularui.api.screen.ModularWindow; +import com.gtnewhorizons.modularui.api.widget.Widget; +import com.gtnewhorizons.modularui.common.widget.ButtonWidget; +import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget; + +import gregtech.api.gui.modularui.GT_UITextures; +import gregtech.api.interfaces.tileentity.IMachineProgress; + +public class GT_LockedWhileActiveButton extends ButtonWidget { + + @NotNull + private final IMachineProgress machine; + + public GT_LockedWhileActiveButton(@NotNull IMachineProgress machine, @NotNull ModularWindow.Builder builder) { + super(); + this.machine = machine; + + super.attachSyncer( + new FakeSyncWidget.BooleanSyncer(machine::isActive, a -> {}), + builder, + (widget, aBoolean) -> widget.notifyTooltipChange()); + + super.dynamicTooltip(this::generateTooltip); + } + + @NotNull + @Override + public ButtonWidget setOnClick(@NotNull BiConsumer clickAction) { + return super.setOnClick((clickData, widget) -> { + if (!machine.isActive()) { + clickAction.accept(clickData, widget); + } + }); + } + + @NotNull + @Override + public Widget setBackground(@NotNull IDrawable... drawables) { + return super.setBackground(() -> appendLockedOverlay(drawables)); + } + + @NotNull + @Override + public Widget setBackground(@NotNull Supplier drawablesSupplier) { + return super.setBackground(() -> appendLockedOverlay(drawablesSupplier.get())); + } + + @NotNull + @Override + public Widget dynamicTooltip(@NotNull Supplier> dynamicTooltip) { + return super.dynamicTooltip(() -> { + ImmutableList.Builder tooltips = ImmutableList.builder() + .addAll(dynamicTooltip.get()); + tooltips.addAll(generateTooltip()); + + return tooltips.build(); + }); + } + + @NotNull + private IDrawable[] appendLockedOverlay(@NotNull IDrawable[] drawables) { + if (machine.isActive()) { + final IDrawable[] copy = Arrays.copyOf(drawables, drawables.length + 1); + copy[drawables.length] = GT_UITextures.OVERLAY_BUTTON_LOCKED; + return copy; + } + return drawables; + } + + @NotNull + private List generateTooltip() { + if (machine.isActive()) { + return ImmutableList.of(StatCollector.translateToLocal("GT5U.gui.button.forbidden_while_running")); + } + return ImmutableList.of(); + } +} -- cgit