scroll issue fixed
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package org.saturnclient.saturnclient.menus;
|
||||
|
||||
import net.minecraft.text.Text;
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.saturnclient.config.ConfigManager;
|
||||
import org.saturnclient.saturnmods.ModManager;
|
||||
import org.saturnclient.saturnmods.SaturnMod;
|
||||
@@ -11,9 +13,9 @@ import org.saturnclient.ui.components.SaturnModComp;
|
||||
import org.saturnclient.ui.widgets.SaturnClickableImage;
|
||||
import org.saturnclient.ui.widgets.SaturnScroll;
|
||||
import org.saturnclient.ui.widgets.SaturnSprite;
|
||||
import net.minecraft.text.Text;
|
||||
|
||||
public class ModMenu extends SaturnUi {
|
||||
|
||||
public ModMenu() {
|
||||
super(Text.literal("Mods"));
|
||||
}
|
||||
@@ -25,54 +27,64 @@ public class ModMenu extends SaturnUi {
|
||||
int modsX = (width - rectWidth) / 2;
|
||||
int modsY = (height - rectHeight + 15) / 2;
|
||||
|
||||
draw(new SaturnSprite(Textures.SETTINGS_BG)
|
||||
draw(
|
||||
new SaturnSprite(Textures.SETTINGS_BG)
|
||||
.setX(modsX)
|
||||
.setY(modsY)
|
||||
.setWidth(rectWidth)
|
||||
.setHeight(rectHeight)
|
||||
.setAnimations(new Slide(1, 10)));
|
||||
.setAnimations(new Slide(1, 10))
|
||||
);
|
||||
|
||||
int tabsX = (width - 43) / 2;
|
||||
int tabsY = modsY - 17;
|
||||
|
||||
draw(new SaturnSprite(Textures.TABS)
|
||||
draw(
|
||||
new SaturnSprite(Textures.TABS)
|
||||
.setX(tabsX)
|
||||
.setY(tabsY)
|
||||
.setWidth(43)
|
||||
.setHeight(15)
|
||||
.setAnimations(new Slide(1, 10)));
|
||||
.setAnimations(new Slide(1, 10))
|
||||
);
|
||||
|
||||
int tabSize = 9;
|
||||
tabsX = (width - tabSize) / 2;
|
||||
draw(new SaturnClickableImage(Textures.SETTINGS, () -> {
|
||||
System.out.println("Pressed");
|
||||
})
|
||||
draw(
|
||||
new SaturnClickableImage(Textures.SETTINGS, () -> {
|
||||
System.out.println("Pressed");
|
||||
})
|
||||
.setX(tabsX)
|
||||
.setY(tabsY + 3)
|
||||
.setWidth(tabSize)
|
||||
.setHeight(tabSize)
|
||||
.setAnimations(new FadeIn(2))
|
||||
.setAnimations(new Slide(1, 10)));
|
||||
.setAnimations(new Slide(1, 10))
|
||||
);
|
||||
|
||||
draw(new SaturnClickableImage(Textures.MODS_TAB, () -> {
|
||||
System.out.println("Pressed");
|
||||
})
|
||||
draw(
|
||||
new SaturnClickableImage(Textures.MODS_TAB, () -> {
|
||||
System.out.println("Pressed");
|
||||
})
|
||||
.setX(tabsX - 12)
|
||||
.setY(tabsY + 3)
|
||||
.setWidth(tabSize)
|
||||
.setHeight(tabSize)
|
||||
.setAnimations(new FadeIn(2))
|
||||
.setAnimations(new Slide(1, 10)));
|
||||
.setAnimations(new Slide(1, 10))
|
||||
);
|
||||
|
||||
draw(new SaturnClickableImage(Textures.SEARCH, () -> {
|
||||
System.out.println("Pressed");
|
||||
})
|
||||
draw(
|
||||
new SaturnClickableImage(Textures.SEARCH, () -> {
|
||||
System.out.println("Pressed");
|
||||
})
|
||||
.setX(tabsX + 12)
|
||||
.setY(tabsY + 3)
|
||||
.setWidth(tabSize)
|
||||
.setHeight(tabSize)
|
||||
.setAnimations(new FadeIn(2))
|
||||
.setAnimations(new Slide(1, 10)));
|
||||
.setAnimations(new Slide(1, 10))
|
||||
);
|
||||
|
||||
int modX = 0;
|
||||
int modY = 0;
|
||||
@@ -81,11 +93,14 @@ public class ModMenu extends SaturnUi {
|
||||
SaturnScroll modsScroll = new SaturnScroll();
|
||||
|
||||
for (SaturnMod mod : ModManager.MODS) {
|
||||
modsScroll.draw(new SaturnModComp(mod)
|
||||
SaturnClient.LOGGER.info(mod.getName());
|
||||
modsScroll.draw(
|
||||
new SaturnModComp(mod)
|
||||
.setX(modX)
|
||||
.setY(modY)
|
||||
.setWidth(86)
|
||||
.setHeight(20));
|
||||
.setHeight(20)
|
||||
);
|
||||
|
||||
col++;
|
||||
|
||||
@@ -98,8 +113,14 @@ public class ModMenu extends SaturnUi {
|
||||
}
|
||||
}
|
||||
|
||||
draw(modsScroll.setX(modsX + 17).setY(modsY + 10).setWidth(rectWidth - 17).setHeight(rectHeight - 10)
|
||||
.setAnimations(new Slide(1, 10)));
|
||||
draw(
|
||||
modsScroll
|
||||
.setX(modsX + 17)
|
||||
.setY(modsY + 10)
|
||||
.setWidth(rectWidth - 17)
|
||||
.setHeight(rectHeight - 20)
|
||||
.setAnimations(new Slide(1, 10))
|
||||
);
|
||||
|
||||
super.init();
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import net.minecraft.client.gui.DrawContext;
|
||||
import net.minecraft.client.util.math.MatrixStack;
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import net.minecraft.network.packet.s2c.custom.DebugRedstoneUpdateOrderCustomPayload.Wire;
|
||||
import org.saturnclient.ui.SaturnWidget;
|
||||
|
||||
public class SaturnScroll extends SaturnWidget {
|
||||
@@ -40,26 +40,30 @@ public class SaturnScroll extends SaturnWidget {
|
||||
) {
|
||||
context.enableScissor(0, 0, width, height);
|
||||
|
||||
for (SaturnWidget child : children) {
|
||||
if (!child.visible) continue;
|
||||
for (SaturnWidget widget : children) {
|
||||
if (!widget.visible) continue;
|
||||
|
||||
double adjustedMouseX = (mouseX - widget.x) * scale;
|
||||
double adjustedMouseY = (mouseY - widget.y + scroll) * scale;
|
||||
boolean isMouseInside =
|
||||
child.x < mouseX &&
|
||||
child.x + child.width > mouseX &&
|
||||
child.y < mouseY &&
|
||||
child.y + child.height > mouseY;
|
||||
adjustedMouseX >= 0 &&
|
||||
adjustedMouseX <= widget.width &&
|
||||
adjustedMouseY >= 0 &&
|
||||
adjustedMouseY <= widget.height;
|
||||
|
||||
if (child.y - scroll < height && child.y + child.height > scroll) {
|
||||
if (
|
||||
widget.y - scroll < height && widget.y + widget.height > scroll
|
||||
) {
|
||||
MatrixStack matrices = context.getMatrices();
|
||||
matrices.push();
|
||||
matrices.translate(child.x, child.y - scroll, 0);
|
||||
matrices.scale(child.scale, child.scale, 1.0f);
|
||||
matrices.translate(widget.x, widget.y - scroll, 0);
|
||||
matrices.scale(widget.scale, widget.scale, 1.0f);
|
||||
|
||||
child.render(
|
||||
widget.render(
|
||||
context,
|
||||
isMouseInside,
|
||||
mouseX - child.x,
|
||||
mouseY - (child.y - scroll)
|
||||
(int) adjustedMouseX,
|
||||
(int) adjustedMouseY
|
||||
);
|
||||
matrices.pop();
|
||||
}
|
||||
@@ -69,10 +73,9 @@ public class SaturnScroll extends SaturnWidget {
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
if (isScrollable()) {
|
||||
for (SaturnWidget child : children) {
|
||||
maxScroll = Math.max(maxScroll, child.y - height);
|
||||
}
|
||||
maxScroll = 0;
|
||||
for (SaturnWidget child : children) {
|
||||
maxScroll = Math.max(maxScroll, child.y + child.height - height);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,8 +87,8 @@ public class SaturnScroll extends SaturnWidget {
|
||||
}
|
||||
|
||||
public boolean isScrollable() {
|
||||
for (SaturnWidget child : children) {
|
||||
if (child.y + child.height > height) {
|
||||
for (SaturnWidget widget : children) {
|
||||
if (widget.y + widget.height > height) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -94,55 +97,45 @@ public class SaturnScroll extends SaturnWidget {
|
||||
|
||||
@Override
|
||||
public void keyPressed(int keyCode, int scanCode, int modifiers) {
|
||||
for (SaturnWidget child : children) {
|
||||
if (!child.visible || !child.focused) {
|
||||
for (SaturnWidget widget : children) {
|
||||
if (!widget.visible || !widget.focused) {
|
||||
continue;
|
||||
}
|
||||
|
||||
child.keyPressed(keyCode, scanCode, modifiers);
|
||||
widget.keyPressed(keyCode, scanCode, modifiers);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void charTyped(char typedChar) {
|
||||
for (SaturnWidget child : children) {
|
||||
if (!child.visible || !child.focused) {
|
||||
for (SaturnWidget widget : children) {
|
||||
if (!widget.visible || !widget.focused) {
|
||||
continue;
|
||||
}
|
||||
|
||||
child.charTyped(typedChar);
|
||||
widget.charTyped(typedChar);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void click(int mouseX, int mouseY) {
|
||||
System.out.println(
|
||||
"[SaturnScroll] Click at: x=" + mouseX + ", y=" + mouseY
|
||||
);
|
||||
|
||||
for (SaturnWidget widget : children) {
|
||||
widget.focused = false;
|
||||
if (!widget.visible) {
|
||||
continue;
|
||||
}
|
||||
|
||||
double adjustedMouseX = (mouseX - widget.x);
|
||||
double adjustedMouseY = (mouseY - widget.y);
|
||||
double adjustedMouseX = (mouseX - widget.x) * scale;
|
||||
double adjustedMouseY =
|
||||
(mouseY - (widget.y - scroll)) * widget.scale;
|
||||
boolean isMouseInside =
|
||||
adjustedMouseX >= 0 &&
|
||||
adjustedMouseX <= widget.width &&
|
||||
adjustedMouseY >= 0 &&
|
||||
adjustedMouseY <= widget.height;
|
||||
|
||||
System.out.println(
|
||||
widget.getClass().getName() +
|
||||
" Adjusted at: x=" +
|
||||
adjustedMouseX +
|
||||
", y=" +
|
||||
adjustedMouseY
|
||||
);
|
||||
if (isMouseInside) {
|
||||
widget.focused = true;
|
||||
widget.click((int) adjustedMouseX, (int) adjustedMouseY);
|
||||
|
||||
Reference in New Issue
Block a user