From 2a84c7ca410bfc09c2327416a6a63728b75caf35 Mon Sep 17 00:00:00 2001 From: Christian Date: Sat, 28 Jan 2023 18:19:57 +0100 Subject: [PATCH] WIP Continued modifier settings gui overhaul --- .../effortlessbuilding/AllGuiTextures.java | 64 +++++++++++++++++ .../buildmodifier/BaseModifier.java | 2 +- .../foundation/gui/widget/ScrollInput.java | 2 + .../gui/buildmodifier/ArrayEntry.java | 67 +++++++++++++----- .../gui/buildmodifier/BaseModifierEntry.java | 51 +++++++++---- .../gui/buildmodifier/MirrorEntry.java | 6 +- .../gui/buildmodifier/ModifiersScreen.java | 57 +++++++++++---- .../buildmodifier/ModifiersScreenList.java | 64 ++++++++++++++--- .../gui/buildmodifier/RadialMirrorEntry.java | 6 +- .../assets/effortlessbuilding/lang/en_us.json | 10 ++- .../textures/gui/display_link.png | Bin 1164 -> 0 bytes .../textures/gui/modifiers.png | Bin 0 -> 2405 bytes 12 files changed, 269 insertions(+), 60 deletions(-) create mode 100644 src/main/java/nl/requios/effortlessbuilding/AllGuiTextures.java delete mode 100644 src/main/resources/assets/effortlessbuilding/textures/gui/display_link.png create mode 100644 src/main/resources/assets/effortlessbuilding/textures/gui/modifiers.png diff --git a/src/main/java/nl/requios/effortlessbuilding/AllGuiTextures.java b/src/main/java/nl/requios/effortlessbuilding/AllGuiTextures.java new file mode 100644 index 0000000..3843a43 --- /dev/null +++ b/src/main/java/nl/requios/effortlessbuilding/AllGuiTextures.java @@ -0,0 +1,64 @@ +package nl.requios.effortlessbuilding; + +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.GuiComponent; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import nl.requios.effortlessbuilding.create.foundation.gui.UIRenderHelper; +import nl.requios.effortlessbuilding.create.foundation.gui.element.ScreenElement; +import nl.requios.effortlessbuilding.create.foundation.utility.Color; + +public enum AllGuiTextures implements ScreenElement { + ARRAY_ENTRY("modifiers", 256, 60), + MIRROR_ENTRY("modifiers", 0, 60, 256, 60), + RADIAL_MIRROR_ENTRY("modifiers", 0, 120, 256, 60), + ; + public final ResourceLocation location; + public int width, height; + public int startX, startY; + private AllGuiTextures(String location, int width, int height) { + this(location, 0, 0, width, height); + } + + private AllGuiTextures(int startX, int startY) { + this("icons", startX * 16, startY * 16, 16, 16); + } + + private AllGuiTextures(String location, int startX, int startY, int width, int height) { + this(EffortlessBuilding.MODID, location, startX, startY, width, height); + } + + private AllGuiTextures(String namespace, String location, int startX, int startY, int width, int height) { + this.location = new ResourceLocation(namespace, "textures/gui/" + location + ".png"); + this.width = width; + this.height = height; + this.startX = startX; + this.startY = startY; + } + + @OnlyIn(Dist.CLIENT) + public void bind() { + RenderSystem.setShaderTexture(0, location); + } + + @OnlyIn(Dist.CLIENT) + @Override + public void render(PoseStack ms, int x, int y) { + bind(); + GuiComponent.blit(ms, x, y, 0, startX, startY, width, height, 256, 256); + } + + @OnlyIn(Dist.CLIENT) + public void render(PoseStack ms, int x, int y, GuiComponent component) { + bind(); + component.blit(ms, x, y, startX, startY, width, height); + } + + @OnlyIn(Dist.CLIENT) + public void render(PoseStack ms, int x, int y, Color c) { + bind(); + UIRenderHelper.drawColoredTexture(ms, c, x, y, startX, startY, width, height); + } +} diff --git a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/BaseModifier.java b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/BaseModifier.java index c629147..cc3d345 100644 --- a/src/main/java/nl/requios/effortlessbuilding/buildmodifier/BaseModifier.java +++ b/src/main/java/nl/requios/effortlessbuilding/buildmodifier/BaseModifier.java @@ -6,7 +6,7 @@ import net.minecraft.world.entity.player.Player; import nl.requios.effortlessbuilding.utilities.BlockSet; public abstract class BaseModifier { - public boolean enabled = false; + public boolean enabled = true; public abstract void findCoordinates(BlockSet blocks, Player player); diff --git a/src/main/java/nl/requios/effortlessbuilding/create/foundation/gui/widget/ScrollInput.java b/src/main/java/nl/requios/effortlessbuilding/create/foundation/gui/widget/ScrollInput.java index fa27a6f..44423b3 100644 --- a/src/main/java/nl/requios/effortlessbuilding/create/foundation/gui/widget/ScrollInput.java +++ b/src/main/java/nl/requios/effortlessbuilding/create/foundation/gui/widget/ScrollInput.java @@ -106,6 +106,8 @@ public class ScrollInput extends AbstractSimiWidget { @Override public boolean mouseScrolled(double mouseX, double mouseY, double delta) { + if (!this.visible || !this.isHovered) return false; //Added + if (inverted) delta *= -1; diff --git a/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayEntry.java b/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayEntry.java index 1b01e49..7ef3f81 100644 --- a/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayEntry.java +++ b/src/main/java/nl/requios/effortlessbuilding/gui/buildmodifier/ArrayEntry.java @@ -9,9 +9,11 @@ import net.minecraft.network.chat.Component; import net.minecraft.ChatFormatting; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import nl.requios.effortlessbuilding.AllGuiTextures; import nl.requios.effortlessbuilding.EffortlessBuilding; import nl.requios.effortlessbuilding.buildmodifier.Array; import nl.requios.effortlessbuilding.buildmodifier.BaseModifier; +import nl.requios.effortlessbuilding.create.foundation.gui.AbstractSimiScreen; import nl.requios.effortlessbuilding.create.foundation.gui.widget.Label; import nl.requios.effortlessbuilding.create.foundation.gui.widget.ScrollInput; import nl.requios.effortlessbuilding.create.foundation.utility.Components; @@ -31,10 +33,11 @@ public class ArrayEntry extends BaseModifierEntry { protected Vector offsetInputs = new Vector<>(3); protected Vector