|
3 | 3 | import com.gregtechceu.gtceu.api.GTValues; |
4 | 4 | import com.gregtechceu.gtceu.api.capability.*; |
5 | 5 | import com.gregtechceu.gtceu.api.capability.compat.FeCompat; |
6 | | -import com.gregtechceu.gtceu.api.gui.GuiTextures; |
7 | | -import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; |
8 | 6 | import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; |
9 | 7 | import com.gregtechceu.gtceu.api.machine.TieredEnergyMachine; |
10 | | -import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; |
11 | 8 | import com.gregtechceu.gtceu.api.machine.feature.IMachineLife; |
| 9 | +import com.gregtechceu.gtceu.api.machine.feature.IMuiMachine; |
12 | 10 | import com.gregtechceu.gtceu.api.machine.property.GTMachineModelProperties; |
13 | 11 | import com.gregtechceu.gtceu.api.machine.trait.NotifiableEnergyContainer; |
| 12 | +import com.gregtechceu.gtceu.api.mui.base.drawable.IKey; |
| 13 | +import com.gregtechceu.gtceu.api.mui.factory.PosGuiData; |
| 14 | +import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager; |
| 15 | +import com.gregtechceu.gtceu.api.mui.widgets.ProgressWidget; |
| 16 | +import com.gregtechceu.gtceu.api.mui.widgets.layout.Column; |
| 17 | +import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow; |
14 | 18 | import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler; |
| 19 | +import com.gregtechceu.gtceu.client.mui.screen.ModularPanel; |
| 20 | +import com.gregtechceu.gtceu.client.mui.screen.UISettings; |
| 21 | +import com.gregtechceu.gtceu.common.data.mui.GTMuiMachineUtil; |
| 22 | +import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets; |
| 23 | +import com.gregtechceu.gtceu.common.mui.GTGuiTextures; |
15 | 24 | import com.gregtechceu.gtceu.config.ConfigHolder; |
| 25 | +import com.gregtechceu.gtceu.utils.GTStringUtils; |
16 | 26 | import com.gregtechceu.gtceu.utils.GTUtil; |
17 | 27 |
|
18 | | -import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; |
19 | | -import com.lowdragmc.lowdraglib.gui.widget.Widget; |
20 | | -import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; |
21 | 28 | import com.lowdragmc.lowdraglib.syncdata.annotation.DescSynced; |
22 | 29 | import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; |
23 | 30 | import com.lowdragmc.lowdraglib.syncdata.annotation.RequireRerender; |
24 | 31 | import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; |
25 | | -import com.lowdragmc.lowdraglib.utils.Position; |
26 | 32 |
|
27 | 33 | import net.minecraft.MethodsReturnNonnullByDefault; |
28 | 34 | import net.minecraft.core.Direction; |
| 35 | +import net.minecraft.network.chat.Component; |
29 | 36 | import net.minecraft.util.StringRepresentable; |
30 | 37 | import net.minecraft.world.level.block.state.properties.EnumProperty; |
31 | 38 | import net.minecraftforge.energy.IEnergyStorage; |
|
41 | 48 |
|
42 | 49 | @ParametersAreNonnullByDefault |
43 | 50 | @MethodsReturnNonnullByDefault |
44 | | -public class ChargerMachine extends TieredEnergyMachine implements IControllable, IFancyUIMachine, IMachineLife { |
| 51 | +public class ChargerMachine extends TieredEnergyMachine implements IControllable, IMuiMachine, IMachineLife { |
45 | 52 |
|
46 | 53 | public static final long AMPS_PER_ITEM = 4L; |
47 | 54 |
|
@@ -132,39 +139,51 @@ public void onMachineRemoved() { |
132 | 139 | ////////////////////////////////////// |
133 | 140 |
|
134 | 141 | @Override |
135 | | - public Widget createUIWidget() { |
136 | | - int rowSize = (int) Math.sqrt(inventorySize); |
137 | | - int colSize = rowSize; |
138 | | - if (inventorySize == 8) { |
139 | | - rowSize = 4; |
140 | | - colSize = 2; |
141 | | - } |
142 | | - var template = new WidgetGroup(0, 0, 18 * rowSize + 8, 18 * colSize + 8); |
143 | | - template.setBackground(GuiTextures.BACKGROUND_INVERSE); |
144 | | - int index = 0; |
145 | | - for (int y = 0; y < colSize; y++) { |
146 | | - for (int x = 0; x < rowSize; x++) { |
147 | | - template.addWidget(new SlotWidget(chargerInventory, index++, 4 + x * 18, 4 + y * 18, true, true) |
148 | | - .setBackgroundTexture(new GuiTextureGroup(GuiTextures.SLOT, GuiTextures.CHARGER_OVERLAY))); |
149 | | - } |
150 | | - } |
| 142 | + public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISettings settings) { |
| 143 | + String[] matrix = GTMuiMachineUtil.createSquareMatrix(inventorySize, 'B'); |
| 144 | + return new ModularPanel(getDefinition().getName()) |
| 145 | + .child(GTMuiWidgets.createTitleBar(getDefinition(), 172)) |
| 146 | + .child(Flow.row() |
| 147 | + .height(90) |
| 148 | + .margin(6) |
| 149 | + .marginLeft(7) |
| 150 | + .marginTop(2) |
| 151 | + .height(80) |
| 152 | + .child(new ProgressWidget() |
| 153 | + .texture(GTGuiTextures.PROGRESS_BAR_BOILER_EMPTY_STEEL, |
| 154 | + GTGuiTextures.PROGRESS_BAR_BOILER_HEAT, 60) |
| 155 | + .direction(ProgressWidget.Direction.UP) |
| 156 | + .progress(this::getEnergyPercentage) |
| 157 | + .marginRight(50) |
| 158 | + .size(18, 60) |
| 159 | + .verticalCenter() |
| 160 | + .addTooltipLine(IKey.dynamic(() -> Component.literal( |
| 161 | + "%s/%s EU".formatted( |
| 162 | + GTStringUtils.formatInt(energyContainer.getEnergyStored()), |
| 163 | + GTStringUtils.formatInt(energyContainer.getEnergyCapacity())))))) |
| 164 | + .child(GTMuiMachineUtil.createSlotGroupFromInventory( |
| 165 | + chargerInventory, "charger_inv", |
| 166 | + inventorySize, 'B', |
| 167 | + slot -> slot.background(GTGuiTextures.SLOT, GTGuiTextures.CHARGER_OVERLAY), |
| 168 | + syncManager, |
| 169 | + matrix) |
| 170 | + .center())) |
| 171 | + .child(new Column() |
| 172 | + .coverChildren() |
| 173 | + .leftRel(1.0f) |
| 174 | + .reverseLayout(true) |
| 175 | + .bottom(16) |
| 176 | + .padding(0, 8, 4, 4) |
| 177 | + .childPadding(2) |
| 178 | + .excludeAreaInXei() |
| 179 | + .background(GTGuiTextures.BACKGROUND.getSubArea(0.25f, 0f, 1.0f, 1.0f)) |
| 180 | + .child(GTMuiWidgets.createPowerButton(this::isWorkingEnabled, this::setWorkingEnabled, |
| 181 | + syncManager))) |
| 182 | + .bindPlayerInventory(); |
| 183 | + } |
151 | 184 |
|
152 | | - var editableUI = createEnergyBar(); |
153 | | - var energyBar = editableUI.createDefault(); |
154 | | - |
155 | | - var group = new WidgetGroup(0, 0, |
156 | | - Math.max(energyBar.getSize().width + template.getSize().width + 4 + 8, 172), |
157 | | - Math.max(template.getSize().height + 8, energyBar.getSize().height + 8)); |
158 | | - var size = group.getSize(); |
159 | | - energyBar.setSelfPosition(new Position(3, (size.height - energyBar.getSize().height) / 2)); |
160 | | - template.setSelfPosition(new Position( |
161 | | - (size.width - energyBar.getSize().width - 4 - template.getSize().width) / 2 + 2 + |
162 | | - energyBar.getSize().width + 2, |
163 | | - (size.height - template.getSize().height) / 2)); |
164 | | - group.addWidget(energyBar); |
165 | | - group.addWidget(template); |
166 | | - editableUI.setupUI(group, this); |
167 | | - return group; |
| 185 | + private double getEnergyPercentage() { |
| 186 | + return (double) this.energyContainer.getEnergyStored() / this.energyContainer.getEnergyCapacity(); |
168 | 187 | } |
169 | 188 |
|
170 | 189 | ////////////////////////////////////// |
|
0 commit comments