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