added scrolling (need to add scissor)
This commit is contained in:
@@ -22,6 +22,9 @@ public class Element {
|
||||
public void click(int mouseX, int mouseY) {
|
||||
}
|
||||
|
||||
public void scroll(int mouseX, int mouseY, double horizontalAmount, double verticalAmount) {
|
||||
}
|
||||
|
||||
public final Element dimensions(int width, int height) {
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.util.List;
|
||||
import org.saturnclient.saturnclient.config.ThemeManager;
|
||||
import org.saturnclient.saturnclient.mixin.DrawContextAccessor;
|
||||
import org.saturnclient.ui2.anim.Animation;
|
||||
import org.saturnclient.ui2.components.ElementRenderer;
|
||||
|
||||
import net.minecraft.client.gl.PostEffectProcessor;
|
||||
import net.minecraft.client.gui.CubeMapRenderer;
|
||||
@@ -40,6 +41,10 @@ public abstract class SaturnScreen extends Screen {
|
||||
public void draw(Element element) {
|
||||
synchronized (elements) {
|
||||
elements.add(element);
|
||||
|
||||
if (element instanceof ElementRenderer) {
|
||||
elements.addAll(((ElementRenderer) element).getChildren());
|
||||
}
|
||||
}
|
||||
|
||||
if (element.animation != null) {
|
||||
@@ -125,4 +130,34 @@ public abstract class SaturnScreen extends Screen {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean mouseScrolled(
|
||||
double mouseX,
|
||||
double mouseY,
|
||||
double horizontalAmount,
|
||||
double verticalAmount) {
|
||||
for (Element element : new ArrayList<>(elements)) {
|
||||
double adjustedMouseX = mouseX - element.x;
|
||||
double adjustedMouseY = mouseY - element.y;
|
||||
boolean isMouseInside = adjustedMouseX >= 0 &&
|
||||
adjustedMouseX <= (element.width * element.scale) &&
|
||||
adjustedMouseY >= 0 &&
|
||||
adjustedMouseY <= (element.height * element.scale);
|
||||
|
||||
if (isMouseInside) {
|
||||
element.scroll(
|
||||
(int) (adjustedMouseX / element.scale),
|
||||
(int) (adjustedMouseY / element.scale),
|
||||
horizontalAmount,
|
||||
verticalAmount);
|
||||
}
|
||||
}
|
||||
|
||||
return super.mouseScrolled(
|
||||
mouseX,
|
||||
mouseY,
|
||||
horizontalAmount,
|
||||
verticalAmount);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package org.saturnclient.ui2.components;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.saturnclient.ui2.Element;
|
||||
|
||||
public interface ElementRenderer {
|
||||
List<Element> getChildren();
|
||||
void draw(Element element);
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package org.saturnclient.ui2.components;
|
||||
|
||||
public class SaturnModule {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package org.saturnclient.ui2.elements;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.saturnclient.ui2.Element;
|
||||
import org.saturnclient.ui2.RenderContext;
|
||||
import org.saturnclient.ui2.RenderScope;
|
||||
import org.saturnclient.ui2.components.ElementRenderer;
|
||||
|
||||
public class Scroll extends Element implements ElementRenderer {
|
||||
protected List<Element> children = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void render(RenderScope renderScope, RenderContext ctx) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Element element) {
|
||||
children.add(element);
|
||||
|
||||
if (element.width > width) {
|
||||
width = element.width;
|
||||
}
|
||||
|
||||
if (element.height > height) {
|
||||
height = element.height;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void scroll(int mouseX, int mouseY, double horizontalAmount, double verticalAmount) {
|
||||
for (Element child : children) {
|
||||
child.y -= verticalAmount;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<Element> getChildren() {
|
||||
return children;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package org.saturnclient.ui2.screens;
|
||||
|
||||
import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.ui2.SaturnScreen;
|
||||
import org.saturnclient.ui2.elements.Button;
|
||||
import org.saturnclient.ui2.elements.Scroll;
|
||||
|
||||
public class ModMenu extends SaturnScreen {
|
||||
public ModMenu() {
|
||||
super("Mod Menu");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ui() {
|
||||
Scroll scroll = new Scroll();
|
||||
|
||||
scroll.draw(new Button("Hello World!", () -> {
|
||||
SaturnClient.LOGGER.info("Clicked Hello World!");
|
||||
}));
|
||||
|
||||
draw(scroll);
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@ import org.saturnclient.saturnclient.SaturnClient;
|
||||
import org.saturnclient.saturnclient.SaturnClientConfig;
|
||||
import org.saturnclient.saturnclient.menus.CloaksMenu;
|
||||
import org.saturnclient.saturnclient.menus.HudEditor;
|
||||
import org.saturnclient.saturnclient.menus.ModMenu;
|
||||
import org.saturnclient.ui.Textures;
|
||||
import org.saturnclient.ui2.Element;
|
||||
import org.saturnclient.ui2.SaturnScreen;
|
||||
|
||||
Reference in New Issue
Block a user