package kr.syeyoung.dungeonsguide.config.guiconfig; import kr.syeyoung.dungeonsguide.features.AbstractFeature; import kr.syeyoung.dungeonsguide.features.FeatureRegistry; import kr.syeyoung.dungeonsguide.features.GuiFeature; import kr.syeyoung.dungeonsguide.gui.MPanel; import kr.syeyoung.dungeonsguide.gui.elements.MButton; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.GlStateManager; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import java.awt.*; import java.io.IOException; public class GuiGuiLocationConfig extends GuiScreen { private MPanel mainPanel = new MPanel(); private GuiScreen before; public GuiGuiLocationConfig(final GuiScreen before, AbstractFeature featureWhitelist) { this.before = before; for (AbstractFeature feature : FeatureRegistry.getFeatureList()) { if (feature instanceof GuiFeature && feature.isEnabled()) { mainPanel.add(new PanelDelegate((GuiFeature) feature, featureWhitelist == null || feature == featureWhitelist)); } } mainPanel.setBackgroundColor(new Color(0,0,0, 60)); { MButton button = new MButton() { @Override public void resize(int parentWidth, int parentHeight) { setBounds(new Rectangle(parentWidth-50,parentHeight-20,50,20)); } }; button.setText("back"); button.setOnActionPerformed(new Runnable() { @Override public void run() { Minecraft.getMinecraft().displayGuiScreen(before); } }); mainPanel.add(button); } } @Override public void initGui() { super.initGui(); ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); mainPanel.setBounds(new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight())); } @Override public void drawScreen(int mouseX, int mouseY, float partialTicks) { ScaledResolution scaledResolution = new ScaledResolution(Minecraft.getMinecraft()); GlStateManager.pushMatrix(); GlStateManager.pushAttrib(); GlStateManager.disableLighting(); GlStateManager.disableFog(); GL11.glDisable(GL11.GL_FOG); GlStateManager.color(1, 1, 1, 1); GlStateManager.disableDepth(); GlStateManager.depthMask(false); mainPanel.render0(scaledResolution, new Point(0,0), new Rectangle(0,0,scaledResolution.getScaledWidth(),scaledResolution.getScaledHeight()), mouseX, mouseY, mouseX, mouseY, partialTicks); GlStateManager.enableDepth(); GlStateManager.depthMask(true); GlStateManager.popAttrib(); GlStateManager.popMatrix(); GlStateManager.enableBlend(); GlStateManager.enableLighting(); } @Override public void keyTyped(char typedChar, int keyCode) throws IOException { super.keyTyped(typedChar, keyCode); mainPanel.keyTyped0(typedChar, keyCode); } @Override public void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException { super.mouseClicked(mouseX, mouseY, mouseButton); try { mainPanel.mouseClicked0(mouseX, mouseY, mouseX, mouseY, mouseButton); } catch (IllegalArgumentException ignored) { } catch (Throwable t) { t.printStackTrace(); } } @Override public void mouseReleased(int mouseX, int mouseY, int state) { mainPanel.mouseReleased0(mouseX, mouseY,mouseX,mouseY, state); } @Override public void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) { try { mainPanel.mouseClickMove0(mouseX,mouseY,mouseX,mouseY,clickedMouseButton,timeSinceLastClick); } catch (IllegalArgumentException ignored) { } catch (Throwable t) { t.printStackTrace(); } } @Override public void handleMouseInput() throws IOException { super.handleMouseInput(); int i = Mouse.getEventX() * this.width / this.mc.displayWidth; int j = this.height - Mouse.getEventY() * this.height / this.mc.displayHeight - 1; int wheel = Mouse.getDWheel(); if (wheel != 0) { mainPanel.mouseScrolled0(i, j,i,j, wheel); } } }