a lot of stuff idk
This commit is contained in:
@@ -17,7 +17,7 @@ public class SaturnModule extends Element {
|
||||
private static ThemeManager theme = new ThemeManager("SaturnModule", "enabled", "hovering", "toggle-hovering");
|
||||
private static Property<Integer> bgColor = theme.property("bg-color", new Property<Integer>(-16777216));
|
||||
private static Property<Integer> fgColor = theme.property("fg-color", new Property<Integer>(-1));
|
||||
private static Property<Integer> iconColor = theme.property("icon-color", new Property<Integer>(-5592406));
|
||||
private static Property<Integer> iconColor = theme.property("icon-color", new Property<Integer>(-1));
|
||||
private static Property<Integer> toggleFg = theme.property("toggle-fg", new Property<Integer>(-1));
|
||||
private static Property<Integer> toggleBg = theme.property("toggle-bg", new Property<Integer>(-16777216));
|
||||
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
package org.saturnclient.ui2.components;
|
||||
|
||||
import org.saturnclient.saturnclient.config.Property;
|
||||
import org.saturnclient.saturnclient.config.ThemeManager;
|
||||
import org.saturnclient.ui2.Element;
|
||||
import org.saturnclient.ui2.RenderContext;
|
||||
import org.saturnclient.ui2.RenderScope;
|
||||
import org.saturnclient.ui2.Utils;
|
||||
|
||||
import net.minecraft.client.render.RenderLayer;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
public class Sidebar extends Element {
|
||||
private static ThemeManager theme = new ThemeManager("SideBar", "hovering");
|
||||
private static Property<Integer> bgColor = theme.property("bg-color", new Property<Integer>(0x90000000));
|
||||
private static Property<Integer> iconFg = theme.property("icon-fg", new Property<Integer>(-1));
|
||||
private static Property<Integer> iconBg = theme.property("icon-bg", new Property<Integer>(0x00000000));
|
||||
|
||||
private static Property<Integer> cornerRadius = theme.property("corner-radius", new Property<Integer>(10));
|
||||
private static Property<Integer> iconRadius = theme.property("icon-radius", new Property<Integer>(10));
|
||||
private static Property<Integer> padding = theme.property("padding", new Property<Integer>(10));
|
||||
|
||||
static {
|
||||
theme.propertyStateDefault("hovering", "icon-bg", -7643914);
|
||||
}
|
||||
|
||||
public static class SidebarComponent {
|
||||
Runnable onClick;
|
||||
boolean end;
|
||||
Identifier sprite;
|
||||
|
||||
public SidebarComponent(Identifier sprite, Runnable onClick, boolean end) {
|
||||
this.onClick = onClick;
|
||||
this.end = end;
|
||||
this.sprite = sprite;
|
||||
}
|
||||
}
|
||||
|
||||
SidebarComponent[] components;
|
||||
int active = 0;
|
||||
|
||||
public Sidebar(int active, SidebarComponent... components) {
|
||||
this.components = components;
|
||||
this.width = 30;
|
||||
this.height = 350;
|
||||
this.active = active;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(RenderScope renderScope, RenderContext ctx) {
|
||||
int topRow = 0;
|
||||
int bottomRow = 0;
|
||||
|
||||
int sp = 30 - padding.value;
|
||||
int s = 30 - (padding.value * 2);
|
||||
|
||||
renderScope.setRenderLayer(RenderLayer::getGuiTextured);
|
||||
|
||||
renderScope.drawRoundedRectangle(0, 0, width, height, cornerRadius.value, bgColor.value);
|
||||
|
||||
int i = 0;
|
||||
|
||||
for (SidebarComponent component : components) {
|
||||
if (component.end) {
|
||||
int y = (height - (sp * bottomRow)) - (s * 2);
|
||||
if (ctx.isHovering(padding.value, y, s, s) || active == i) {
|
||||
theme.setState("hovering");
|
||||
} else {
|
||||
theme.setState(null);
|
||||
}
|
||||
renderScope.drawRoundedRectangle(padding.value / 2, y - (padding.value / 2), s + padding.value, s + padding.value, iconRadius.value, iconBg.value);
|
||||
renderScope.drawTexture(component.sprite, padding.value, y, 0, 0, s, s, iconFg.value);
|
||||
bottomRow += 1;
|
||||
} else {
|
||||
int y = padding.value + ((sp) * topRow);
|
||||
if (ctx.isHovering(padding.value, y, s, s) || active == i) {
|
||||
theme.setState("hovering");
|
||||
} else {
|
||||
theme.setState(null);
|
||||
}
|
||||
renderScope.drawRoundedRectangle(padding.value / 2, y - (padding.value / 2), s + padding.value, s + padding.value, iconRadius.value, iconBg.value);
|
||||
renderScope.drawTexture(component.sprite, padding.value, y, 0, 0, s, s, iconFg.value);
|
||||
topRow += 1;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(int mouseX, int mouseY) {
|
||||
int topRow = 0;
|
||||
int bottomRow = 0;
|
||||
|
||||
int sp = 30 - padding.value;
|
||||
int s = 30 - (padding.value * 2);
|
||||
|
||||
for (SidebarComponent component : components) {
|
||||
if (component.end) {
|
||||
if (Utils.isHovering(mouseX - padding.value, mouseY - (height - (sp * bottomRow) - (s * 2)), s, s, scale)) {
|
||||
component.onClick.run();
|
||||
break;
|
||||
}
|
||||
bottomRow += 1;
|
||||
} else {
|
||||
if (Utils.isHovering(mouseX - padding.value, mouseY - (padding.value + ((sp) * topRow)), s, s, scale)) {
|
||||
component.onClick.run();
|
||||
break;
|
||||
}
|
||||
topRow += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,8 @@ import org.saturnclient.modules.Module;
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.saturnclient.config.Property;
|
||||
import org.saturnclient.saturnclient.config.ThemeManager;
|
||||
import org.saturnclient.saturnclient.menus.CloaksMenu;
|
||||
import org.saturnclient.saturnclient.menus.SaturnConfigEditor;
|
||||
import org.saturnclient.ui.Textures;
|
||||
import org.saturnclient.ui2.SaturnScreen;
|
||||
import org.saturnclient.ui2.components.SaturnModule;
|
||||
@@ -43,19 +45,19 @@ public class ModMenu extends SaturnScreen {
|
||||
draw(scroll.dimensions(scrollWidth, 350).center(width, height));
|
||||
|
||||
draw(new Sidebar(
|
||||
0,
|
||||
new Sidebar.SidebarComponent(Textures.MODS_TAB, () -> {
|
||||
SaturnClient.LOGGER.info("TOP");
|
||||
}, false),
|
||||
new Sidebar.SidebarComponent(Textures.MODS_TAB, () -> {
|
||||
SaturnClient.LOGGER.info("MID_TOP");
|
||||
new Sidebar.SidebarComponent(Textures.SETTINGS, () -> {
|
||||
SaturnClient.client.setScreen(new SaturnConfigEditor());
|
||||
}, false),
|
||||
|
||||
new Sidebar.SidebarComponent(Textures.MODS_TAB, () -> {
|
||||
SaturnClient.LOGGER.info("BOTTOM");
|
||||
}, true),
|
||||
new Sidebar.SidebarComponent(Textures.CLOAK, () -> {
|
||||
SaturnClient.client.setScreen(new CloaksMenu());
|
||||
}, false),
|
||||
|
||||
new Sidebar.SidebarComponent(Textures.MODS_TAB, () -> {
|
||||
SaturnClient.LOGGER.info("MID-BOTTOM");
|
||||
new Sidebar.SidebarComponent(Textures.CLOSE, () -> {
|
||||
this.close();
|
||||
}, true)
|
||||
).centerOffset(width, height, -(scrollWidth / 2 + 20), 0));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user