slight structure update

This commit is contained in:
2025-03-11 21:48:56 +01:00
parent b5c7318784
commit c70606e6ab
8 changed files with 64 additions and 7 deletions
@@ -1,8 +1,9 @@
package org.saturnclient.saturnclient.menus; package org.saturnclient.saturnclient.menus;
import org.saturnclient.saturnclient.widgets.SaturnButton;
import org.saturnclient.ui.SaturnAnimation; import org.saturnclient.ui.SaturnAnimation;
import org.saturnclient.ui.SaturnUi; import org.saturnclient.ui.SaturnUi;
import org.saturnclient.ui.widgets.SaturnButton;
import net.minecraft.text.Text; import net.minecraft.text.Text;
public class MainMenu extends SaturnUi { public class MainMenu extends SaturnUi {
@@ -1,8 +1,8 @@
package org.saturnclient.saturnclient.menus; package org.saturnclient.saturnclient.menus;
import org.saturnclient.saturnclient.widgets.SaturnButton;
import org.saturnclient.saturnclient.widgets.SaturnImageButton;
import org.saturnclient.ui.SaturnUi; import org.saturnclient.ui.SaturnUi;
import org.saturnclient.ui.widgets.SaturnButton;
import org.saturnclient.ui.widgets.SaturnImageButton;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
@@ -3,6 +3,8 @@ package org.saturnclient.ui;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.lwjgl.glfw.GLFW;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
import net.minecraft.text.Text; import net.minecraft.text.Text;
@@ -55,4 +57,52 @@ public class SaturnUi extends Screen {
return false; return false;
} }
@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
for (SaturnWidget widget : new ArrayList<>(widgets)) {
if (!widget.visible) {
continue;
}
widget.keyPressed(keyCode, scanCode, modifiers);
char typedChar = getCharFromKey(keyCode, modifiers);
if (typedChar != '\0') {
widget.charTyped(typedChar);
}
}
return super.keyPressed(keyCode, scanCode, modifiers);
}
private 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';
};
}
} }
@@ -17,6 +17,12 @@ public class SaturnWidget {
public void click() { public void click() {
} }
public void keyPressed(int keyCode, int scanCode, int modifiers) {
}
public void charTyped(char typedChar) {
}
public SaturnWidget setX(int x) { public SaturnWidget setX(int x) {
this.x = x; this.x = x;
return this; return this;
@@ -1,4 +1,4 @@
package org.saturnclient.saturnclient.widgets; package org.saturnclient.ui.widgets;
import org.saturnclient.ui.SaturnWidget; import org.saturnclient.ui.SaturnWidget;
@@ -1,4 +1,4 @@
package org.saturnclient.saturnclient.widgets; package org.saturnclient.ui.widgets;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.RenderLayer;
@@ -1,4 +1,4 @@
package org.saturnclient.saturnclient.widgets; package org.saturnclient.ui.widgets;
import org.saturnclient.ui.SaturnWidget; import org.saturnclient.ui.SaturnWidget;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
@@ -1,4 +1,4 @@
package org.saturnclient.saturnclient.widgets; package org.saturnclient.ui.widgets;
import org.saturnclient.ui.SaturnWidget; import org.saturnclient.ui.SaturnWidget;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;