cloak menu

This commit is contained in:
2025-03-16 16:25:15 +01:00
parent 2798cd2b3b
commit 6e7acb2716
12 changed files with 164 additions and 19 deletions
@@ -0,0 +1,77 @@
package org.saturnclient.saturnclient.menus;
import org.saturnclient.saturnclient.auth.SaturnApi;
import org.saturnclient.saturnclient.cloaks.Cloaks;
import org.saturnclient.ui.SaturnUi;
import org.saturnclient.ui.Textures;
import org.saturnclient.ui.animations.FadeIn;
import org.saturnclient.ui.widgets.SaturnClickableSprite;
import org.saturnclient.ui.widgets.SaturnSprite;
import org.saturnclient.ui.widgets.SaturnImage;
import net.minecraft.text.Text;
public class CloaksMenu extends SaturnUi {
public CloaksMenu() {
super(Text.of("Cloaks 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(new FadeIn(1)));
int tabsX = (width - 43) / 2;
int tabsY = rectY - 17;
draw(new SaturnSprite(Textures.TABS)
.setX(tabsX)
.setY(tabsY)
.setWidth(43)
.setHeight(15)
.setAnimations(new FadeIn(1)));
int cloakWidth = 32;
int cloakHeight = 70;
int modX = rectX + 15;
int modY = rectY + 10;
int col = 0;
for (String cloak : Cloaks.availableCloaks) {
draw(new SaturnImage(Textures.getCloakPreview(cloak))
.setX(modX)
.setY(modY)
.setWidth(cloakWidth)
.setHeight(cloakHeight));
draw(new SaturnClickableSprite(Textures.BUTTON_BORDER, () -> {
SaturnApi.setCloak(cloak);
})
.setColor(10526880)
.setX(modX - 3)
.setY(modY - 3)
.setWidth(cloakWidth + 6)
.setHeight(cloakHeight + 6));
col++;
if (col < 6) {
modX += cloakWidth + 21;
} else {
modX = rectX + 15;
modY += cloakHeight + 20;
col = 0;
}
}
}
}
@@ -6,7 +6,7 @@ import org.saturnclient.ui.animations.FadeIn;
import org.saturnclient.ui.animations.Slide; import org.saturnclient.ui.animations.Slide;
import org.saturnclient.ui.widgets.SaturnButton; import org.saturnclient.ui.widgets.SaturnButton;
import org.saturnclient.ui.widgets.SaturnImageButton; import org.saturnclient.ui.widgets.SaturnImageButton;
import org.saturnclient.ui.widgets.SaturnSprite; import org.saturnclient.ui.widgets.SaturnImage;
import net.minecraft.text.Text; import net.minecraft.text.Text;
@@ -42,7 +42,7 @@ public class MainMenu extends SaturnUi {
draw( draw(
new SaturnImageButton(Textures.COSMETICS, 14, 14, new SaturnImageButton(Textures.COSMETICS, 14, 14,
() -> { () -> {
client.setScreen(new SettingsMenu()); client.setScreen(new CloaksMenu());
}) })
.setX((width / 2) + (buttonWidth / 2) + 3) .setX((width / 2) + (buttonWidth / 2) + 3)
.setY((height - buttonHeight) / 2) .setY((height - buttonHeight) / 2)
@@ -53,7 +53,7 @@ public class MainMenu extends SaturnUi {
int logoSize = 49; int logoSize = 49;
draw( draw(
new SaturnSprite(Textures.LOGO_TEXT) new SaturnImage(Textures.LOGO_TEXT)
.setX((width - logoSize) / 2) .setX((width - logoSize) / 2)
.setY((height - 8) / 2 - 23) .setY((height - 8) / 2 - 23)
.setWidth(logoSize) .setWidth(logoSize)
@@ -61,7 +61,7 @@ public class MainMenu extends SaturnUi {
.setAnimations(new FadeIn(3))); .setAnimations(new FadeIn(3)));
draw( draw(
new SaturnSprite(Textures.LOGO) new SaturnImage(Textures.LOGO)
.setX((width - logoSize) / 2) .setX((width - logoSize) / 2)
.setY(height / 2 - logoSize - 24) .setY(height / 2 - logoSize - 24)
.setWidth(logoSize) .setWidth(logoSize)
@@ -4,7 +4,7 @@ import org.saturnclient.ui.SaturnUi;
import org.saturnclient.ui.Textures; import org.saturnclient.ui.Textures;
import org.saturnclient.ui.animations.FadeIn; import org.saturnclient.ui.animations.FadeIn;
import org.saturnclient.ui.widgets.SaturnClickableImage; import org.saturnclient.ui.widgets.SaturnClickableImage;
import org.saturnclient.ui.widgets.SaturnImage; import org.saturnclient.ui.widgets.SaturnSprite;
import net.minecraft.text.Text; import net.minecraft.text.Text;
@@ -18,9 +18,9 @@ public class SettingsMenu extends SaturnUi {
int rectWidth = 330; int rectWidth = 330;
int rectHeight = 228; int rectHeight = 228;
int modsX = (width - rectWidth) / 2; int modsX = (width - rectWidth) / 2;
int modsY = (height - rectHeight) / 2; int modsY = (height - rectHeight + 15) / 2;
draw(new SaturnImage(Textures.SETTINGS_BG) draw(new SaturnSprite(Textures.SETTINGS_BG)
.setX(modsX) .setX(modsX)
.setY(modsY) .setY(modsY)
.setWidth(rectWidth) .setWidth(rectWidth)
@@ -30,7 +30,7 @@ public class SettingsMenu extends SaturnUi {
int tabsX = (width - 43) / 2; int tabsX = (width - 43) / 2;
int tabsY = modsY - 17; int tabsY = modsY - 17;
draw(new SaturnImage(Textures.TABS) draw(new SaturnSprite(Textures.TABS)
.setX(tabsX) .setX(tabsX)
.setY(tabsY) .setY(tabsY)
.setWidth(43) .setWidth(43)
@@ -70,7 +70,7 @@ public class SettingsMenu extends SaturnUi {
int modY = modsY + 10; int modY = modsY + 10;
int col = 0; int col = 0;
for (int i = 0; i < 10; i++) { for (int i = 0; i < 20; i++) {
draw(new SaturnClickableImage(Textures.MOD, (m) -> { draw(new SaturnClickableImage(Textures.MOD, (m) -> {
}) })
.setX(modX) .setX(modX)
@@ -20,4 +20,8 @@ public class Textures {
public static final Identifier SETTINGS_BG = Identifier.ofVanilla("saturn/settings_bg"); public static final Identifier SETTINGS_BG = Identifier.ofVanilla("saturn/settings_bg");
public static final Identifier TABS = Identifier.ofVanilla("saturn/tabs"); public static final Identifier TABS = Identifier.ofVanilla("saturn/tabs");
public static final Identifier MOD = Identifier.of("saturnclient", "textures/gui/components/mod.png"); public static final Identifier MOD = Identifier.of("saturnclient", "textures/gui/components/mod.png");
public static Identifier getCloakPreview(String cloak) {
return Identifier.of("saturnclient", "textures/gui/cloak/" + cloak + ".png");
}
} }
@@ -48,11 +48,13 @@ public class SaturnButton extends SaturnWidget {
} }
} }
int i = this.active ? 16777215 : 10526880; if (alpha != 0.0f) {
context.drawText(minecraftClient.textRenderer, this.text, int i = this.active ? 16777215 : 10526880;
this.x + ((this.width - minecraftClient.textRenderer.getWidth(this.text)) / 2), context.drawText(minecraftClient.textRenderer, this.text,
this.y + ((this.height - minecraftClient.textRenderer.fontHeight + 1) / 2), this.x + ((this.width - minecraftClient.textRenderer.getWidth(this.text)) / 2),
hovering ? hoverColor : i | MathHelper.ceil(this.alpha * 255.0F) << 24, false); this.y + ((this.height - minecraftClient.textRenderer.fontHeight + 1) / 2),
hovering ? hoverColor : i | MathHelper.ceil(this.alpha * 255.0F) << 24, false);
}
} }
@Override @Override
@@ -9,11 +9,14 @@ import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.RenderLayer;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.math.ColorHelper; import net.minecraft.util.math.ColorHelper;
import net.minecraft.util.math.MathHelper;
public class SaturnClickableImage extends SaturnWidget { public class SaturnClickableImage extends SaturnWidget {
public Identifier sprite; public Identifier sprite;
public boolean selected = false; public boolean selected = false;
public Consumer<SaturnClickableImage> onPress; public Consumer<SaturnClickableImage> onPress;
public int color = ColorHelper.getWhite(1.0f);
public int hoverColor = SaturnClient.COLOR;
public SaturnClickableImage(Identifier sprite, Consumer<SaturnClickableImage> onPress) { public SaturnClickableImage(Identifier sprite, Consumer<SaturnClickableImage> onPress) {
this.sprite = sprite; this.sprite = sprite;
@@ -29,7 +32,7 @@ public class SaturnClickableImage extends SaturnWidget {
@Override @Override
public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) { public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) {
context.drawTexture(RenderLayer::getGuiTextured, sprite, x, y, 0, 0, width, height, width, context.drawTexture(RenderLayer::getGuiTextured, sprite, x, y, 0, 0, width, height, width,
height, hovering || selected ? SaturnClient.COLOR : ColorHelper.getWhite(alpha)); height, (hovering || selected ? hoverColor : color) | MathHelper.ceil(this.alpha * 255.0F) << 24);
} }
@Override @Override
@@ -41,4 +44,5 @@ public class SaturnClickableImage extends SaturnWidget {
this.selected = selected; this.selected = selected;
return this; return this;
} }
} }
@@ -0,0 +1,58 @@
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;
import net.minecraft.util.math.MathHelper;
public class SaturnClickableSprite extends SaturnWidget {
public Identifier sprite;
public boolean selected = false;
public Consumer<SaturnClickableSprite> onPress;
public int color = ColorHelper.getWhite(1.0f);
public int hoverColor = SaturnClient.COLOR;
public SaturnClickableSprite(Identifier sprite, Consumer<SaturnClickableSprite> onPress) {
this.sprite = sprite;
this.onPress = onPress;
}
public SaturnClickableSprite(Identifier sprite, Runnable onPress) {
this(sprite, (m) -> {
onPress.run();
});
}
@Override
public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) {
context.drawGuiTexture(RenderLayer::getGuiTextured, sprite, this.x,
this.y, this.width, this.height,
(hovering || selected ? hoverColor : color) | MathHelper.ceil(this.alpha * 255.0F) << 24);
}
@Override
public void click() {
this.onPress.accept(this);
}
public SaturnClickableSprite setSelected(boolean selected) {
this.selected = selected;
return this;
}
public SaturnClickableSprite setColor(int color) {
this.color = color;
return this;
}
public SaturnClickableSprite setHoverColor(int color) {
this.hoverColor = color;
return this;
}
}
@@ -16,7 +16,7 @@ public class SaturnImage extends SaturnWidget {
@Override @Override
public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) { public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) {
context.drawGuiTexture(RenderLayer::getGuiTextured, sprite, this.x, context.drawTexture(RenderLayer::getGuiTextured, sprite, x, y, 0, 0, width, height, width,
this.y, this.width, this.height, ColorHelper.getWhite(this.alpha)); height, ColorHelper.getWhite(alpha));
} }
} }
@@ -16,7 +16,7 @@ public class SaturnSprite extends SaturnWidget {
@Override @Override
public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) { public void render(DrawContext context, boolean hovering, int mouseX, int mouseY) {
context.drawTexture(RenderLayer::getGuiTextured, sprite, x, y, 0, 0, width, height, width, context.drawGuiTexture(RenderLayer::getGuiTextured, sprite, this.x,
height, ColorHelper.getWhite(alpha)); this.y, this.width, this.height, ColorHelper.getWhite(this.alpha));
} }
} }

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 150 KiB

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB