Fixed sidebar with abstractions

This commit is contained in:
2026-02-21 19:57:40 +01:00
parent 52f80281bd
commit 88fe53b907
2 changed files with 25 additions and 23 deletions
@@ -44,4 +44,12 @@ public class Theme {
config.property("Font", WIDGET_RADIUS);
}
public static int getBg(boolean hover) {
return hover ? ACCENT.value : PRIMARY.value;
}
public static int getFg(boolean hover) {
return hover ? ACCENT_FG.value : PRIMARY_FG.value;
}
}
@@ -77,21 +77,17 @@ public class Sidebar extends Element {
int i = 0;
for (SidebarComponent component : components) {
int y = component.end ? ((height - (sp * bottomRow)) - (s * 2)) : (padding + (sp * topRow));
boolean selected = ctx.isHovering(0, y - (padding / 2), s2, s2) || active == i;
renderScope.drawRoundedRectangle(padding / 2, y - (padding / 2), s + padding,
s + padding, Theme.WIDGET_RADIUS.value, Theme.getBg(selected));
renderScope.drawTexture(component.sprite, padding, y, 0, 0, s, s, Theme.getFg(selected));
if (component.end) {
int y = (height - (sp * bottomRow)) - (s * 2);
if (ctx.isHovering(0, y - (padding / 2), s2, s2) || active == i) {
}
renderScope.drawRoundedRectangle(padding / 2, y - (padding / 2), s + padding,
s + padding, Theme.WIDGET_RADIUS.value, Theme.PRIMARY.value);
renderScope.drawTexture(component.sprite, padding, y, 0, 0, s, s, Theme.PRIMARY_FG.value);
bottomRow += 1;
} else {
int y = padding + (sp * topRow);
if (ctx.isHovering(0, y - (padding / 2), s2, s2) || active == i) {
}
renderScope.drawRoundedRectangle(padding / 2, y - (padding / 2), s + padding,
s + padding, Theme.WIDGET_RADIUS.value, Theme.PRIMARY.value);
renderScope.drawTexture(component.sprite, padding, y, 0, 0, s, s, Theme.PRIMARY_FG.value);
topRow += 1;
}
@@ -104,26 +100,24 @@ public class Sidebar extends Element {
int topRow = 0;
int bottomRow = 0;
int gap = 5; // same 5px gap here
int gap = 5;
int padding = 10;
int sp = 30 - padding + gap;
int s = 30 - (padding * 2);
int s2 = s + padding;
for (SidebarComponent component : components) {
int y = component.end ? ((height - (sp * bottomRow)) - (s * 2)) : (padding + (sp * topRow));
boolean hovering = Utils.isHovering(mouseX - (padding / 2), mouseY - (y - (padding / 2)), s2, s2, scale);
if (hovering) {
component.onClick.run();
break;
}
if (component.end) {
int y = (height - (sp * bottomRow)) - (s * 2);
if (Utils.isHovering(mouseX - (padding / 2), mouseY - (y - (padding / 2)), s2, s2, scale)) {
component.onClick.run();
break;
}
bottomRow += 1;
} else {
int y = padding + (sp * topRow);
if (Utils.isHovering(mouseX - (padding / 2), mouseY - (y - (padding / 2)), s2, s2, scale)) {
component.onClick.run();
break;
}
topRow += 1;
}
}