Skip to content

Commit

Permalink
working scope switcher
Browse files Browse the repository at this point in the history
  • Loading branch information
GeorgeRNG committed Dec 10, 2023
1 parent 0c53532 commit a6fa9e8
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 52 deletions.
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
package dev.dfonline.codeclient.dev.menu.customchest;

import dev.dfonline.codeclient.CodeClient;
import dev.dfonline.codeclient.hypercube.item.*;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.Drawable;
import net.minecraft.client.gui.navigation.GuiNavigationPath;
import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder;
import net.minecraft.client.gui.screen.narration.NarrationPart;
import net.minecraft.client.gui.widget.CheckboxWidget;
import net.minecraft.client.gui.widget.ClickableWidget;
import net.minecraft.client.gui.widget.CyclingButtonWidget;
import net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.text.Style;
import net.minecraft.text.Text;
import org.jetbrains.annotations.Nullable;

Expand All @@ -27,9 +27,11 @@ public CustomChestField(TextRenderer textRender, int x, int y, int width, int he
var widgets = new ArrayList<Drawable>();
if(item instanceof NamedItem named) {
int textboxWidth = width;
if(item instanceof Variable) {
if(item instanceof Variable var) {
textboxWidth = textboxWidth - height;
widgets.add(new CheckboxWidget(x+textboxWidth,y,height,height,Text.literal(""),false));
var scopeWidget = new CyclingButtonWidget.Builder<Scope>(scope -> Text.literal(scope.getShortName()).setStyle(Style.EMPTY.withColor(scope.color))).values(Scope.unsaved, Scope.saved, Scope.local, Scope.line).omitKeyText().build(x+textboxWidth,y,height,height,Text.literal(""));
scopeWidget.setValue(var.getScope());
widgets.add(scopeWidget);
}
var text = new TextFieldWidget(textRender,x,y,textboxWidth,height,Text.literal(""));
text.setMaxLength(10000);
Expand Down Expand Up @@ -66,8 +68,10 @@ private void updateItem() {
if(widgets.get(0) instanceof TextFieldWidget text) {
named.setName(text.getText());
}
if(named instanceof Variable variable) {
CodeClient.LOGGER.info(variable.getScope().longName); // Problem for later
if(named instanceof Variable var) {
if(widgets.get(1) instanceof CyclingButtonWidget<?> cycle) {
var.setScope((Scope) cycle.getValue());
}
}
}
if(item instanceof Vector vec) {
Expand Down Expand Up @@ -114,26 +118,17 @@ protected void renderButton(DrawContext context, int mouseX, int mouseY, float d

@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
this.onClick(mouseX,mouseY);
return true;
// return super.mouseClicked(mouseX, mouseY, button);
}




@Override
public void onClick(double mouseX, double mouseY) {
for (var widget: widgets) {
if(widget instanceof ClickableWidget clickable) {
if(clickable.isMouseOver(mouseX,mouseY)) {
clickable.setFocused(true);
clickable.onClick(mouseX, mouseY);
clickable.mouseClicked(mouseX, mouseY, button);
}
else clickable.setFocused(false);
}
}
updateItem();
return true;
}

@Override
Expand Down Expand Up @@ -161,7 +156,6 @@ public boolean mouseScrolled(double mouseX, double mouseY, double horizontalAmou
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
for (var widget: widgets) {
if(widget instanceof ClickableWidget click && click.isFocused()) {
updateItem();
return click.keyPressed(keyCode,scanCode,modifiers);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,10 +161,13 @@ public boolean mouseScrolled(double mouseX, double mouseY, double horizontalAmou
@Override
public boolean mouseClicked(double mouseX, double mouseY, int button) {
List<Slot> subList = this.getScreenHandler().slots.subList((int) scroll, Math.min((int) scroll + Size.SLOTS,27));
for (Widget widget : widgets.values()) {
if (widget instanceof ClickableWidget clickable) {
for (var entry : widgets.entrySet()) {
if (entry.getValue() instanceof ClickableWidget clickable) {
clickable.setFocused(clickable.isMouseOver(mouseX - this.x, mouseY - this.y));
clickable.mouseClicked(mouseX - this.x,mouseY - this.y,button);
if(clickable.mouseClicked(mouseX - this.x,mouseY - this.y,button)) {
updateItem(entry.getKey());
return true;
}
}
}
for (int i = 0; i < subList.size(); i++) {
Expand Down Expand Up @@ -218,50 +221,58 @@ private void updateItem(int scrollRelativeSlot) {

@Override
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
int prev = (int) scroll;
if(keyCode == GLFW.GLFW_KEY_PAGE_DOWN) {
scroll = Math.min(27 - Size.WIDGETS, scroll + Size.WIDGETS);
update(prev);
}
if(keyCode == GLFW.GLFW_KEY_PAGE_UP) {
scroll = Math.max(0, scroll - Size.WIDGETS);
update(prev);
}
if(keyCode == GLFW.GLFW_KEY_ESCAPE) {
for (int i = 0; i < widgets.size(); i++) {
Widget widget = widgets.get(i);
if (widget instanceof ClickableWidget clickable) {
if (clickable.isFocused()) {
clickable.setFocused(false);
updateItem(i);
return true;
return false;
}
}
}
}
for (int i = 0; i < widgets.size(); i++) {
Widget widget = widgets.get(i);
if (widget instanceof ClickableWidget clickable) {
if (clickable.isFocused()) {
clickable.keyPressed(keyCode, scanCode, modifiers);
updateItem(i);
return true;
if(keyCode <= GLFW.GLFW_KEY_DOWN || keyCode >= GLFW.GLFW_KEY_PAGE_DOWN) {
for (int i = 0; i < widgets.size(); i++) {
Widget widget = widgets.get(i);
if (widget instanceof ClickableWidget clickable) {
if (clickable.isFocused()) {
clickable.keyPressed(keyCode, scanCode, modifiers);
updateItem(i);
return true;
}
}
}
}
if(keyCode == GLFW.GLFW_KEY_END) {
scroll = 27 - Size.WIDGETS;
boolean up = keyCode == GLFW.GLFW_KEY_UP || CodeClient.MC.options.forwardKey.matchesKey(keyCode,scanCode);
boolean down = keyCode == GLFW.GLFW_KEY_DOWN || CodeClient.MC.options.backKey.matchesKey(keyCode,scanCode);
boolean pageUp = keyCode == GLFW.GLFW_KEY_PAGE_DOWN || (up && hasShiftDown());
boolean pageDown = keyCode == GLFW.GLFW_KEY_PAGE_UP || (down && hasShiftDown());
boolean start = keyCode == GLFW.GLFW_KEY_HOME || (up && hasAltDown() && !pageUp);
boolean end = keyCode == GLFW.GLFW_KEY_END || (down && hasAltDown() && !pageDown);
int prev = (int) scroll;
if(pageDown) {
scroll = Math.min(27 - Size.WIDGETS, scroll + Size.WIDGETS);
update(prev);
}
if(pageUp) {
scroll = Math.max(0, scroll - Size.WIDGETS);
update(prev);
}
if(keyCode == GLFW.GLFW_KEY_HOME) {
if(start) {
scroll = 0;
update(prev);
}
if(keyCode == GLFW.GLFW_KEY_UP || CodeClient.MC.options.forwardKey.matchesKey(keyCode,scanCode)) {
if(end) {
scroll = 27 - Size.WIDGETS;
update(prev);
}
if(up) {
scroll = Math.max(0,scroll - 1);
update(prev);
}
if(keyCode == GLFW.GLFW_KEY_DOWN || CodeClient.MC.options.backKey.matchesKey(keyCode,scanCode)) {
if(down) {
scroll = Math.min(27 - Size.WIDGETS, scroll + 1);
update(prev);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,7 @@ public double getNumber() {

@Override
public void write(String text) {
super.write(text.replaceAll(regex,"")); // This uses {0,100} instead of * because java.
try {
number = Double.parseDouble(text);
}
catch (Exception ignored) {}
// this.setText(this.getText().replaceAll(regex,""));
super.write(text.replaceAll(regex,""));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ public static List<Text> getOverlayText() {
text.append(Text.literal(type.name.toUpperCase()).fillStyle(Style.EMPTY.withColor(type.color)).append(" "));
if (type == Type.var) {
Scope scope = Scope.valueOf(data.get("scope").getAsString());
text.append(scope == Scope.line & Config.getConfig().UseIForLineScope ? "I" : scope.shortName ).fillStyle(Style.EMPTY.withColor(scope.color)).append(" ");
text.append(scope.getShortName()).fillStyle(Style.EMPTY.withColor(scope.color)).append(" ");
}
if (type == Type.num || type == Type.txt || type == Type.comp || type == Type.var || type == Type.g_val || type == Type.pn_el) {
text.append(item.getName());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package dev.dfonline.codeclient.hypercube.item;

import net.minecraft.text.Text;
import dev.dfonline.codeclient.config.Config;
import net.minecraft.text.TextColor;
import net.minecraft.util.Colors;
import net.minecraft.util.Formatting;

public enum Scope {
Expand All @@ -19,4 +18,8 @@ public enum Scope {
this.longName = longName;
this.shortName = shortName;
}

public String getShortName() {
return this == Scope.line & Config.getConfig().UseIForLineScope ? "I" : shortName;
}
}

0 comments on commit a6fa9e8

Please sign in to comment.