package com.arslaancodes.arslaansmagichax.screens.clickgui; import com.arslaancodes.arslaansmagichax.ArslaansMagicHaxClient; import com.arslaancodes.arslaansmagichax.modules.Category; import com.arslaancodes.arslaansmagichax.screens.clickgui.setting.SettingComponent; import com.arslaancodes.arslaansmagichax.screens.clickgui.setting.KeybindingSelector; import java.util.ArrayList; import java.util.List; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.input.KeyEvent; import net.minecraft.client.input.MouseButtonEvent; public class ClickGUIScreen extends Screen { public static final ClickGUIScreen INSTANCE = new ClickGUIScreen(); private List frames; private ClickGUIScreen() { super(net.minecraft.network.chat.Component.literal("ClickGUI")); frames = new ArrayList<>(); int offset = 20; for (Category category : Category.values()) { frames.add(new Frame(category, offset, 30, 100, 20)); offset += 120; } } @Override public void extractRenderState(GuiGraphicsExtractor context, int mouseX, int mouseY, float deltaTicks) { for (Frame frame : frames) { frame.render(context, mouseX, mouseY, deltaTicks); frame.updatePosition(mouseX, mouseY); } super.extractRenderState(context, mouseX, mouseY, deltaTicks); } @Override public boolean mouseClicked(MouseButtonEvent event, boolean doubleClick) { for (Frame frame : frames) { frame.mouseClicked(event.x(), event.y(), event.button()); } return super.mouseClicked(event, doubleClick); } @Override public boolean mouseReleased(MouseButtonEvent event) { for (Frame frame : frames) { frame.mouseReleased(event.x(), event.y(), event.button()); } return super.mouseReleased(event); } @Override public boolean keyPressed(KeyEvent event) { for (Frame frame : frames) { if (frame.isOpen) { for (ModuleButton button : frame.getButtons()) { if (button.extended) { for (SettingComponent comp : button.components) { if (comp instanceof KeybindingSelector keybindingSelector) { keybindingSelector.onKeyPressed(event.key()); } } } } } } return super.keyPressed(event); } @Override public boolean isPauseScreen() { return false; } @Override public void onClose() { super.onClose(); ArslaansMagicHaxClient.clickGUI.setEnabled(false); } }