diff --git a/src/main/java/org/saturnclient/saturnclient/SaturnClient.java b/src/main/java/org/saturnclient/saturnclient/SaturnClient.java index 2ed2a85..824a865 100644 --- a/src/main/java/org/saturnclient/saturnclient/SaturnClient.java +++ b/src/main/java/org/saturnclient/saturnclient/SaturnClient.java @@ -1,6 +1,7 @@ package org.saturnclient.saturnclient; import net.fabricmc.api.ModInitializer; +import net.minecraft.util.math.ColorHelper; import org.saturnclient.saturnclient.cloaks.Cloaks; import org.saturnclient.saturnclient.event.KeyInputHandler; @@ -15,6 +16,7 @@ import org.slf4j.LoggerFactory; public class SaturnClient implements ModInitializer { public static final String MOD_ID = "saturnclient"; public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); + public static int COLOR = ColorHelper.getArgb(255, 251, 60, 79); @Override public void onInitialize() { diff --git a/src/main/java/org/saturnclient/saturnclient/menus/MainMenu.java b/src/main/java/org/saturnclient/saturnclient/menus/MainMenu.java index d810bde..eb33830 100644 --- a/src/main/java/org/saturnclient/saturnclient/menus/MainMenu.java +++ b/src/main/java/org/saturnclient/saturnclient/menus/MainMenu.java @@ -23,7 +23,7 @@ public class MainMenu extends SaturnUi { client.setScreen(new SettingsMenu()); }).setX((width - buttonWidth) / 2).setY((height - buttonHeight) / 2).setWidth(buttonWidth) .setHeight(buttonHeight) - .setAnimation(SaturnAnimation.FADE_SLIDE.distance(15))); + .setAnimation(SaturnAnimation.FADE_SLIDE.offset(15).speed(0.1f))); draw( new SaturnImageButton(Textures.EMOTE, 14, 14, @@ -34,7 +34,7 @@ public class MainMenu extends SaturnUi { .setY((height - buttonHeight) / 2) .setWidth(buttonHeight) .setHeight(buttonHeight) - .setAnimation(SaturnAnimation.FADE_SLIDE.distance(15))); + .setAnimation(SaturnAnimation.FADE_SLIDE.offset(15).speed(0.1f))); draw( new SaturnImageButton(Textures.COSMETICS, 14, 14, @@ -45,6 +45,6 @@ public class MainMenu extends SaturnUi { .setY((height - buttonHeight) / 2) .setWidth(buttonHeight) .setHeight(buttonHeight) - .setAnimation(SaturnAnimation.FADE_SLIDE.distance(15))); + .setAnimation(SaturnAnimation.FADE_SLIDE.offset(15).speed(0.1f))); } } \ No newline at end of file diff --git a/src/main/java/org/saturnclient/saturnclient/menus/SettingsMenu.java b/src/main/java/org/saturnclient/saturnclient/menus/SettingsMenu.java index 6114a60..c598db0 100644 --- a/src/main/java/org/saturnclient/saturnclient/menus/SettingsMenu.java +++ b/src/main/java/org/saturnclient/saturnclient/menus/SettingsMenu.java @@ -2,37 +2,52 @@ package org.saturnclient.saturnclient.menus; import org.saturnclient.ui.SaturnUi; import org.saturnclient.ui.Textures; -import org.saturnclient.ui.widgets.SaturnImageButton; -import org.saturnclient.ui.widgets.SaturnInputBox; +import org.saturnclient.ui.widgets.SaturnClickableImage; +import org.saturnclient.ui.widgets.SaturnTexture; +import org.saturnclient.ui.SaturnAnimation; import net.minecraft.text.Text; public class SettingsMenu extends SaturnUi { - public SaturnImageButton searchButton; - public SaturnInputBox searchInputBox; - public SettingsMenu() { super(Text.literal("Settings")); } @Override protected void init() { - searchInputBox = new SaturnInputBox("Search", 10, 10, 100, 20); - searchInputBox.visible = false; - draw(searchInputBox); + int rectWidth = 330; + int rectHeight = 228; + int modsX = (width - rectWidth) / 2; + int modsY = (height - rectHeight) / 2; - searchButton = (SaturnImageButton) new SaturnImageButton(Textures.SEARCH, 10, - 10, - () -> { - searchInputBox.visible = !searchInputBox.visible; - if (searchInputBox.visible) { - searchButton.sprite = Textures.CLOSE; - } else { - searchInputBox.clearText(); - searchButton.sprite = Textures.SEARCH; - } - }).setWidth(30).setHeight(30).setX(30).setY(30); + draw(new SaturnTexture(Textures.SETTINGS_BG) + .setX(modsX) + .setY(modsY) + .setWidth(rectWidth) + .setHeight(rectHeight) + .setAnimation(SaturnAnimation.FADE_SLIDE)); - draw(searchButton); + draw(new SaturnTexture(Textures.TABS) + .setX((width - 43) / 2) + .setY(modsY - 16) + .setWidth(43) + .setHeight(15) + .setAnimation(SaturnAnimation.FADE_SLIDE)); + + int modX = modsX + 15; + + for (int i = 0; i < 3; i++) { + draw(new SaturnClickableImage(Textures.MOD, () -> { + System.out.println("Pressed"); + }) + .setBackground(false) + .setX(modX) + .setY(modsY + 10) + .setWidth(86) + .setHeight(20) + .setAnimation(SaturnAnimation.FADE_SLIDE.offset(40))); + + modX += 86 + 15; + } } } \ No newline at end of file diff --git a/src/main/java/org/saturnclient/ui/SaturnAnimation.java b/src/main/java/org/saturnclient/ui/SaturnAnimation.java index 15b3362..a36cebf 100644 --- a/src/main/java/org/saturnclient/ui/SaturnAnimation.java +++ b/src/main/java/org/saturnclient/ui/SaturnAnimation.java @@ -5,30 +5,37 @@ public enum SaturnAnimation { SLIDE, FADE_SLIDE; - public int distance = 0; - public int widgetY = 0; + public int offset = 10; + public float speed = 0.05f; public void apply(SaturnWidget widget) { switch (this) { case FADE: - widget.alpha = Math.min(widget.alpha + 0.05f, 1.0f); + widget.alpha = Math.min(widget.alpha + speed, 1.0f); break; case SLIDE: - if (widgetY < widget.y) { - widget.y -= 1; + if (offset > 0) { + widget.y--; + offset--; } break; case FADE_SLIDE: - widget.alpha = Math.min(widget.alpha + 0.05f, 1.0f); - if (widgetY < widget.y) { - widget.y -= 1; + widget.alpha = Math.min(widget.alpha + speed, 1.0f); + if (offset > 0) { + widget.y--; + offset--; } break; } } - public SaturnAnimation distance(int distance) { - this.distance = distance; + public SaturnAnimation offset(int offset) { + this.offset = offset; + return this; + } + + public SaturnAnimation speed(float speed) { + this.speed = speed; return this; } } diff --git a/src/main/java/org/saturnclient/ui/SaturnWidget.java b/src/main/java/org/saturnclient/ui/SaturnWidget.java index ea2811a..d92da92 100644 --- a/src/main/java/org/saturnclient/ui/SaturnWidget.java +++ b/src/main/java/org/saturnclient/ui/SaturnWidget.java @@ -10,7 +10,7 @@ public class SaturnWidget { public float alpha = 1.0f; public SaturnAnimation animation = null; public boolean visible = true; - + public void render(DrawContext context, boolean hovering) { } @@ -50,19 +50,8 @@ public class SaturnWidget { public SaturnWidget setAnimation(SaturnAnimation animation) { this.animation = animation; - switch (animation) { - case FADE: - this.alpha = 0.0f; - break; - case SLIDE: - this.animation.widgetY = y; - y += animation.distance; - break; - case FADE_SLIDE: - this.animation.widgetY = y; - y += animation.distance; - this.alpha = 0.0f; - break; + if (this.animation == SaturnAnimation.FADE || this.animation == SaturnAnimation.FADE_SLIDE) { + this.alpha = 0.0f; } return this; } diff --git a/src/main/java/org/saturnclient/ui/Textures.java b/src/main/java/org/saturnclient/ui/Textures.java index 9d04dbd..69fa8f1 100644 --- a/src/main/java/org/saturnclient/ui/Textures.java +++ b/src/main/java/org/saturnclient/ui/Textures.java @@ -9,7 +9,10 @@ public class Textures { 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"); - // Button Textures - public static final Identifier BUTTON_BORDER = Identifier.ofVanilla("widget/saturn/button_border"); - public static final Identifier BUTTON = Identifier.ofVanilla("widget/saturn/button"); + // Widgets + public static final Identifier BUTTON_BORDER = Identifier.ofVanilla("saturn/button_border"); + public static final Identifier BUTTON = Identifier.ofVanilla("saturn/button"); + public static final Identifier SETTINGS_BG = Identifier.ofVanilla("saturn/settings_bg"); + public static final Identifier TABS = Identifier.ofVanilla("saturn/tabs"); + public static final Identifier MOD = Identifier.of("saturnclient", "textures/gui/components/mod.png"); } diff --git a/src/main/java/org/saturnclient/ui/widgets/SaturnButton.java b/src/main/java/org/saturnclient/ui/widgets/SaturnButton.java index f58c88d..99558d6 100644 --- a/src/main/java/org/saturnclient/ui/widgets/SaturnButton.java +++ b/src/main/java/org/saturnclient/ui/widgets/SaturnButton.java @@ -1,6 +1,7 @@ package org.saturnclient.ui.widgets; import org.lwjgl.opengl.GL11; +import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.ui.SaturnWidget; import org.saturnclient.ui.Textures; @@ -16,6 +17,7 @@ public class SaturnButton extends SaturnWidget { public boolean active = true; public String text; public Runnable onPress; + public boolean background = true; public SaturnButton(String text, Runnable onPress) { this.text = text; @@ -26,22 +28,24 @@ public class SaturnButton extends SaturnWidget { public void render(DrawContext context, boolean hovering) { MinecraftClient minecraftClient = MinecraftClient.getInstance(); - RenderSystem.setShaderTexture(0, Textures.BUTTON); - RenderSystem.texParameter(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR_MIPMAP_LINEAR); + if (background) { + RenderSystem.setShaderTexture(0, Textures.BUTTON); + RenderSystem.texParameter(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR_MIPMAP_LINEAR); - context.drawGuiTexture(RenderLayer::getGuiTextured, Textures.BUTTON, this.x, - this.y, this.width, this.height, ColorHelper.getWhite(this.alpha)); + context.drawGuiTexture(RenderLayer::getGuiTextured, Textures.BUTTON, this.x, + this.y, this.width, this.height, ColorHelper.getWhite(this.alpha)); - if (hovering) { - context.drawGuiTexture(RenderLayer::getGuiTextured, Textures.BUTTON_BORDER, this.x, - this.y, this.width, this.height, ColorHelper.getArgb(255, 251, 60, 79)); + if (hovering) { + context.drawGuiTexture(RenderLayer::getGuiTextured, Textures.BUTTON_BORDER, this.x, + this.y, this.width, this.height, SaturnClient.COLOR); + } } int i = this.active ? 16777215 : 10526880; context.drawText(minecraftClient.textRenderer, this.text, this.x + ((this.width - minecraftClient.textRenderer.getWidth(this.text)) / 2), this.y + ((this.height - minecraftClient.textRenderer.fontHeight + 1) / 2), - i | MathHelper.ceil(this.alpha * 255.0F) << 24, false); + hovering ? SaturnClient.COLOR : i | MathHelper.ceil(this.alpha * 255.0F) << 24, false); } @Override diff --git a/src/main/java/org/saturnclient/ui/widgets/SaturnClickableImage.java b/src/main/java/org/saturnclient/ui/widgets/SaturnClickableImage.java new file mode 100644 index 0000000..b77e96a --- /dev/null +++ b/src/main/java/org/saturnclient/ui/widgets/SaturnClickableImage.java @@ -0,0 +1,39 @@ +package org.saturnclient.ui.widgets; + +import org.saturnclient.saturnclient.SaturnClient; + +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 Identifier sprite; + public boolean selected = false; + + public SaturnClickableImage(Identifier sprite, Runnable onPress) { + super("", onPress); + this.sprite = sprite; + } + + @Override + public void render(DrawContext context, boolean hovering) { + 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(); + } + + 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 746de54..fb20dd4 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 org.saturnclient.saturnclient.SaturnClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderLayer; import net.minecraft.util.Identifier; @@ -20,14 +21,18 @@ public class SaturnImageButton extends SaturnButton { @Override public void render(DrawContext context, boolean hovering) { super.render(context, hovering); - context.drawTexture(RenderLayer::getGuiTextured, sprite, x + (width - imageWidth) / 2, y + (height - imageHeight) / 2, 0, 0, imageWidth, imageHeight, imageWidth, - imageHeight, ColorHelper.getWhite(alpha)); + imageHeight, hovering ? SaturnClient.COLOR : ColorHelper.getWhite(alpha)); } @Override public void click() { this.onPress.run(); } + + public SaturnImageButton setBackground(boolean background) { + this.background = background; + return this; + } } diff --git a/src/main/java/org/saturnclient/ui/widgets/SaturnTexture.java b/src/main/java/org/saturnclient/ui/widgets/SaturnTexture.java index 93649d9..8f7a3fc 100644 --- a/src/main/java/org/saturnclient/ui/widgets/SaturnTexture.java +++ b/src/main/java/org/saturnclient/ui/widgets/SaturnTexture.java @@ -1,6 +1,7 @@ package org.saturnclient.ui.widgets; import org.saturnclient.ui.SaturnWidget; + import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderLayer; import net.minecraft.util.Identifier; @@ -15,7 +16,7 @@ public class SaturnTexture extends SaturnWidget { @Override public void render(DrawContext context, boolean hovering) { - context.drawTexture(RenderLayer::getGuiTextured, sprite, x, y, 0, 0, width, height, width, height, - ColorHelper.getWhite(alpha)); + context.drawGuiTexture(RenderLayer::getGuiTextured, sprite, this.x, + this.y, this.width, this.height, ColorHelper.getWhite(this.alpha)); } } diff --git a/src/main/resources/assets/minecraft/textures/gui/sprites/widget/saturn/button.png b/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/button.png similarity index 100% rename from src/main/resources/assets/minecraft/textures/gui/sprites/widget/saturn/button.png rename to src/main/resources/assets/minecraft/textures/gui/sprites/saturn/button.png diff --git a/src/main/resources/assets/minecraft/textures/gui/sprites/widget/saturn/button.png.mcmeta b/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/button.png.mcmeta similarity index 100% rename from src/main/resources/assets/minecraft/textures/gui/sprites/widget/saturn/button.png.mcmeta rename to src/main/resources/assets/minecraft/textures/gui/sprites/saturn/button.png.mcmeta diff --git a/src/main/resources/assets/minecraft/textures/gui/sprites/widget/saturn/button_border.png b/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/button_border.png similarity index 100% rename from src/main/resources/assets/minecraft/textures/gui/sprites/widget/saturn/button_border.png rename to src/main/resources/assets/minecraft/textures/gui/sprites/saturn/button_border.png diff --git a/src/main/resources/assets/minecraft/textures/gui/sprites/widget/saturn/button_border.png.mcmeta b/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/button_border.png.mcmeta similarity index 100% rename from src/main/resources/assets/minecraft/textures/gui/sprites/widget/saturn/button_border.png.mcmeta rename to src/main/resources/assets/minecraft/textures/gui/sprites/saturn/button_border.png.mcmeta diff --git a/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/rect.png b/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/rect.png new file mode 100644 index 0000000..7524902 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/rect.png differ diff --git a/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/rect.png.mcmeta b/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/rect.png.mcmeta new file mode 100644 index 0000000..4885e0d --- /dev/null +++ b/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/rect.png.mcmeta @@ -0,0 +1,10 @@ +{ + "gui": { + "scaling": { + "type": "nine_slice", + "width": 228, + "height": 228, + "border": 13 + } + } +} diff --git a/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/settings_bg.png b/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/settings_bg.png new file mode 100644 index 0000000..c9f9164 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/settings_bg.png differ diff --git a/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/tabs.png b/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/tabs.png new file mode 100644 index 0000000..4df55d9 Binary files /dev/null and b/src/main/resources/assets/minecraft/textures/gui/sprites/saturn/tabs.png differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/components/mod.png b/src/main/resources/assets/saturnclient/textures/gui/components/mod.png new file mode 100644 index 0000000..5301eee Binary files /dev/null and b/src/main/resources/assets/saturnclient/textures/gui/components/mod.png differ