Skip to content

Commit a192dd9

Browse files
committed
start work on cover opening from guis
1 parent 7a55019 commit a192dd9

2 files changed

Lines changed: 25 additions & 7 deletions

File tree

src/main/java/com/gregtechceu/gtceu/api/machine/mui/MachineUIPanelBuilder.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,13 @@
1414

1515
import net.minecraft.network.chat.Component;
1616

17-
import brachy.modularui.drawable.ItemDrawable;
1817
import brachy.modularui.drawable.UITexture;
1918
import brachy.modularui.screen.UISettings;
2019
import brachy.modularui.utils.Color;
2120
import brachy.modularui.value.sync.DoubleSyncValue;
2221
import brachy.modularui.value.sync.IntSyncValue;
2322
import brachy.modularui.value.sync.PanelSyncManager;
2423
import brachy.modularui.widget.ParentWidget;
25-
import brachy.modularui.widgets.ButtonWidget;
2624
import brachy.modularui.widgets.layout.Flow;
2725
import lombok.Setter;
2826
import lombok.experimental.Accessors;
@@ -137,11 +135,7 @@ public MachineUIPanel build(PanelSyncManager syncManager, UISettings settings) {
137135
}
138136

139137
for (var cover : machine.getCoverContainer().getCovers()) {
140-
attachLeft.child(new ButtonWidget<>()
141-
.overlay(new ItemDrawable(cover.getAttachItem()))
142-
.onMousePressed((context, button) -> {
143-
return true;
144-
}));
138+
GTMuiWidgets.createCoverWidget(attachLeft, cover, null, syncManager, settings);
145139
}
146140

147141
return panel;

src/main/java/com/gregtechceu/gtceu/common/mui/GTMuiWidgets.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import com.gregtechceu.gtceu.GTCEu;
44
import com.gregtechceu.gtceu.api.capability.IControllable;
55
import com.gregtechceu.gtceu.api.capability.recipe.IO;
6+
import com.gregtechceu.gtceu.api.cover.CoverBehavior;
7+
import com.gregtechceu.gtceu.api.cover.IMuiCover;
68
import com.gregtechceu.gtceu.api.cover.filter.Filter;
79
import com.gregtechceu.gtceu.api.cover.filter.FilterHandler;
810
import com.gregtechceu.gtceu.api.machine.MachineDefinition;
@@ -365,6 +367,28 @@ public static CycleButtonWidget createIOCycleButton(EnumSyncValue<IO> syncValue,
365367
return cycleButton;
366368
}
367369

370+
public static ParentWidget<?> createCoverWidget(Flow flow, CoverBehavior cover, SidedPosGuiData data,
371+
PanelSyncManager syncManager, UISettings settings) {
372+
IMuiCover muiCover;
373+
if (cover instanceof IMuiCover) {
374+
muiCover = (IMuiCover) cover;
375+
} else {
376+
muiCover = null;
377+
return null;
378+
}
379+
IPanelHandler panelHandler = syncManager.syncedPanel(
380+
cover.getAttachItem().getDisplayName() + cover.attachedSide.name(), true,
381+
(sm, sh) -> muiCover.buildUI(data, sm, settings).disablePanelsBelow(true)
382+
.closeOnOutOfBoundsClick(true));
383+
return flow.child(new ButtonWidget<>()
384+
.overlay(new ItemDrawable(cover.getAttachItem()))
385+
.tooltip(r -> r.addFromItem(cover.getAttachItem()))
386+
.onMousePressed((context, button) -> {
387+
panelHandler.togglePanel();
388+
return true;
389+
}));
390+
}
391+
368392
public static <T, S extends Filter<T, S>> ParentWidget<?> createFilterRow(Flow existingRow,
369393
FilterHandler<T, S> filterHandler,
370394
SidedPosGuiData data,

0 commit comments

Comments
 (0)