diff options
author | minecraft7771 <maxim235@gmx.de> | 2023-01-01 17:51:25 +0100 |
---|---|---|
committer | minecraft7771 <maxim235@gmx.de> | 2023-01-01 17:51:25 +0100 |
commit | 753886d280d4bf171a759f419fbd5eb3a4f741f5 (patch) | |
tree | b07e8c39a4fab72afa3b14d2aac19c79bbf0347a /src/main | |
parent | 70587f1332126e762303431306f68d9f28ce79a4 (diff) | |
download | GT5-Unofficial-753886d280d4bf171a759f419fbd5eb3a4f741f5.tar.gz GT5-Unofficial-753886d280d4bf171a759f419fbd5eb3a4f741f5.tar.bz2 GT5-Unofficial-753886d280d4bf171a759f419fbd5eb3a4f741f5.zip |
Added pop up to manipulate input parameters
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java | 53 |
1 files changed, 45 insertions, 8 deletions
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java index b9da45c5d9..86b577fe43 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/base/GT_MetaTileEntity_MultiblockBase_EM.java @@ -34,19 +34,19 @@ import com.gtnewhorizon.structurelib.structure.IStructureElement; import com.gtnewhorizon.structurelib.util.Vec3Impl; import com.gtnewhorizons.modularui.api.drawable.IDrawable; import com.gtnewhorizons.modularui.api.drawable.UITexture; +import com.gtnewhorizons.modularui.api.math.Alignment; +import com.gtnewhorizons.modularui.api.math.Color; 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.api.widget.Widget; -import com.gtnewhorizons.modularui.common.widget.ButtonWidget; -import com.gtnewhorizons.modularui.common.widget.DrawableWidget; -import com.gtnewhorizons.modularui.common.widget.DynamicPositionedColumn; -import com.gtnewhorizons.modularui.common.widget.FakeSyncWidget; -import com.gtnewhorizons.modularui.common.widget.SlotWidget; +import com.gtnewhorizons.modularui.common.widget.*; +import com.gtnewhorizons.modularui.common.widget.textfield.TextFieldWidget; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.enums.Textures; +import gregtech.api.gui.modularui.GT_UITextures; import gregtech.api.interfaces.IHatchElement; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; @@ -86,6 +86,9 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt protected static Textures.BlockIcons.CustomIcon ScreenOFF; protected static Textures.BlockIcons.CustomIcon ScreenON; + /** Base ID for the LED window popup. LED 1 I0 will have ID 100, LED 1 I1 101... */ + protected static int LED_WINDOW_BASE_ID = 100; + // Sound resource - same as with screen but override getActivitySound public static final ResourceLocation activitySound = new ResourceLocation(Reference.MODID + ":fx_lo_freq"); @@ -2960,6 +2963,9 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt .setSize(166, 12)); for (int hatch = 0; hatch < 10; hatch++) { for (int param = 0; param < 2; param++) { + int ledID = hatch + param * 10; + buildContext.addSyncedWindow( + LED_WINDOW_BASE_ID + ledID, (player) -> createLEDConfigurationWindow(ledID)); addParameterLED(builder, hatch, param, true); addParameterLED(builder, hatch, param, false); } @@ -3118,10 +3124,36 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt return (ButtonWidget) button; } + private ModularWindow createLEDConfigurationWindow(int ledID) { + return ModularWindow.builder(100, 40) + .setBackground(TecTechUITextures.BACKGROUND_SCREEN_BLUE) + .widget(ButtonWidget.closeWindowButton(true).setPos(85, 3)) + .widget(new TextFieldWidget() + .setTextColor(Color.LIGHT_BLUE.normal) + .setNumbersDouble((val) -> val) + .setGetter(() -> Double.toString(parametrization.iParamsIn[ledID])) + .setSetter(val -> { + try { + parametrization.iParamsIn[ledID] = Double.parseDouble(val); + } catch (Exception e) { + e.printStackTrace(); + } + }) + .setTextAlignment(Alignment.CenterLeft) + .setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD) + .setPos(5, 20) + .setSize(90, 15)) + .widget(new TextWidget((ledID % 10) + ":" + (ledID / 10) + ":I") + .setDefaultColor(Color.WHITE.normal) + .setTextAlignment(Alignment.Center) + .setPos(5, 5)) + .build(); + } + private void addParameterLED(ModularWindow.Builder builder, int hatch, int param, boolean input) { final int parameterIndex = hatch + param * 10; final int posIndex = hatch * 2 + param; - DrawableWidget ledWidget = new DrawableWidget() { + ButtonWidget ledWidget = new ButtonWidget() { @Override public void draw(float partialTicks) { IDrawable texture = null; @@ -3201,11 +3233,16 @@ public abstract class GT_MetaTileEntity_MultiblockBase_EM extends GT_MetaTileEnt // no-op break; } - setDrawable(texture); + setBackground(texture); super.draw(partialTicks); GL11.glColor4f(1f, 1f, 1f, 1f); } - }; + }.setOnClick((clickData, widget) -> { + if (!widget.isClient() + && input + && parametrization.eParamsInStatus[parameterIndex] != LedStatus.STATUS_UNUSED) + widget.getContext().openSyncedWindow(LED_WINDOW_BASE_ID + parameterIndex); + }); builder.widget(ledWidget .dynamicTooltip(() -> { if (input) { |