Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.gregtechceu.gtceu.common.data.mui;

import com.gregtechceu.gtceu.api.machine.trait.NotifiableFluidTank;
import com.gregtechceu.gtceu.api.machine.trait.NotifiableItemStackHandler;
import com.gregtechceu.gtceu.api.mui.value.sync.PanelSyncManager;
import com.gregtechceu.gtceu.api.mui.value.sync.SyncHandlers;
import com.gregtechceu.gtceu.api.mui.widgets.SlotGroupWidget;
Expand All @@ -10,9 +9,11 @@
import com.gregtechceu.gtceu.api.mui.widgets.slot.ModularSlot;
import com.gregtechceu.gtceu.api.mui.widgets.slot.SlotGroup;

import net.minecraftforge.items.IItemHandler;

public class GTMuiMachineUtil {

public static SlotGroupWidget createSlotGroupFromInventory(NotifiableItemStackHandler itemHandler,
public static SlotGroupWidget createSlotGroupFromInventory(IItemHandler itemHandler,
String slotGroupName, int maxSlots, char key,
String... matrix) {
SlotGroup slotGroup = new SlotGroup(slotGroupName, maxSlots);
Expand All @@ -26,6 +27,29 @@ public static SlotGroupWidget createSlotGroupFromInventory(NotifiableItemStackHa
return slotWidget;
}

public static SlotGroupWidget createSquareSlotGroupFromInventory(IItemHandler itemHandler,
String slotGroupName) {
SlotGroup slotGroup = new SlotGroup(slotGroupName, itemHandler.getSlots());
int size = (int) Math.sqrt(itemHandler.getSlots());
String[] matrix = new String[size];
for (int i = 0; i < size; i++) {
var row = new StringBuilder(size + 1);
for (int j = 0; j < size; j++) {
row.append("I");
}
matrix[i] = row.toString();
}

SlotGroupWidget slotWidget = SlotGroupWidget.builder()
.matrix(matrix)
.key('I', i -> new ItemSlot()
.slot(new ModularSlot(itemHandler, i)
.slotGroup(slotGroup)))
.build();

return slotWidget;
}

public static SlotGroupWidget createSlotGroupFromMatrix(String slotGroupName, int maxSlots, char key,
String... matrix) {
SlotGroup slotGroup = new SlotGroup(slotGroupName, maxSlots);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -441,15 +441,12 @@ public void setWorkingEnabled(boolean workingEnabled) {
public ModularPanel buildUI(PosGuiData data, PanelSyncManager syncManager, UISettings settings) {
ModularPanel panel = new ModularPanel(this.getDefinition().getName());
var slotHeight = (int) Math.sqrt(inventorySize);
var outputGrid = createGrid(inventorySize, slotHeight, true, 'o');
panel
.size(176, 104 + 18 * slotHeight)
.child(GTMuiWidgets.createTitleBar(this.getDefinition(), 190))
.child(new Column()
.coverChildren()
.child(GTMuiMachineUtil.createSlotGroupFromInventory(this.cache,
"output_cache", this.cache.getSize(), 'o',
outputGrid))
.child(GTMuiMachineUtil.createSquareSlotGroupFromInventory(this.cache, "output_cache"))
.alignX(Alignment.CENTER)
.top(10))
.child(SlotGroupWidget.playerInventory(false).left(7).bottom(7))
Expand Down Expand Up @@ -501,35 +498,6 @@ public ItemSlot createBatterySlot(PanelSyncManager syncManager) {
return new ItemSlot().syncHandler("battery").background(GTGuiTextures.SLOT, GTGuiTextures.CHARGER_OVERLAY);
}

// TODO: when onion branch is merged, call this from GTMuiUtils instead
private static String[] createGrid(int amount, int rowSize, boolean output, char key) {
int rows = (int) Math.ceil((float) amount / rowSize);
String[] grid = new String[rows];
for (int i = 0; i < rows; i++) {
StringBuilder r = new StringBuilder();
if (output) {
for (int j = 0; j < rowSize; j++) {
if ((i * rowSize + j) > (amount - 1)) {
r.insert(0, " ");
} else {
r.insert(0, key);
}
}
} else {
for (int j = 0; j < rowSize; j++) {
if ((i * rowSize + j) > (amount - 1)) {
r.append(" ");
} else {
r.append(key);
}
}
}
grid[i] = r.toString();
}

return grid;
}

//////////////////////////////////////
// ******* Rendering ********//
//////////////////////////////////////
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@
import com.gregtechceu.gtceu.api.mui.widget.ParentWidget;
import com.gregtechceu.gtceu.api.mui.widgets.SlotGroupWidget;
import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow;
import com.gregtechceu.gtceu.api.mui.widgets.slot.ItemSlot;
import com.gregtechceu.gtceu.api.mui.widgets.slot.ModularSlot;
import com.gregtechceu.gtceu.api.mui.widgets.slot.SlotGroup;
import com.gregtechceu.gtceu.api.recipe.GTRecipe;
import com.gregtechceu.gtceu.client.mui.screen.ModularPanel;
import com.gregtechceu.gtceu.client.mui.screen.UISettings;
Expand Down Expand Up @@ -55,6 +52,8 @@

import javax.annotation.ParametersAreNonnullByDefault;

import static com.gregtechceu.gtceu.common.data.mui.GTMuiMachineUtil.createSquareSlotGroupFromInventory;

@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class DataAccessHatchMachine extends TieredPartMachine
Expand Down Expand Up @@ -102,24 +101,7 @@ public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate
@Override
public @NotNull ModularPanel buildUI(@NotNull PosGuiData data, @NotNull PanelSyncManager syncManager,
@NotNull UISettings settings) {
SlotGroup slotGroup = new SlotGroup("inventory", getInventorySize());

int size = (int) Math.sqrt(getInventorySize());
String[] matrix = new String[size];
for (int i = 0; i < size; i++) {
var row = new StringBuilder(size + 1);
for (int j = 0; j < size; j++) {
row.append("I");
}
matrix[i] = row.toString();
}

SlotGroupWidget slotWidget = SlotGroupWidget.builder()
.matrix(matrix)
.key('I', i -> new ItemSlot()
.slot(new ModularSlot(importItems, i)
.slotGroup(slotGroup)))
.build();

return new ModularPanel(this.getDefinition().getName())
.size(176, 100 + (18 * size))
Expand All @@ -131,7 +113,7 @@ public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate
.crossAxisAlignment(Alignment.CrossAxis.CENTER)
.align(Alignment.CENTER)
.coverChildren()
.child(slotWidget
.child(createSquareSlotGroupFromInventory(importItems, "data_inventory")
.marginLeft(30)
.marginRight(30)
.verticalCenter())))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@
import com.gregtechceu.gtceu.api.mui.widget.ParentWidget;
import com.gregtechceu.gtceu.api.mui.widgets.SlotGroupWidget;
import com.gregtechceu.gtceu.api.mui.widgets.layout.Flow;
import com.gregtechceu.gtceu.api.mui.widgets.slot.ItemSlot;
import com.gregtechceu.gtceu.api.mui.widgets.slot.ModularSlot;
import com.gregtechceu.gtceu.api.mui.widgets.slot.SlotGroup;
import com.gregtechceu.gtceu.api.transfer.item.CustomItemStackHandler;
import com.gregtechceu.gtceu.client.mui.screen.ModularPanel;
import com.gregtechceu.gtceu.client.mui.screen.UISettings;
Expand All @@ -42,6 +39,8 @@

import javax.annotation.ParametersAreNonnullByDefault;

import static com.gregtechceu.gtceu.common.data.mui.GTMuiMachineUtil.createSquareSlotGroupFromInventory;

@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
public class MufflerPartMachine extends TieredPartMachine implements IMufflerMachine, IMuiMachine {
Expand Down Expand Up @@ -137,24 +136,7 @@ private void tryBreakSnow() {
@Override
public @NotNull ModularPanel buildUI(@NotNull PosGuiData data, @NotNull PanelSyncManager syncManager,
@NotNull UISettings settings) {
SlotGroup slotGroup = new SlotGroup("inventory", inventory.getSlots());

int size = (int) Math.sqrt(inventory.getSlots());
String[] matrix = new String[size];
for (int i = 0; i < size; i++) {
var row = new StringBuilder(size + 1);
for (int j = 0; j < size; j++) {
row.append("I");
}
matrix[i] = row.toString();
}

SlotGroupWidget slotWidget = SlotGroupWidget.builder()
.matrix(matrix)
.key('I', i -> new ItemSlot()
.slot(new ModularSlot(inventory, i)
.slotGroup(slotGroup)))
.build();

return new ModularPanel(this.getDefinition().getName())
.size(Math.max(176, 20 + (18 * size)), 100 + (18 * size))
Expand All @@ -166,7 +148,7 @@ private void tryBreakSnow() {
.crossAxisAlignment(Alignment.CrossAxis.CENTER)
.align(Alignment.CENTER)
.coverChildren()
.child(slotWidget
.child(createSquareSlotGroupFromInventory(inventory, "muffler_inventory")
.marginLeft(30)
.marginRight(30)
.verticalCenter())))
Expand Down