Keypress implementation on ui2
This commit is contained in:
@@ -25,6 +25,12 @@ public class Element {
|
|||||||
public void scroll(int mouseX, int mouseY, double horizontalAmount, double verticalAmount) {
|
public void scroll(int mouseX, int mouseY, double horizontalAmount, double verticalAmount) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void keyPressed(int keyCode, int scanCode, int modifiers) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void charTyped(char typedChar) {
|
||||||
|
}
|
||||||
|
|
||||||
public final Element dimensions(int width, int height) {
|
public final Element dimensions(int width, int height) {
|
||||||
this.width = width;
|
this.width = width;
|
||||||
this.height = height;
|
this.height = height;
|
||||||
|
|||||||
@@ -131,4 +131,11 @@ public abstract class SaturnScreen extends Screen {
|
|||||||
elements.clear();
|
elements.clear();
|
||||||
super.resize(client, width, height);
|
super.resize(client, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
|
||||||
|
ElementRenderer.keyPressed(elements, keyCode, scanCode, modifiers);
|
||||||
|
|
||||||
|
return super.keyPressed(keyCode, scanCode, modifiers);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package org.saturnclient.ui2;
|
package org.saturnclient.ui2;
|
||||||
|
|
||||||
|
import org.lwjgl.glfw.GLFW;
|
||||||
|
|
||||||
public class Utils {
|
public class Utils {
|
||||||
public static boolean isHovering(int mouseX, int mouseY, int elementWidth, int elementHeight, float elementScale) {
|
public static boolean isHovering(int mouseX, int mouseY, int elementWidth, int elementHeight, float elementScale) {
|
||||||
return mouseX >= 0 &&
|
return mouseX >= 0 &&
|
||||||
@@ -7,4 +9,39 @@ public class Utils {
|
|||||||
mouseY >= 0 &&
|
mouseY >= 0 &&
|
||||||
mouseY <= (elementHeight * elementScale);
|
mouseY <= (elementHeight * elementScale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static char getCharFromKey(int keyCode, int modifiers) {
|
||||||
|
boolean shift = (modifiers & GLFW.GLFW_MOD_SHIFT) != 0;
|
||||||
|
|
||||||
|
// A-Z
|
||||||
|
if (keyCode >= GLFW.GLFW_KEY_A && keyCode <= GLFW.GLFW_KEY_Z) {
|
||||||
|
return (char) (shift
|
||||||
|
? 'A' + (keyCode - GLFW.GLFW_KEY_A)
|
||||||
|
: 'a' + (keyCode - GLFW.GLFW_KEY_A));
|
||||||
|
}
|
||||||
|
|
||||||
|
// 0-9
|
||||||
|
if (keyCode >= GLFW.GLFW_KEY_0 && keyCode <= GLFW.GLFW_KEY_9) {
|
||||||
|
return shift
|
||||||
|
? ")!@#$%^&*(".charAt(keyCode - GLFW.GLFW_KEY_0)
|
||||||
|
: (char) ('0' + (keyCode - GLFW.GLFW_KEY_0));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Special characters
|
||||||
|
return switch (keyCode) {
|
||||||
|
case GLFW.GLFW_KEY_SPACE -> ' ';
|
||||||
|
case GLFW.GLFW_KEY_PERIOD -> shift ? '>' : '.';
|
||||||
|
case GLFW.GLFW_KEY_COMMA -> shift ? '<' : ',';
|
||||||
|
case GLFW.GLFW_KEY_MINUS -> shift ? '_' : '-';
|
||||||
|
case GLFW.GLFW_KEY_EQUAL -> shift ? '+' : '=';
|
||||||
|
case GLFW.GLFW_KEY_SEMICOLON -> shift ? ':' : ';';
|
||||||
|
case GLFW.GLFW_KEY_APOSTROPHE -> shift ? '"' : '\'';
|
||||||
|
case GLFW.GLFW_KEY_SLASH -> shift ? '?' : '/';
|
||||||
|
case GLFW.GLFW_KEY_BACKSLASH -> shift ? '|' : '\\';
|
||||||
|
case GLFW.GLFW_KEY_LEFT_BRACKET -> shift ? '{' : '[';
|
||||||
|
case GLFW.GLFW_KEY_RIGHT_BRACKET -> shift ? '}' : ']';
|
||||||
|
case GLFW.GLFW_KEY_GRAVE_ACCENT -> shift ? '~' : '`';
|
||||||
|
default -> '\0';
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,4 +68,17 @@ public class ElementRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void keyPressed(List<Element> elements, int keyCode, int scanCode, int modifiers) {
|
||||||
|
for (Element element : new ArrayList<>(elements)) {
|
||||||
|
if (element.focused) {
|
||||||
|
element.keyPressed(keyCode, scanCode, modifiers);
|
||||||
|
|
||||||
|
char typedChar = Utils.getCharFromKey(keyCode, modifiers);
|
||||||
|
if (typedChar != '\0') {
|
||||||
|
element.charTyped(typedChar);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
package org.saturnclient.ui2.components.inputs;
|
||||||
|
|
||||||
|
import org.saturnclient.saturnclient.SaturnClient;
|
||||||
|
import org.saturnclient.ui2.Element;
|
||||||
|
|
||||||
|
public class FloatInput extends Element {
|
||||||
|
public FloatInput() {
|
||||||
|
this.width = 120;
|
||||||
|
this.height = 120;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void keyPressed(int keyCode, int scanCode, int modifiers) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void charTyped(char typedChar) {
|
||||||
|
SaturnClient.LOGGER.info("Char typed: "+typedChar);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -83,4 +83,9 @@ public class Scroll extends Element {
|
|||||||
if (maxScroll <= 0) return scrollBarPadding.value;
|
if (maxScroll <= 0) return scrollBarPadding.value;
|
||||||
return (scroll * (height - scrollBarHeight)) / maxScroll + scrollBarPadding.value;
|
return (scroll * (height - scrollBarHeight)) / maxScroll + scrollBarPadding.value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void keyPressed(int keyCode, int scanCode, int modifiers) {
|
||||||
|
ElementRenderer.keyPressed(children, keyCode, scanCode, modifiers);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import org.saturnclient.ui.Textures;
|
|||||||
import org.saturnclient.ui2.SaturnScreen;
|
import org.saturnclient.ui2.SaturnScreen;
|
||||||
import org.saturnclient.ui2.anim.Fade;
|
import org.saturnclient.ui2.anim.Fade;
|
||||||
import org.saturnclient.ui2.anim.SlideY;
|
import org.saturnclient.ui2.anim.SlideY;
|
||||||
|
import org.saturnclient.ui2.components.inputs.FloatInput;
|
||||||
import org.saturnclient.ui2.elements.Button;
|
import org.saturnclient.ui2.elements.Button;
|
||||||
import org.saturnclient.ui2.elements.ImageTexture;
|
import org.saturnclient.ui2.elements.ImageTexture;
|
||||||
import org.saturnclient.ui2.elements.TextureButton;
|
import org.saturnclient.ui2.elements.TextureButton;
|
||||||
@@ -25,6 +26,8 @@ public class TitleMenu extends SaturnScreen {
|
|||||||
public void ui() {
|
public void ui() {
|
||||||
backgroundBlur = 0;
|
backgroundBlur = 0;
|
||||||
|
|
||||||
|
draw(new FloatInput());
|
||||||
|
|
||||||
draw(new ImageTexture(Textures.LOGO_TEXT).dimensions(98, 10).centerOffset(width, height, 0, -36).animation(new Fade(700)));
|
draw(new ImageTexture(Textures.LOGO_TEXT).dimensions(98, 10).centerOffset(width, height, 0, -36).animation(new Fade(700)));
|
||||||
draw(new ImageTexture(SaturnClientConfig.getLogo()).dimensions(98, 98).centerOffset(width, height, 0, -82).animation(new SlideY(700, -40)));
|
draw(new ImageTexture(SaturnClientConfig.getLogo()).dimensions(98, 98).centerOffset(width, height, 0, -82).animation(new SlideY(700, -40)));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user