diff --git a/src/main/java/org/saturnclient/saturnclient/menus/SettingsMenu.java b/src/main/java/org/saturnclient/saturnclient/menus/SettingsMenu.java index c598db0..51570f4 100644 --- a/src/main/java/org/saturnclient/saturnclient/menus/SettingsMenu.java +++ b/src/main/java/org/saturnclient/saturnclient/menus/SettingsMenu.java @@ -27,27 +27,66 @@ public class SettingsMenu extends SaturnUi { .setHeight(rectHeight) .setAnimation(SaturnAnimation.FADE_SLIDE)); + int tabsX = (width - 43) / 2; + int tabsY = modsY - 17; + draw(new SaturnTexture(Textures.TABS) - .setX((width - 43) / 2) - .setY(modsY - 16) + .setX(tabsX) + .setY(tabsY) .setWidth(43) .setHeight(15) .setAnimation(SaturnAnimation.FADE_SLIDE)); + int tabSize = 9; + tabsX = (width - tabSize) / 2; + draw(new SaturnClickableImage(Textures.SETTINGS_TAB, () -> { + System.out.println("Pressed"); + }) + .setX(tabsX) + .setY(tabsY + 3) + .setWidth(tabSize) + .setHeight(tabSize) + .setAnimation(SaturnAnimation.FADE_SLIDE)); + + draw(new SaturnClickableImage(Textures.MODS_TAB, () -> { + System.out.println("Pressed"); + }) + .setX(tabsX - 12) + .setY(tabsY + 3) + .setWidth(tabSize) + .setHeight(tabSize) + .setAnimation(SaturnAnimation.FADE_SLIDE)); + + draw(new SaturnClickableImage(Textures.SEARCH, () -> { + System.out.println("Pressed"); + }) + .setX(tabsX + 12) + .setY(tabsY + 3) + .setWidth(tabSize) + .setHeight(tabSize) + .setAnimation(SaturnAnimation.FADE_SLIDE)); + int modX = modsX + 15; + int modY = modsY + 10; + int col = 0; - for (int i = 0; i < 3; i++) { - draw(new SaturnClickableImage(Textures.MOD, () -> { - System.out.println("Pressed"); + for (int i = 0; i < 10; i++) { + draw(new SaturnClickableImage(Textures.MOD, (m) -> { }) - .setBackground(false) .setX(modX) - .setY(modsY + 10) + .setY(modY) .setWidth(86) - .setHeight(20) - .setAnimation(SaturnAnimation.FADE_SLIDE.offset(40))); + .setHeight(20)); - modX += 86 + 15; + col++; + + if (col < 3) { + modX += 86 + 15; + } else { + modX = modsX + 15; + modY += 20 + 20; + col = 0; + } } } } \ No newline at end of file diff --git a/src/main/java/org/saturnclient/ui/SaturnUi.java b/src/main/java/org/saturnclient/ui/SaturnUi.java index d5ad953..42ba492 100644 --- a/src/main/java/org/saturnclient/ui/SaturnUi.java +++ b/src/main/java/org/saturnclient/ui/SaturnUi.java @@ -37,7 +37,7 @@ public class SaturnUi extends Screen { boolean isMouseInside = widget.x < mouseX && widget.x + widget.width > mouseX && widget.y < mouseY && widget.y + widget.height > mouseY; - widget.render(context, isMouseInside); + widget.render(context, isMouseInside, mouseX, mouseY); } } diff --git a/src/main/java/org/saturnclient/ui/SaturnWidget.java b/src/main/java/org/saturnclient/ui/SaturnWidget.java index d92da92..0aa7555 100644 --- a/src/main/java/org/saturnclient/ui/SaturnWidget.java +++ b/src/main/java/org/saturnclient/ui/SaturnWidget.java @@ -11,7 +11,7 @@ public class SaturnWidget { public SaturnAnimation animation = null; public boolean visible = true; - public void render(DrawContext context, boolean hovering) { + public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) { } public void click() { diff --git a/src/main/java/org/saturnclient/ui/Textures.java b/src/main/java/org/saturnclient/ui/Textures.java index 69fa8f1..50a6cc9 100644 --- a/src/main/java/org/saturnclient/ui/Textures.java +++ b/src/main/java/org/saturnclient/ui/Textures.java @@ -8,6 +8,9 @@ public class Textures { public static final Identifier EMOTE = Identifier.of("saturnclient", "textures/gui/components/emote.png"); public static final Identifier SEARCH = Identifier.of("saturnclient", "textures/gui/components/search.png"); public static final Identifier CLOSE = Identifier.of("saturnclient", "textures/gui/components/close.png"); + public static final Identifier MODS_TAB = Identifier.of("saturnclient", "textures/gui/components/mods_tab.png"); + public static final Identifier SETTINGS_TAB = Identifier.of("saturnclient", + "textures/gui/components/settings_tab.png"); // Widgets public static final Identifier BUTTON_BORDER = Identifier.ofVanilla("saturn/button_border"); diff --git a/src/main/java/org/saturnclient/ui/widgets/SaturnButton.java b/src/main/java/org/saturnclient/ui/widgets/SaturnButton.java index 99558d6..5cdca22 100644 --- a/src/main/java/org/saturnclient/ui/widgets/SaturnButton.java +++ b/src/main/java/org/saturnclient/ui/widgets/SaturnButton.java @@ -1,12 +1,11 @@ package org.saturnclient.ui.widgets; +import java.util.function.Consumer; import org.lwjgl.opengl.GL11; import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.ui.SaturnWidget; import org.saturnclient.ui.Textures; - import com.mojang.blaze3d.systems.RenderSystem; - import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderLayer; @@ -16,16 +15,22 @@ import net.minecraft.util.math.MathHelper; public class SaturnButton extends SaturnWidget { public boolean active = true; public String text; - public Runnable onPress; + public Consumer onPress; public boolean background = true; - public SaturnButton(String text, Runnable onPress) { + public SaturnButton(String text, Consumer onPress) { this.text = text; this.onPress = onPress; } + public SaturnButton(String text, Runnable onPress) { + this(text, (b) -> { + onPress.run(); + }); + } + @Override - public void render(DrawContext context, boolean hovering) { + public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) { MinecraftClient minecraftClient = MinecraftClient.getInstance(); if (background) { @@ -50,6 +55,6 @@ public class SaturnButton extends SaturnWidget { @Override public void click() { - this.onPress.run(); + this.onPress.accept(this); } } diff --git a/src/main/java/org/saturnclient/ui/widgets/SaturnClickableImage.java b/src/main/java/org/saturnclient/ui/widgets/SaturnClickableImage.java index b77e96a..14a686e 100644 --- a/src/main/java/org/saturnclient/ui/widgets/SaturnClickableImage.java +++ b/src/main/java/org/saturnclient/ui/widgets/SaturnClickableImage.java @@ -1,39 +1,44 @@ package org.saturnclient.ui.widgets; +import java.util.function.Consumer; + import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.ui.SaturnWidget; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderLayer; import net.minecraft.util.Identifier; import net.minecraft.util.math.ColorHelper; -public class SaturnClickableImage extends SaturnButton { +public class SaturnClickableImage extends SaturnWidget { public Identifier sprite; public boolean selected = false; + public Consumer onPress; + + public SaturnClickableImage(Identifier sprite, Consumer onPress) { + this.sprite = sprite; + this.onPress = onPress; + } public SaturnClickableImage(Identifier sprite, Runnable onPress) { - super("", onPress); - this.sprite = sprite; + this(sprite, (m) -> { + onPress.run(); + }); } @Override - public void render(DrawContext context, boolean hovering) { + public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) { context.drawTexture(RenderLayer::getGuiTextured, sprite, x, y, 0, 0, width, height, width, height, hovering || selected ? SaturnClient.COLOR : ColorHelper.getWhite(alpha)); } @Override public void click() { - this.onPress.run(); + this.onPress.accept(this); } public SaturnClickableImage setSelected(boolean selected) { this.selected = selected; return this; } - - public SaturnClickableImage setBackground(boolean background) { - this.background = background; - return this; - } } diff --git a/src/main/java/org/saturnclient/ui/widgets/SaturnImageButton.java b/src/main/java/org/saturnclient/ui/widgets/SaturnImageButton.java index fb20dd4..e056066 100644 --- a/src/main/java/org/saturnclient/ui/widgets/SaturnImageButton.java +++ b/src/main/java/org/saturnclient/ui/widgets/SaturnImageButton.java @@ -1,5 +1,6 @@ package org.saturnclient.ui.widgets; +import java.util.function.Consumer; import org.saturnclient.saturnclient.SaturnClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderLayer; @@ -10,17 +11,26 @@ public class SaturnImageButton extends SaturnButton { public Identifier sprite; public int imageWidth; public int imageHeight; + public Consumer onPress; - public SaturnImageButton(Identifier sprite, int imageWidth, int imageHeight, Runnable onPress) { - super("", onPress); + public SaturnImageButton(Identifier sprite, int imageWidth, int imageHeight, Consumer onPress) { + super("", (b) -> { + }); this.sprite = sprite; this.imageWidth = imageWidth; this.imageHeight = imageHeight; + this.onPress = onPress; + } + + public SaturnImageButton(Identifier sprite, int imageWidth, int imageHeight, Runnable onPress) { + this(sprite, imageWidth, imageHeight, (b) -> { + onPress.run(); + }); } @Override - public void render(DrawContext context, boolean hovering) { - super.render(context, hovering); + public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) { + super.render(context, hovering, mouseX, mouseY); context.drawTexture(RenderLayer::getGuiTextured, sprite, x + (width - imageWidth) / 2, y + (height - imageHeight) / 2, 0, 0, imageWidth, imageHeight, imageWidth, imageHeight, hovering ? SaturnClient.COLOR : ColorHelper.getWhite(alpha)); @@ -28,7 +38,7 @@ public class SaturnImageButton extends SaturnButton { @Override public void click() { - this.onPress.run(); + this.onPress.accept(this); } public SaturnImageButton setBackground(boolean background) { diff --git a/src/main/java/org/saturnclient/ui/widgets/SaturnInputBox.java b/src/main/java/org/saturnclient/ui/widgets/SaturnInputBox.java index 8821e1c..e904639 100644 --- a/src/main/java/org/saturnclient/ui/widgets/SaturnInputBox.java +++ b/src/main/java/org/saturnclient/ui/widgets/SaturnInputBox.java @@ -61,7 +61,7 @@ public class SaturnInputBox extends SaturnWidget { } @Override - public void render(DrawContext context, boolean hovering) { + public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) { context.drawGuiTexture(RenderLayer::getGuiTextured, Textures.BUTTON, this.x, this.y, this.width, this.height, ColorHelper.getWhite(this.alpha)); diff --git a/src/main/java/org/saturnclient/ui/widgets/SaturnText.java b/src/main/java/org/saturnclient/ui/widgets/SaturnText.java index f8f3cda..fbaaff7 100644 --- a/src/main/java/org/saturnclient/ui/widgets/SaturnText.java +++ b/src/main/java/org/saturnclient/ui/widgets/SaturnText.java @@ -13,7 +13,7 @@ public class SaturnText extends SaturnWidget { } @Override - public void render(DrawContext context, boolean hovering) { + public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) { context.drawText(MinecraftClient.getInstance().textRenderer, text, x, y, ColorHelper.getWhite(alpha), false); } } diff --git a/src/main/java/org/saturnclient/ui/widgets/SaturnTexture.java b/src/main/java/org/saturnclient/ui/widgets/SaturnTexture.java index 8f7a3fc..68fcaaa 100644 --- a/src/main/java/org/saturnclient/ui/widgets/SaturnTexture.java +++ b/src/main/java/org/saturnclient/ui/widgets/SaturnTexture.java @@ -15,7 +15,7 @@ public class SaturnTexture extends SaturnWidget { } @Override - public void render(DrawContext context, boolean hovering) { + public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) { context.drawGuiTexture(RenderLayer::getGuiTextured, sprite, this.x, this.y, this.width, this.height, ColorHelper.getWhite(this.alpha)); }