Skip to content

Commit e37d31c

Browse files
maintenance ui start
1 parent 468492d commit e37d31c

File tree

2 files changed

+80
-0
lines changed

2 files changed

+80
-0
lines changed

src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/MaintenanceHatchPartMachine.java

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,28 @@
1313
import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine;
1414
import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties;
1515
import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler;
16+
import com.gregtechceu.gtceu.api.mui.base.drawable.IDrawable;
17+
import com.gregtechceu.gtceu.api.mui.base.drawable.IKey;
18+
import com.gregtechceu.gtceu.api.mui.base.widget.IWidget;
19+
import com.gregtechceu.gtceu.api.mui.drawable.ItemDrawable;
20+
import com.gregtechceu.gtceu.api.mui.factory.PosGuiData;
21+
import com.gregtechceu.gtceu.api.mui.utils.Alignment;
22+
import com.gregtechceu.gtceu.api.mui.value.sync.FloatSyncValue;
23+
import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager;
24+
import com.gregtechceu.gtceu.api.mui.widgets.ButtonWidget;
25+
import com.gregtechceu.gtceu.api.mui.widgets.TextWidget;
26+
import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow;
27+
import com.gregtechceu.gtceu.api.mui.widgets.slot.ItemSlot;
28+
import com.gregtechceu.gtceu.api.mui.widgets.textfield.TextFieldWidget;
1629
import com.gregtechceu.gtceu.client.model.machine.MachineRenderState;
30+
import com.gregtechceu.gtceu.client.mui.screen.ModularPanel;
31+
import com.gregtechceu.gtceu.client.mui.screen.UISettings;
1732
import com.gregtechceu.gtceu.common.data.GTItems;
33+
import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets;
34+
import com.gregtechceu.gtceu.common.mui.GTGuiTextures;
1835
import com.gregtechceu.gtceu.utils.FormattingUtil;
1936

37+
import com.gregtechceu.gtceu.utils.GTUtil;
2038
import com.lowdragmc.lowdraglib.gui.widget.*;
2139
import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced;
2240
import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted;
@@ -48,6 +66,7 @@
4866
import java.util.List;
4967
import java.util.Objects;
5068
import java.util.function.DoubleSupplier;
69+
import java.util.stream.Stream;
5170

5271
import javax.annotation.ParametersAreNonnullByDefault;
5372

@@ -80,6 +99,7 @@ public class MaintenanceHatchPartMachine extends TieredPartMachine
8099
@DescSynced
81100
protected byte maintenanceProblems = startProblems();
82101
@Getter
102+
@Setter
83103
@Persisted
84104
private float durationMultiplier = 1f;
85105
@Nullable
@@ -383,6 +403,65 @@ public InteractionResult onUse(BlockState state, Level world, BlockPos pos, Play
383403
* }
384404
*/
385405

406+
@Override
407+
public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager syncManager, UISettings uiSettings) {
408+
return new ModularPanel(this.getDefinition().getName())
409+
.child(GTMuiWidgets.createTitleBar(this.getDefinition(), 176))
410+
.child(Flow.column()
411+
.crossAxisAlignment(Alignment.CrossAxis.START)
412+
.childIf(this.isConfigurable, () -> Flow.column()
413+
.coverChildren()
414+
.padding(5)
415+
.horizontalCenter()
416+
.child(Flow.row()
417+
.coverChildren()
418+
.childPadding(5)
419+
.child(new TextWidget<>(IKey.lang("gtceu.maintenance.configurable_duration.modify")))
420+
.child(new TextFieldWidget()
421+
.setNumbersDouble(() -> MIN_DURATION_MULTIPLIER, () -> MAX_DURATION_MULTIPLIER)
422+
.setDefaultNumber(1)
423+
.value(new FloatSyncValue(this::getDurationMultiplier, this::setDurationMultiplier))
424+
.addTooltipElement(IKey.lang(() -> getDurationMultiplier() == 1.0 ?
425+
"gtceu.maintenance.configurable_duration.unchanged_description" :
426+
"gtceu.maintenance.configurable_duration.changed_description"))))
427+
.child(Flow.row()
428+
.coverChildren()
429+
.childPadding(5)
430+
.child(new TextWidget<>(IKey.lang("gtceu.maintenance.configurable_time", () -> new Object[]{this.getTimeMultiplier()})))))
431+
.child(Flow.row()
432+
.coverChildren()
433+
.padding(5)
434+
.child(new ItemSlot()
435+
.slot(itemStackHandler, 0)
436+
.background(GTGuiTextures.SLOT, GTGuiTextures.DUCT_TAPE_OVERLAY))
437+
.child(new ButtonWidget<>()
438+
.background(GTGuiTextures.BUTTON_MAINTENANCE)
439+
.disableHoverBackground()
440+
.addTooltipElement(IKey.lang("gtceu.machine.maintenance_hatch_tool_slot.tooltip"))
441+
.onMousePressed((mouseX, mouseY, button) -> {
442+
fixMaintenanceProblems(guiData.getPlayer());
443+
return true;
444+
})))
445+
.child(Flow.column()
446+
.crossAxisAlignment(Alignment.CrossAxis.START)
447+
.coverChildren()
448+
.padding(5)
449+
.childPadding(2)
450+
.child(new TextWidget<>(IKey.lang(() -> hasMaintenanceProblems() ?
451+
"gtceu.top.maintenance_broken" :
452+
"gtceu.top.maintenance_fixed")))
453+
.children(Stream.iterate(Byte.valueOf("0"), i -> i < 6, i -> ++i)
454+
.filter(i -> ((getMaintenanceProblems() >> i) & 1) == 0)
455+
.map(GTUtil::getMaintenanceText)
456+
.map(i -> Flow.row()
457+
.coverChildren()
458+
.childPadding(2)
459+
.child(new IDrawable.DrawableWidget(new ItemDrawable(i.getA())))
460+
.child(new TextWidget<>(IKey.dynamic(i::getB))))
461+
.map(IWidget.class::cast)
462+
.toList())));
463+
}
464+
386465
private static Component getTextWidgetText(String type, DoubleSupplier multiplier) {
387466
Component tooltip;
388467
if (multiplier.getAsDouble() == 1.0) {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,7 @@ public static class IDs {
423423
public static final UITexture BUTTON_THROTTLE_MINUS = fullImage("textures/gui/widget/button_throttle_minus.png");
424424
public static final UITexture BUTTON_EU = fullImage("textures/gui/overlay/mode_eu.png");
425425
public static final UITexture BUTTON_PERCENT = fullImage("textures/gui/overlay/mode_percent.png");
426+
public static final UITexture BUTTON_MAINTENANCE = fullImage("textures/gui/widget/button_maintenance.png");
426427

427428
public static final UITexture BUTTON_DISTINCT = UITexture.builder()
428429
.location(GTCEu.MOD_ID, "textures/gui/widget/button_distinct_buses.png")

0 commit comments

Comments
 (0)