diff --git a/src/main/java/org/saturnclient/saturnclient/menus/CloaksMenu.java b/src/main/java/org/saturnclient/saturnclient/menus/CloaksMenu.java index 7638821..ea5bae1 100644 --- a/src/main/java/org/saturnclient/saturnclient/menus/CloaksMenu.java +++ b/src/main/java/org/saturnclient/saturnclient/menus/CloaksMenu.java @@ -6,6 +6,7 @@ import org.saturnclient.saturnclient.auth.SaturnSocket; import org.saturnclient.saturnclient.cosmetics.cloaks.Cloaks; import org.saturnclient.ui.SaturnUi; import org.saturnclient.ui.Textures; +import org.saturnclient.ui.widgets.SaturnClickableImage; import org.saturnclient.ui.widgets.SaturnClickableSprite; import org.saturnclient.ui.widgets.SaturnImage; import org.saturnclient.ui.widgets.SaturnScroll; @@ -25,25 +26,56 @@ public class CloaksMenu extends SaturnUi { int rectY = (height - rectHeight + 15) / 2; draw( - new SaturnSprite(Textures.SETTINGS_BG) - .setX(rectX) - .setY(rectY) - .setWidth(rectWidth) - .setHeight(rectHeight) - .setAnimations(SaturnClient.getAnimations()) - ); + new SaturnSprite(Textures.SETTINGS_BG) + .setX(rectX) + .setY(rectY) + .setWidth(rectWidth) + .setHeight(rectHeight) + .setAnimations(SaturnClient.getAnimations())); int tabsX = (width - 43) / 2; int tabsY = rectY - 17; draw( - new SaturnSprite(Textures.TABS) - .setX(tabsX) - .setY(tabsY) - .setWidth(43) - .setHeight(15) - .setAnimations(SaturnClient.getAnimations()) - ); + new SaturnSprite(Textures.TABS) + .setX(tabsX) + .setY(tabsY) + .setWidth(43) + .setHeight(15) + .setAnimations(SaturnClient.getAnimations())); + + int tabSize = 9; + tabsX = (width - tabSize) / 2; + draw( + new SaturnClickableImage(Textures.HAT, () -> { + client.setScreen(new HatsMenu()); + }) + .setX(tabsX) + .setY(tabsY + 4) + .setWidth(tabSize) + .setHeight(7) + .setAnimations(SaturnClient.getAnimations())); + + draw( + new SaturnClickableImage(Textures.CLOAK, () -> { + client.setScreen(new CloaksMenu()); + }) + .setColor(SaturnClient.COLOR.value) + .setX(tabsX - 12) + .setY(tabsY + 3) + .setWidth(tabSize) + .setHeight(tabSize) + .setAnimations(SaturnClient.getAnimations())); + + draw( + new SaturnClickableImage(Textures.SEARCH, () -> { + System.out.println("Pressed"); + }) + .setX(tabsX + 12) + .setY(tabsY + 3) + .setWidth(tabSize) + .setHeight(tabSize) + .setAnimations(SaturnClient.getAnimations())); int cloakWidth = 32; int cloakHeight = 70; @@ -56,23 +88,21 @@ public class CloaksMenu extends SaturnUi { for (String cloak : Cloaks.availableCloaks) { modsScroll.draw( - new SaturnClickableSprite(Textures.BUTTON_BORDER, () -> { - Cloaks.setCloak(SaturnSocket.uuid, cloak); - }) - .setColor(10526880) - .setX(modX) - .setY(modY) - .setWidth(cloakWidth + 6) - .setHeight(cloakHeight + 6) - ); + new SaturnClickableSprite(Textures.BUTTON_BORDER, () -> { + Cloaks.setCloak(SaturnSocket.uuid, cloak); + }) + .setColor(10526880) + .setX(modX) + .setY(modY) + .setWidth(cloakWidth + 6) + .setHeight(cloakHeight + 6)); modsScroll.draw( - new SaturnImage(Textures.getCloakPreview(cloak)) - .setX(modX + 3) - .setY(modY + 3) - .setWidth(cloakWidth) - .setHeight(cloakHeight) - ); + new SaturnImage(Textures.getCloakPreview(cloak)) + .setX(modX + 3) + .setY(modY + 3) + .setWidth(cloakWidth) + .setHeight(cloakHeight)); col++; @@ -86,13 +116,12 @@ public class CloaksMenu extends SaturnUi { } draw( - modsScroll - .setX(rectX + 17) - .setY(rectY + 10) - .setWidth(rectWidth - 17) - .setHeight(rectHeight - 10) - .setAnimations(SaturnClient.getAnimations()) - ); + modsScroll + .setX(rectX + 17) + .setY(rectY + 10) + .setWidth(rectWidth - 17) + .setHeight(rectHeight - 10) + .setAnimations(SaturnClient.getAnimations())); super.init(); } diff --git a/src/main/java/org/saturnclient/saturnclient/menus/HatsMenu.java b/src/main/java/org/saturnclient/saturnclient/menus/HatsMenu.java new file mode 100644 index 0000000..d7b4a02 --- /dev/null +++ b/src/main/java/org/saturnclient/saturnclient/menus/HatsMenu.java @@ -0,0 +1,128 @@ +package org.saturnclient.saturnclient.menus; + +import net.minecraft.text.Text; +import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.saturnclient.cosmetics.Hats; +import org.saturnclient.ui.SaturnUi; +import org.saturnclient.ui.Textures; +import org.saturnclient.ui.widgets.SaturnClickableImage; +import org.saturnclient.ui.widgets.SaturnClickableSprite; +import org.saturnclient.ui.widgets.SaturnImage; +import org.saturnclient.ui.widgets.SaturnScroll; +import org.saturnclient.ui.widgets.SaturnSprite; + +public class HatsMenu extends SaturnUi { + + public HatsMenu() { + super(Text.of("Hats Menu")); + } + + @Override + protected void init() { + int rectWidth = 330; + int rectHeight = 228; + int rectX = (width - rectWidth) / 2; + int rectY = (height - rectHeight + 15) / 2; + + draw( + new SaturnSprite(Textures.SETTINGS_BG) + .setX(rectX) + .setY(rectY) + .setWidth(rectWidth) + .setHeight(rectHeight) + .setAnimations(SaturnClient.getAnimations())); + + int tabsX = (width - 43) / 2; + int tabsY = rectY - 17; + + draw( + new SaturnSprite(Textures.TABS) + .setX(tabsX) + .setY(tabsY) + .setWidth(43) + .setHeight(15) + .setAnimations(SaturnClient.getAnimations())); + + int tabSize = 9; + tabsX = (width - tabSize) / 2; + draw( + new SaturnClickableImage(Textures.HAT, () -> { + client.setScreen(new HatsMenu()); + }) + .setColor(SaturnClient.COLOR.value) + .setX(tabsX) + .setY(tabsY + 4) + .setWidth(tabSize) + .setHeight(7) + .setAnimations(SaturnClient.getAnimations())); + + draw( + new SaturnClickableImage(Textures.CLOAK, () -> { + client.setScreen(new CloaksMenu()); + }) + .setX(tabsX - 12) + .setY(tabsY + 3) + .setWidth(tabSize) + .setHeight(tabSize) + .setAnimations(SaturnClient.getAnimations())); + + draw( + new SaturnClickableImage(Textures.SEARCH, () -> { + System.out.println("Pressed"); + }) + .setX(tabsX + 12) + .setY(tabsY + 3) + .setWidth(tabSize) + .setHeight(tabSize) + .setAnimations(SaturnClient.getAnimations())); + + int hatSize = 32; + + int modX = 0; + int modY = 0; + int col = 0; + + SaturnScroll modsScroll = new SaturnScroll(); + + for (String hat : Hats.availableHats) { + modsScroll.draw( + new SaturnClickableSprite(Textures.BUTTON_BORDER, () -> { + // Hats.setHat(SaturnSocket.uuid, hat); + }) + .setColor(10526880) + .setX(modX) + .setY(modY) + .setWidth(hatSize + 6) + .setHeight(hatSize + 6) + .setAnimations(SaturnClient.getAnimations())); + + modsScroll.draw( + new SaturnImage(Textures.getHatPreview(hat)) + .setX(modX + 3) + .setY(modY + 3) + .setWidth(hatSize) + .setHeight(hatSize) + .setAnimations(SaturnClient.getAnimations())); + + col++; + + if (col < 6) { + modX += hatSize + 21; + } else { + modX = 0; + modY += hatSize + 20; + col = 0; + } + } + + draw( + modsScroll + .setX(rectX + 17) + .setY(rectY + 10) + .setWidth(rectWidth - 17) + .setHeight(rectHeight - 10) + .setAnimations(SaturnClient.getAnimations())); + + super.init(); + } +} diff --git a/src/main/java/org/saturnclient/ui/Textures.java b/src/main/java/org/saturnclient/ui/Textures.java index 360679e..1b39151 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 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 = Identifier.of("saturnclient", "textures/gui/components/settings.png"); - public static final Identifier TOGGLE_INDICATOR = Identifier.of("saturnclient", "textures/gui/components/toggle_indicator.png"); + public static final Identifier CLOAK = Identifier.of("saturnclient", "textures/gui/components/cloak.png"); + public static final Identifier HAT = Identifier.of("saturnclient", "textures/gui/components/hat.png"); + public static final Identifier TOGGLE_INDICATOR = Identifier.of("saturnclient", + "textures/gui/components/toggle_indicator.png"); public static final Identifier TOGGLE_BG = Identifier.of("saturnclient", "textures/gui/components/toggle_bg.png"); public static final Identifier LOGO = Identifier.of("saturnclient", "textures/logo/logo.png"); @@ -27,6 +30,10 @@ public class Textures { return Identifier.of("saturnclient", "textures/gui/cloak/" + cloak + ".png"); } + public static Identifier getHatPreview(String hat) { + return Identifier.of("saturnclient", "textures/gui/hat/" + hat + ".png"); + } + public static Identifier getModIcon(String modId) { return Identifier.of("saturnclient", "textures/gui/mod/" + modId + ".png"); } diff --git a/src/main/resources/assets/saturnclient/textures/gui/components/cloak.png b/src/main/resources/assets/saturnclient/textures/gui/components/cloak.png new file mode 100644 index 0000000..ab853dd Binary files /dev/null and b/src/main/resources/assets/saturnclient/textures/gui/components/cloak.png differ diff --git a/src/main/resources/assets/saturnclient/textures/gui/components/hat.png b/src/main/resources/assets/saturnclient/textures/gui/components/hat.png new file mode 100644 index 0000000..b84414f Binary files /dev/null and b/src/main/resources/assets/saturnclient/textures/gui/components/hat.png differ diff --git a/test.svg b/test.svg new file mode 100644 index 0000000..3455337 --- /dev/null +++ b/test.svg @@ -0,0 +1 @@ + \ No newline at end of file