aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHarry <harryyunull@gmail.com>2023-09-08 16:53:48 +0800
committerGitHub <noreply@github.com>2023-09-08 10:53:48 +0200
commit33a08e2ad9ca8bc42d13130f30f273268048fee0 (patch)
treef10a4a181719d7c026c4220cecd48f7f1df85210 /src
parentece08c3b040b580e7eb6b19972580570d7842fd9 (diff)
downloadGT5-Unofficial-33a08e2ad9ca8bc42d13130f30f273268048fee0.tar.gz
GT5-Unofficial-33a08e2ad9ca8bc42d13130f30f273268048fee0.tar.bz2
GT5-Unofficial-33a08e2ad9ca8bc42d13130f30f273268048fee0.zip
Display current recipe in GUI (#2252)
* Display current recipe * 2 decimals * fixes * formatNumbers * Fix formatting * update modularui --------- Co-authored-by: GTNH-Colen <54497873+GTNH-Colen@users.noreply.github.com>
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java116
1 files changed, 105 insertions, 11 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java
index 254f9df469..a729342430 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_MultiBlockBase.java
@@ -2,11 +2,13 @@ package gregtech.api.metatileentity.implementations;
import static gregtech.api.enums.GT_Values.V;
import static gregtech.api.enums.GT_Values.VN;
+import static gregtech.api.util.GT_Utility.formatNumbers;
import static mcp.mobius.waila.api.SpecialChars.GREEN;
import static mcp.mobius.waila.api.SpecialChars.RED;
import static mcp.mobius.waila.api.SpecialChars.RESET;
import java.util.*;
+import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
@@ -36,6 +38,7 @@ import com.gtnewhorizons.modularui.api.math.Alignment;
import com.gtnewhorizons.modularui.api.math.Pos2d;
import com.gtnewhorizons.modularui.api.screen.ModularWindow;
import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
+import com.gtnewhorizons.modularui.common.internal.network.NetworkUtils;
import com.gtnewhorizons.modularui.common.widget.DrawableWidget;
import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn;
import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget;
@@ -1604,30 +1607,30 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
return new String[] {
/* 1 */ StatCollector.translateToLocal("GT5U.multiblock.Progress") + ": "
+ EnumChatFormatting.GREEN
- + GT_Utility.formatNumbers(mProgresstime / 20)
+ + formatNumbers(mProgresstime / 20)
+ EnumChatFormatting.RESET
+ " s / "
+ EnumChatFormatting.YELLOW
- + GT_Utility.formatNumbers(mMaxProgresstime / 20)
+ + formatNumbers(mMaxProgresstime / 20)
+ EnumChatFormatting.RESET
+ " s",
/* 2 */ StatCollector.translateToLocal("GT5U.multiblock.energy") + ": "
+ EnumChatFormatting.GREEN
- + GT_Utility.formatNumbers(storedEnergy)
+ + formatNumbers(storedEnergy)
+ EnumChatFormatting.RESET
+ " EU / "
+ EnumChatFormatting.YELLOW
- + GT_Utility.formatNumbers(maxEnergy)
+ + formatNumbers(maxEnergy)
+ EnumChatFormatting.RESET
+ " EU",
/* 3 */ StatCollector.translateToLocal("GT5U.multiblock.usage") + ": "
+ EnumChatFormatting.RED
- + GT_Utility.formatNumbers(getActualEnergyUsage())
+ + formatNumbers(getActualEnergyUsage())
+ EnumChatFormatting.RESET
+ " EU/t",
/* 4 */ StatCollector.translateToLocal("GT5U.multiblock.mei") + ": "
+ EnumChatFormatting.YELLOW
- + GT_Utility.formatNumbers(getMaxInputVoltage())
+ + formatNumbers(getMaxInputVoltage())
+ EnumChatFormatting.RESET
+ " EU/t(*2A) "
+ StatCollector.translateToLocal("GT5U.machines.tier")
@@ -1734,14 +1737,14 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
currentTip.add(
StatCollector.translateToLocalFormatted(
"GT5U.waila.energy.use_with_amperage",
- GT_Utility.formatNumbers(actualEnergyUsage),
+ formatNumbers(actualEnergyUsage),
GT_Utility.getAmperageForTier(actualEnergyUsage, (byte) energyTier),
GT_Utility.getColoredTierNameFromTier((byte) energyTier)));
} else if (actualEnergyUsage < 0) {
currentTip.add(
StatCollector.translateToLocalFormatted(
"GT5U.waila.energy.produce_with_amperage",
- GT_Utility.formatNumbers(-actualEnergyUsage),
+ formatNumbers(-actualEnergyUsage),
GT_Utility.getAmperageForTier(-actualEnergyUsage, (byte) energyTier),
GT_Utility.getColoredTierNameFromTier((byte) energyTier)));
}
@@ -1750,13 +1753,13 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
currentTip.add(
StatCollector.translateToLocalFormatted(
"GT5U.waila.energy.use",
- GT_Utility.formatNumbers(actualEnergyUsage),
+ formatNumbers(actualEnergyUsage),
GT_Utility.getColoredTierNameFromVoltage(actualEnergyUsage)));
} else if (actualEnergyUsage < 0) {
currentTip.add(
StatCollector.translateToLocalFormatted(
"GT5U.waila.energy.produce",
- GT_Utility.formatNumbers(-actualEnergyUsage),
+ formatNumbers(-actualEnergyUsage),
GT_Utility.getColoredTierNameFromVoltage(-actualEnergyUsage)));
}
}
@@ -1766,7 +1769,7 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
// Show ns on the tooltip
if (GT_Mod.gregtechproxy.wailaAverageNS) {
int tAverageTime = tag.getInteger("averageNS");
- currentTip.add("Average CPU load of ~" + GT_Utility.formatNumbers(tAverageTime) + " ns");
+ currentTip.add("Average CPU load of ~" + formatNumbers(tAverageTime) + " ns");
}
super.getWailaBody(itemStack, currentTip, accessor, config);
}
@@ -2137,6 +2140,74 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
return true;
}
+ protected String generateCurrentRecipeInfoString() {
+ StringBuilder ret = new StringBuilder(EnumChatFormatting.WHITE + "In progress: ")
+ .append(String.format("%,.2f", (double) mProgresstime / 20))
+ .append("s / ")
+ .append(String.format("%,.2f", (double) mMaxProgresstime / 20))
+ .append("s (")
+ .append(formatNumbers((Math.round((double) mProgresstime / mMaxProgresstime * 1000) / 10.0)))
+ .append("%)\n");
+
+ Function<Integer, Void> appendRate = (Integer amount) -> {
+ double processPerTick = (double) amount / mMaxProgresstime * 20;
+ if (processPerTick > 1) {
+ ret.append(" (")
+ .append(formatNumbers(Math.round(processPerTick * 10) / 10.0))
+ .append("/s)");
+ } else {
+ ret.append(" (")
+ .append(formatNumbers(Math.round(1 / processPerTick * 10) / 10.0))
+ .append("s/ea)");
+ }
+ return null;
+ };
+
+ int lines = 0;
+ int MAX_LINES = 5;
+
+ if (mOutputItems != null) {
+ for (var item : mOutputItems) {
+ if (item == null) continue;
+ if (lines >= MAX_LINES) {
+ ret.append("...");
+ return ret.toString();
+ }
+ lines++;
+ ret.append(EnumChatFormatting.AQUA)
+ .append(item.getDisplayName())
+ .append(EnumChatFormatting.WHITE)
+ .append(" x ")
+ .append(EnumChatFormatting.GOLD)
+ .append(formatNumbers(item.stackSize))
+ .append(EnumChatFormatting.WHITE);
+ appendRate.apply(item.stackSize);
+ ret.append('\n');
+ }
+ }
+ if (mOutputFluids != null) {
+ for (var fluid : mOutputFluids) {
+ if (fluid == null) continue;
+ if (lines >= MAX_LINES) {
+ ret.append("...");
+ return ret.toString();
+ }
+ lines++;
+ ret.append(EnumChatFormatting.AQUA)
+ .append(fluid.getLocalizedName())
+ .append(EnumChatFormatting.WHITE)
+ .append(" x ")
+ .append(EnumChatFormatting.GOLD)
+ .append(formatNumbers(fluid.amount))
+ .append("L")
+ .append(EnumChatFormatting.WHITE);
+ appendRate.apply(fluid.amount);
+ ret.append('\n');
+ }
+ }
+ return ret.toString();
+ }
+
protected void drawTexts(DynamicPositionedColumn screenElements, SlotWidget inventorySlot) {
screenElements.setSynced(false)
.setSpace(0)
@@ -2218,6 +2289,29 @@ public abstract class GT_MetaTileEntity_MultiBlockBase extends MetaTileEntity
&& shouldDisplayCheckRecipeResult()))
.widget(new CheckRecipeResultSyncer(() -> checkRecipeResult, (result) -> checkRecipeResult = result));
+ // Display current recipe
+ screenElements.widget(
+ TextWidget.dynamicString(this::generateCurrentRecipeInfoString)
+ .setSynced(false)
+ .setTextAlignment(Alignment.CenterLeft)
+ .setEnabled(
+ widget -> (mOutputFluids != null && mOutputFluids.length > 0)
+ || (mOutputItems != null && mOutputItems.length > 0)))
+ .widget(
+ new FakeSyncWidget.ListSyncer<>(
+ () -> mOutputFluids != null ? Arrays.asList(mOutputFluids) : Collections.emptyList(),
+ val -> mOutputFluids = val.toArray(new FluidStack[0]),
+ NetworkUtils::writeFluidStack,
+ NetworkUtils::readFluidStack))
+ .widget(
+ new FakeSyncWidget.ListSyncer<>(
+ () -> mOutputItems != null ? Arrays.asList(mOutputItems) : Collections.emptyList(),
+ val -> mOutputItems = val.toArray(new ItemStack[0]),
+ NetworkUtils::writeItemStack,
+ NetworkUtils::readItemStack))
+ .widget(new FakeSyncWidget.IntegerSyncer(() -> mProgresstime, val -> mProgresstime = val))
+ .widget(new FakeSyncWidget.IntegerSyncer(() -> mMaxProgresstime, val -> mMaxProgresstime = val));
+
screenElements.widget(
new TextWidget(GT_Utility.trans("144", "Missing Turbine Rotor")).setDefaultColor(COLOR_TEXT_WHITE.get())
.setEnabled(widget -> {