]> git.lizzy.rs Git - BoundingBoxOutlineReloaded.git/commitdiff
Isolate MC classes to fewer Gui classes
authorIrtimaled <irtimaled@gmail.com>
Sun, 17 Mar 2019 22:27:00 +0000 (15:27 -0700)
committerIrtimaled <irtimaled@gmail.com>
Mon, 25 Mar 2019 03:56:28 +0000 (20:56 -0700)
src/main/java/com/irtimaled/bbor/client/gui/AbstractButton.java [new file with mode: 0644]
src/main/java/com/irtimaled/bbor/client/gui/AbstractSlider.java [new file with mode: 0644]
src/main/java/com/irtimaled/bbor/client/gui/BoolSettingButton.java
src/main/java/com/irtimaled/bbor/client/gui/BoundingBoxTypeButton.java
src/main/java/com/irtimaled/bbor/client/gui/Button.java [deleted file]
src/main/java/com/irtimaled/bbor/client/gui/IntSettingSlider.java
src/main/java/com/irtimaled/bbor/client/gui/MaxYSettingSlider.java
src/main/java/com/irtimaled/bbor/client/gui/SettingsScreen.java
src/main/java/com/irtimaled/bbor/client/gui/SettingsScreenButton.java
src/main/java/com/irtimaled/bbor/mixin/client/gui/MixinGuiOptions.java

diff --git a/src/main/java/com/irtimaled/bbor/client/gui/AbstractButton.java b/src/main/java/com/irtimaled/bbor/client/gui/AbstractButton.java
new file mode 100644 (file)
index 0000000..2341991
--- /dev/null
@@ -0,0 +1,45 @@
+package com.irtimaled.bbor.client.gui;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+
+abstract class AbstractButton extends GuiButton implements IRenderableControl {
+    AbstractButton(int id, int x, int y, int width, String name) {
+        super(id, x, y, width, 20, name);
+    }
+
+    AbstractButton(int id, int x, int y, int width, String name, boolean enabled) {
+        this(id, x, y, width, name);
+        this.enabled = enabled;
+    }
+
+    @Override
+    public void render(int mouseX, int mouseY) {
+        super.render(mouseX, mouseY, 0f);
+    }
+
+    @Override
+    protected void renderBg(Minecraft p_renderBg_1_, int p_renderBg_2_, int p_renderBg_3_) {
+        renderBackground();
+    }
+
+    protected void renderBackground() {
+    }
+
+    @Override
+    protected int getHoverState(boolean p_getHoverState_1_) {
+        return getState();
+    }
+
+    protected int getState() {
+        return this.enabled ? this.hovered ? 2 : 1 : 0;
+    }
+
+    @Override
+    public void onClick(double mouseX, double mouseY) {
+        super.onClick(mouseX, mouseY);
+        onPressed();
+    }
+
+    protected abstract void onPressed();
+}
diff --git a/src/main/java/com/irtimaled/bbor/client/gui/AbstractSlider.java b/src/main/java/com/irtimaled/bbor/client/gui/AbstractSlider.java
new file mode 100644 (file)
index 0000000..059ce94
--- /dev/null
@@ -0,0 +1,64 @@
+package com.irtimaled.bbor.client.gui;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiButton;
+import net.minecraft.util.math.MathHelper;
+import org.lwjgl.opengl.GL11;
+
+abstract class AbstractSlider extends GuiButton implements IRenderableControl {
+    double progress;
+
+    AbstractSlider(int id, int x, int y, int width) {
+        super(id, x, y, width, 20, "");
+    }
+
+    @Override
+    public void render(int mouseX, int mouseY) {
+        super.render(mouseX, mouseY, 0f);
+    }
+
+    @Override
+    protected void renderBg(Minecraft minecraft, int mouseX, int mouseY) {
+        minecraft.getTextureManager().bindTexture(BUTTON_TEXTURES);
+        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
+        this.drawTexturedModalRect(this.x + (int) (this.progress * (double) (this.width - 8)), this.y, 0, 66, 4, 20);
+        this.drawTexturedModalRect(this.x + (int) (this.progress * (double) (this.width - 8)) + 4, this.y, 196, 66, 4, 20);
+    }
+
+    boolean setProgress(double progress) {
+        progress = MathHelper.clamp(progress, 0d, 1d);
+        if (this.progress == progress) return false;
+
+        this.progress = progress;
+        return true;
+    }
+
+    private void changeProgress(double mouseX) {
+        double progress = (mouseX - (double) (this.x + 4)) / (double) (this.width - 8);
+        if (setProgress(progress)) {
+            onProgressChanged();
+        }
+        updateText();
+    }
+
+    @Override
+    protected int getHoverState(boolean hovered) {
+        return 0;
+    }
+
+    @Override
+    protected void onDrag(double mouseX, double mouseY, double deltaX, double deltaY) {
+        changeProgress(mouseX);
+        super.onDrag(mouseX, mouseY, deltaX, deltaY);
+    }
+
+    @Override
+    public void onClick(double mouseX, double mouseY) {
+        changeProgress(mouseX);
+        super.onClick(mouseX, mouseY);
+    }
+
+    protected abstract void updateText();
+
+    protected abstract void onProgressChanged();
+}
index d0850ef95c1757d85d2c931e7350303bda08c442..2a97868a8bf73d97967603643c2f447c3b8ea651 100644 (file)
@@ -2,7 +2,7 @@ package com.irtimaled.bbor.client.gui;
 
 import com.irtimaled.bbor.config.Setting;
 
-public class BoolSettingButton extends Button {
+public class BoolSettingButton extends AbstractButton {
     private final Setting<Boolean> setting;
 
     BoolSettingButton(int id, int x, int y, int width, String label, Setting<Boolean> setting) {
@@ -11,12 +11,12 @@ public class BoolSettingButton extends Button {
     }
 
     @Override
-    protected int getHoverState(boolean p_getHoverState_1_) {
+    protected int getState() {
         return setting.get() ? 2 : 1;
     }
 
     @Override
-    public void onClick(double p_onClick_1_, double p_onClick_3_) {
+    public void onPressed() {
         setting.set(!setting.get());
     }
 }
index 496629d5366864f59b5dd8c92acffc00e758adce..814701654092210797bdd5790efc9d4298102601 100644 (file)
@@ -1,7 +1,6 @@
 package com.irtimaled.bbor.client.gui;
 
 import com.irtimaled.bbor.common.BoundingBoxType;
-import net.minecraft.client.Minecraft;
 
 import java.awt.*;
 
@@ -14,7 +13,7 @@ public class BoundingBoxTypeButton extends BoolSettingButton {
     }
 
     @Override
-    protected void renderBg(Minecraft p_renderBg_1_, int p_renderBg_2_, int p_renderBg_3_) {
+    protected void renderBackground() {
         int left = x + 1;
         int top = y + 1;
         int right = left + width - 2;
diff --git a/src/main/java/com/irtimaled/bbor/client/gui/Button.java b/src/main/java/com/irtimaled/bbor/client/gui/Button.java
deleted file mode 100644 (file)
index 2e76b65..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.irtimaled.bbor.client.gui;
-
-import net.minecraft.client.gui.GuiButton;
-
-class Button extends GuiButton implements IRenderableControl {
-    Button(int id, int x, int y, int width, String name) {
-        super(id, x, y, width, 20, name);
-    }
-
-    Button(int id, int x, int y, int width, String name, boolean enabled) {
-        this(id, x,y,width,name);
-        this.enabled = enabled;
-    }
-
-    @Override
-    public void render(int mouseX, int mouseY) {
-        super.render(mouseX, mouseY, 0f);
-    }
-}
index 2c60488deb9bfa9093a7322ad448a034c58bc5f4..edc724f49a40627e5975fc7d9b03677f4184e4d0 100644 (file)
@@ -1,39 +1,32 @@
 package com.irtimaled.bbor.client.gui;
 
 import com.irtimaled.bbor.config.Setting;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.GlStateManager;
-import net.minecraft.util.math.MathHelper;
 
 import java.util.HashMap;
 import java.util.Map;
 
-class IntSettingSlider extends Button implements IRenderableControl {
-    private final int maxValue;
+class IntSettingSlider extends AbstractSlider implements IRenderableControl {
     private final String prefix;
-    private boolean dragging;
     private Map<Integer, String> displayValues = new HashMap<>();
 
     final Setting<Integer> setting;
     final int minValue;
     final int range;
-    double sliderValue;
 
     IntSettingSlider(int id, int x, int y, int width, int minValue, int maxValue, String prefix, Setting<Integer> setting) {
-        super(id, x, y, width, "");
+        super(id, x, y, width);
         this.setting = setting;
         this.minValue = minValue;
-        this.maxValue = maxValue;
         this.prefix = prefix;
         this.range = maxValue - minValue;
-        this.sliderValue = getSliderValue();
-        this.displayString = getDisplayValue();
+        this.setProgress(getSliderValue());
+        this.updateText();
     }
 
     IntSettingSlider addDisplayValue(int value, String displayValue) {
         displayValues.put(value, displayValue);
-        if(setting.get() == value) {
-            this.displayString = getDisplayValue();
+        if (setting.get() == value) {
+            this.updateText();
         }
         return this;
     }
@@ -44,43 +37,20 @@ class IntSettingSlider extends Button implements IRenderableControl {
     }
 
     protected Integer getSettingValue() {
-        return MathHelper.clamp(minValue + (int) (range * sliderValue), minValue, maxValue);
+        return minValue + (int) (range * progress);
     }
 
     protected double getSliderValue() {
-        return MathHelper.clamp((setting.get() - minValue) / (double) range, 0d, 1d);
+        return (setting.get() - minValue) / (double) range;
     }
 
     @Override
-    protected int getHoverState(boolean p_getHoverState_1_) {
-        return 0;
+    protected void updateText() {
+        this.displayString = this.getDisplayValue();
     }
 
     @Override
-    protected void renderBg(Minecraft minecraft, int mouseX, int mouseY) {
-        if (this.dragging) {
-            changeSlider(mouseX);
-        }
-
-        minecraft.getTextureManager().bindTexture(BUTTON_TEXTURES);
-        GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
-        this.drawTexturedModalRect(this.x + (int) (this.sliderValue * (double) (this.width - 8)), this.y, 0, 66, 4, 20);
-        this.drawTexturedModalRect(this.x + (int) (this.sliderValue * (double) (this.width - 8)) + 4, this.y, 196, 66, 4, 20);
-    }
-
-    public final void onClick(double mouseX, double mouseY) {
-        changeSlider(mouseX);
-        this.dragging = true;
-    }
-
-    private void changeSlider(double mouseX) {
-        double proportion = (mouseX - (double) (this.x + 4)) / (double) (this.width - 8);
-        this.sliderValue = MathHelper.clamp(proportion, 0d, 1d);
+    protected void onProgressChanged() {
         this.setting.set(this.getSettingValue());
-        this.displayString = this.getDisplayValue();
-    }
-
-    public void onRelease(double p_onRelease_1_, double p_onRelease_3_) {
-        this.dragging = false;
     }
 }
index c727991ca0453b87b6bf9946f07b51f027cda78a..e76b98effc751906fb3914a2a2002c49414a41b9 100644 (file)
@@ -1,7 +1,6 @@
 package com.irtimaled.bbor.client.gui;
 
 import com.irtimaled.bbor.config.Setting;
-import net.minecraft.util.math.MathHelper;
 
 class MaxYSettingSlider extends IntSettingSlider {
     private final int actualMinValue;
@@ -9,7 +8,7 @@ class MaxYSettingSlider extends IntSettingSlider {
     MaxYSettingSlider(int id, int x, int y, int width, int minValue, Setting<Integer> setting) {
         super(id, x, y, width, minValue - 2, 127, "Max Y", setting);
         this.actualMinValue = minValue;
-        this.sliderValue = getSliderValue();
+        this.setProgress(getSliderValue());
         this.addDisplayValue(-1, "Activated");
         this.addDisplayValue(0, "Player");
         this.addDisplayValue(63, "Sea Level");
@@ -29,6 +28,6 @@ class MaxYSettingSlider extends IntSettingSlider {
         if (value < actualMinValue)
             value = (value - 1) + actualMinValue;
 
-        return MathHelper.clamp((value - minValue) / (double) range, 0d, 1d);
+        return (value - minValue) / (double) range;
     }
 }
index 7163f038ee12e8ed0aa857c84b396cabccf45a28..cbb0b8224445bf7fe04bd25da69dd3c6e81588e7 100644 (file)
@@ -8,9 +8,10 @@ import net.minecraft.client.gui.Gui;
 import net.minecraft.client.gui.GuiScreen;
 import net.minecraft.client.gui.IGuiEventListener;
 import net.minecraft.client.renderer.BufferBuilder;
-import net.minecraft.client.renderer.GlStateManager;
+import net.minecraft.client.renderer.OpenGlHelper;
 import net.minecraft.client.renderer.Tessellator;
 import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
+import org.lwjgl.opengl.GL11;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -27,7 +28,6 @@ public class SettingsScreen extends GuiScreen {
     SettingsScreen(GuiScreen lastScreen, int tabIndex) {
         this.lastScreen = lastScreen;
         this.tabIndex = tabIndex;
-
     }
 
     public static void show() {
@@ -52,8 +52,9 @@ public class SettingsScreen extends GuiScreen {
         for (String label : labels) {
             final int index = column;
             addControl(0, column, y, CONTROLS_WIDTH / columns,
-                    (id, x, y1, width) -> new Button(id, x, y, width, label, index != tabIndex) {
-                        public void onClick(double p_onClick_1_, double p_onClick_3_) {
+                    (id, x, y1, width) -> new AbstractButton(id, x, y, width, label, index != tabIndex) {
+                        @Override
+                        public void onPressed() {
                             Minecraft.getInstance().displayGuiScreen(new SettingsScreen(lastScreen, index));
                         }
                     });
@@ -61,8 +62,9 @@ public class SettingsScreen extends GuiScreen {
         }
 
         //done button
-        addControl(new Button(200, this.width / 2 - 100, getY(5.5), 200, "Done") {
-            public void onClick(double p_onClick_1_, double p_onClick_3_) {
+        addControl(new AbstractButton(200, this.width / 2 - 100, getY(5.5), 200, "Done") {
+            @Override
+            public void onPressed() {
                 ConfigManager.saveConfig();
                 mc.displayGuiScreen(lastScreen);
             }
@@ -83,7 +85,7 @@ public class SettingsScreen extends GuiScreen {
     }
 
     private void buildTab(int tabIndex, CreateControl... createControls) {
-        if(tabIndex != this.tabIndex) return;
+        if (tabIndex != this.tabIndex) return;
 
         int offset = 4;
         int width = (CONTROLS_WIDTH - (2 * offset)) / 3;
@@ -116,12 +118,14 @@ public class SettingsScreen extends GuiScreen {
         this.addTabs("General", "Structures", "Villages");
 
         buildTab(0,
-                (id, x, y, width) -> new Button(id, x, y, width, "Active", this.mc.world != null) {
-                    public void onClick(double p_onClick_1_, double p_onClick_3_) {
+                (id, x, y, width) -> new AbstractButton(id, x, y, width, "Active", this.mc.world != null) {
+                    @Override
+                    public void onPressed() {
                         ClientProxy.toggleActive();
                     }
 
-                    protected int getHoverState(boolean p_getHoverState_1_) {
+                    @Override
+                    protected int getState() {
                         return enabled ? ClientProxy.active ? 2 : 1 : 0;
                     }
                 },
@@ -180,11 +184,11 @@ public class SettingsScreen extends GuiScreen {
         BufferBuilder bufferBuilder = tessellator.getBuffer();
         this.mc.getTextureManager().bindTexture(Gui.OPTIONS_BACKGROUND);
 
-        GlStateManager.disableLighting();
-        GlStateManager.disableFog();
-        GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
+        GL11.glDisable(GL11.GL_LIGHTING);
+        GL11.glDisable(GL11.GL_FOG);
+        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
 
-        bufferBuilder.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
+        bufferBuilder.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR);
         bufferBuilder.pos((double) 0, (double) bottom, 0.0D)
                 .tex((double) ((float) 0 / 32.0F), (double) ((float) bottom / 32.0F))
                 .color(32, 32, 32, 255)
@@ -203,12 +207,13 @@ public class SettingsScreen extends GuiScreen {
                 .endVertex();
         tessellator.draw();
 
-        GlStateManager.disableDepthTest();
-        GlStateManager.enableBlend();
-        GlStateManager.blendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ZERO, GlStateManager.DestFactor.ONE);
-        GlStateManager.disableAlphaTest();
-        GlStateManager.shadeModel(7425);
-        GlStateManager.disableTexture2D();
+        GL11.glDisable(GL11.GL_DEPTH_TEST);
+        GL11.glEnable(GL11.GL_BLEND);
+        OpenGlHelper.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ZERO, GL11.GL_ONE);
+
+        GL11.glDisable(GL11.GL_ALPHA_TEST);
+        GL11.glShadeModel(7425);
+        GL11.glDisable(GL11.GL_TEXTURE_2D);
 
         bufferBuilder.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
         bufferBuilder.pos((double) 0, (double) (top + 4), 0.0D)
@@ -248,15 +253,15 @@ public class SettingsScreen extends GuiScreen {
                 .endVertex();
         tessellator.draw();
 
-        GlStateManager.enableTexture2D();
-        GlStateManager.shadeModel(7424);
-        GlStateManager.enableAlphaTest();
-        GlStateManager.disableBlend();
+        GL11.glEnable(GL11.GL_TEXTURE_2D);
+        GL11.glShadeModel(7424);
+        GL11.glEnable(GL11.GL_ALPHA_TEST);
+        GL11.glDisable(GL11.GL_BLEND);
     }
 
     @Override
     public void render(int mouseX, int mouseY, float unknown) {
-        if(this.mc.world == null) {
+        if (this.mc.world == null) {
             this.drawDefaultBackground();
             this.drawScreen(getY(-1), getY(5.5) - 4);
         }
index ef8f8fd094e03fa242223a7ee2351d6faef79729..d9dd00323d80dd643b85dd322b4460b7a1a8b35c 100644 (file)
@@ -1,19 +1,18 @@
 package com.irtimaled.bbor.client.gui;
 
 import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.GuiButton;
 import net.minecraft.client.gui.GuiScreen;
 
-public class SettingsScreenButton extends GuiButton {
+public class SettingsScreenButton extends AbstractButton {
     private final SettingsScreen screen;
 
-    public SettingsScreenButton(int id, int x, int y, int height, int width, String label, GuiScreen lastScreen) {
-        super(id, x, y, height, width, label);
+    public SettingsScreenButton(int id, int x, int y, int width, String label, GuiScreen lastScreen) {
+        super(id, x, y, width, label);
         screen = new SettingsScreen(lastScreen, 0);
     }
 
     @Override
-    public void onClick(double p_onClick_1_, double p_onClick_3_) {
+    public void onPressed() {
         Minecraft.getInstance().displayGuiScreen(screen);
     }
 }
index dac769ca3cb66c8a53cd6108b2296301229abcce..b9e31f2fb67581017e775c3a0eac06290db27a67 100644 (file)
@@ -19,6 +19,6 @@ public class MixinGuiOptions extends GuiScreen {
             if (button.id != 200 && button.y >= top)
                 button.y -= 12;
         }
-        this.addButton(new SettingsScreenButton(200, this.width / 2 - 155, top + 84, 150, 20, "BBOR", this));
+        this.addButton(new SettingsScreenButton(200, this.width / 2 - 155, top + 84, 150, "BBOR", this));
     }
 }