diff options
Diffstat (limited to 'src/main/java/tectech/recipe/ResearchStationFrontend.java')
-rw-r--r-- | src/main/java/tectech/recipe/ResearchStationFrontend.java | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/src/main/java/tectech/recipe/ResearchStationFrontend.java b/src/main/java/tectech/recipe/ResearchStationFrontend.java new file mode 100644 index 0000000000..ce26215fbb --- /dev/null +++ b/src/main/java/tectech/recipe/ResearchStationFrontend.java @@ -0,0 +1,101 @@ +package tectech.recipe; + +import static gregtech.api.util.GTUtility.trans; +import static net.minecraft.util.StatCollector.translateToLocalFormatted; + +import java.util.Collections; +import java.util.List; +import java.util.function.Supplier; + +import javax.annotation.ParametersAreNonnullByDefault; + +import com.gtnewhorizons.modularui.api.math.Pos2d; +import com.gtnewhorizons.modularui.api.screen.ModularWindow; +import com.gtnewhorizons.modularui.common.widget.ProgressBar; + +import gregtech.api.recipe.BasicUIPropertiesBuilder; +import gregtech.api.recipe.NEIRecipePropertiesBuilder; +import gregtech.api.recipe.RecipeMapFrontend; +import gregtech.api.util.GTUtility; +import gregtech.api.util.MethodsReturnNonnullByDefault; +import gregtech.nei.RecipeDisplayInfo; +import tectech.thing.gui.TecTechUITextures; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class ResearchStationFrontend extends RecipeMapFrontend { + + public ResearchStationFrontend(BasicUIPropertiesBuilder uiPropertiesBuilder, + NEIRecipePropertiesBuilder neiPropertiesBuilder) { + super(uiPropertiesBuilder, neiPropertiesBuilder); + } + + @Override + public List<Pos2d> getItemInputPositions(int itemInputCount) { + return Collections.singletonList(new Pos2d(52, 33)); + } + + @Override + public List<Pos2d> getItemOutputPositions(int itemOutputCount) { + return Collections.singletonList(new Pos2d(106, 33)); + } + + @Override + public Pos2d getSpecialItemPosition() { + return new Pos2d(124, 62); + } + + @Override + protected void drawEnergyInfo(RecipeDisplayInfo recipeInfo) { + long eut = recipeInfo.recipe.mEUt; + int computation = recipeInfo.recipe.mDuration; + short ampere = (short) (recipeInfo.recipe.mSpecialValue & 0xFFFF); + short minComputationPerSec = (short) (recipeInfo.recipe.mSpecialValue >>> 16); + recipeInfo.drawText( + translateToLocalFormatted( + "tt.nei.research.max_eu", + GTUtility.formatNumbers( + (1 + (computation - minComputationPerSec) / minComputationPerSec) * eut * ampere * 20))); + recipeInfo.drawText(trans("153", "Usage: ") + GTUtility.formatNumbers(eut * ampere) + " EU/t"); + recipeInfo.drawText(trans("154", "Voltage: ") + GTUtility.formatNumbers(eut) + " EU/t"); + recipeInfo.drawText(trans("155", "Amperage: ") + GTUtility.formatNumbers(ampere)); + recipeInfo + .drawText(translateToLocalFormatted("tt.nei.research.computation", GTUtility.formatNumbers(computation))); + recipeInfo.drawText( + translateToLocalFormatted( + "tt.nei.research.min_computation", + GTUtility.formatNumbers(minComputationPerSec))); + } + + @Override + protected void drawDurationInfo(RecipeDisplayInfo recipeInfo) {} + + @Override + public void addProgressBar(ModularWindow.Builder builder, Supplier<Float> progressSupplier, Pos2d windowOffset) { + int bar1Width = 25; + int bar2Width = 11; + int bar3Height = 18; + List<Supplier<Float>> splitProgress = splitProgress(progressSupplier, bar1Width, bar2Width, bar3Height); + builder.widget( + new ProgressBar().setTexture(TecTechUITextures.PROGRESSBAR_RESEARCH_STATION_1, bar1Width) + .setDirection(ProgressBar.Direction.RIGHT) + .setProgress(splitProgress.get(0)) + .setSynced(false, false) + .setPos(new Pos2d(81, 40).add(windowOffset)) + .setSize(bar1Width, 5)); + builder.widget( + new ProgressBar().setTexture(TecTechUITextures.PROGRESSBAR_RESEARCH_STATION_2, bar2Width) + .setDirection(ProgressBar.Direction.RIGHT) + .setProgress(splitProgress.get(1)) + .setSynced(false, false) + .setPos(new Pos2d(124, 40).add(windowOffset)) + .setSize(bar2Width, 5)); + builder.widget( + new ProgressBar().setTexture(TecTechUITextures.PROGRESSBAR_RESEARCH_STATION_3, bar3Height) + .setDirection(ProgressBar.Direction.DOWN) + .setProgress(splitProgress.get(2)) + .setSynced(false, false) + .setPos(new Pos2d(128, 44).add(windowOffset)) + .setSize(10, bar3Height)); + } +} |