aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java
diff options
context:
space:
mode:
authorMoulberry <james.jenour@student.scotch.wa.edu.au>2020-11-23 03:34:12 +1100
committerMoulberry <james.jenour@student.scotch.wa.edu.au>2020-11-23 03:34:12 +1100
commit089bac89c5435eb7e5cf80e7602da953a65f5b1a (patch)
treeea6aea2afc38f6ef02884f0c3babdc5ed86058bb /src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java
parent07403ec86c53f67b94d988b4c01a0afc2fdb2810 (diff)
downloadnotenoughupdates-089bac89c5435eb7e5cf80e7602da953a65f5b1a.tar.gz
notenoughupdates-089bac89c5435eb7e5cf80e7602da953a65f5b1a.tar.bz2
notenoughupdates-089bac89c5435eb7e5cf80e7602da953a65f5b1a.zip
1.7
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java134
1 files changed, 91 insertions, 43 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java b/src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java
index 5890b5c0..438eb01d 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java
@@ -6,6 +6,7 @@ import io.github.moulberry.notenoughupdates.options.Options;
import io.github.moulberry.notenoughupdates.util.SpecialColour;
import io.github.moulberry.notenoughupdates.util.Utils;
import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.ScaledResolution;
@@ -27,6 +28,7 @@ import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.*;
import java.util.List;
+import static io.github.moulberry.notenoughupdates.GuiTextures.*;
import static io.github.moulberry.notenoughupdates.GuiTextures.*;
import static io.github.moulberry.notenoughupdates.GuiTextures.colour_selector_dot;
@@ -57,6 +59,8 @@ public class GuiDungeonMapEditor extends GuiScreen {
private GuiElementTextField blurField = new GuiElementTextField("", GuiElementTextField.NUM_ONLY | GuiElementTextField.NO_SPACE);
private ColourEditor activeColourEditor = null;
+ private Options.Option<Double> clickedSlider = null;
+
private class ColourEditor {
public int x;
public int y;
@@ -127,28 +131,28 @@ public class GuiDungeonMapEditor extends GuiScreen {
public GuiDungeonMapEditor() {
Options options = NotEnoughUpdates.INSTANCE.manager.config;
//Map Border Size
- buttons.add(new Button(0, 6, 37, "Small", options.dmBorderSize));
- buttons.add(new Button(1, 52, 37, "Medium", options.dmBorderSize));
- buttons.add(new Button(2, 98, 37, "Large", options.dmBorderSize));
+ //buttons.add(new Button(0, 6, 37, "Small", options.dmBorderSize));
+ //buttons.add(new Button(1, 52, 37, "Medium", options.dmBorderSize));
+ //buttons.add(new Button(2, 98, 37, "Large", options.dmBorderSize));
//Map Rooms Size
- buttons.add(new Button(3, 6, 67+19, "Small", options.dmRoomSize));
- buttons.add(new Button(4, 52, 67+19, "Medium", options.dmRoomSize));
- buttons.add(new Button(5, 98, 67+19, "Large", options.dmRoomSize));
+ //buttons.add(new Button(3, 6, 67+19, "Small", options.dmRoomSize));
+ //buttons.add(new Button(4, 52, 67+19, "Medium", options.dmRoomSize));
+ //buttons.add(new Button(5, 98, 67+19, "Large", options.dmRoomSize));
//Map Border Styles
- buttons.add(new Button(6, 6, 97+38, "None"));
- buttons.add(new Button(7, 52, 97+38, "Custom"));
- buttons.add(new Button(8, 98, 97+38, "Stone"));
- buttons.add(new Button(9, 6, 116+38, "Wood"));
- buttons.add(new Button(10, 52, 116+38, "Rustic(S)"));
- buttons.add(new Button(11, 98, 116+38, "Rustic(C)"));
- buttons.add(new Button(12, 6, 135+38, "Fade"));
- buttons.add(new Button(13, 52, 135+38, "Ribbons"));
- buttons.add(new Button(14, 98, 135+38, "Paper"));
- buttons.add(new Button(15, 6, 154+38, "Crimson"));
- buttons.add(new Button(16, 52, 154+38, "Ornate"));
- buttons.add(new Button(17, 98, 154+38, "Dragon"));
+ buttons.add(new Button(6, 6, 97, "None"));
+ buttons.add(new Button(7, 52, 97, "Custom"));
+ buttons.add(new Button(8, 98, 97, "Stone"));
+ buttons.add(new Button(9, 6, 116, "Wood"));
+ buttons.add(new Button(10, 52, 116, "Rustic(S)"));
+ buttons.add(new Button(11, 98, 116, "Rustic(C)"));
+ buttons.add(new Button(12, 6, 135, "Fade"));
+ buttons.add(new Button(13, 52, 135, "Ribbons"));
+ buttons.add(new Button(14, 98, 135, "Paper"));
+ buttons.add(new Button(15, 6, 154, "Crimson"));
+ buttons.add(new Button(16, 52, 154, "Ornate"));
+ buttons.add(new Button(17, 98, 154, "Dragon"));
//Dungeon Map
buttons.add(new Button(18, 20+139, 36, "Yes/No", options.dmEnable));
@@ -175,8 +179,8 @@ public class GuiDungeonMapEditor extends GuiScreen {
//Chroma Mode
buttons.add(new Button(28, 84+139, 181, "Normal/Scroll", options.dmChromaBorder));
- buttons.add(new Button(29, 52, 86+19, "XLarge", options.dmRoomSize));
- buttons.add(new Button(30, 52, 56, "XLarge", options.dmBorderSize));
+ //buttons.add(new Button(29, 52, 86+19, "XLarge", options.dmRoomSize));
+ //buttons.add(new Button(30, 52, 56, "XLarge", options.dmBorderSize));
xField.setText(String.valueOf(NotEnoughUpdates.INSTANCE.manager.config.dmCenterX.value));
yField.setText(String.valueOf(NotEnoughUpdates.INSTANCE.manager.config.dmCenterY.value));
@@ -266,9 +270,9 @@ public class GuiDungeonMapEditor extends GuiScreen {
Utils.drawStringCenteredScaledMaxWidth("Map Border Size", Minecraft.getMinecraft().fontRendererObj,
guiLeft+76, guiTop+30, false, 137, 0xFFB4B4B4);
Utils.drawStringCenteredScaledMaxWidth("Map Rooms Size", Minecraft.getMinecraft().fontRendererObj,
- guiLeft+76, guiTop+60+19, false, 137, 0xFFB4B4B4);
+ guiLeft+76, guiTop+60, false, 137, 0xFFB4B4B4);
Utils.drawStringCenteredScaledMaxWidth("Map Border Style", Minecraft.getMinecraft().fontRendererObj,
- guiLeft+76, guiTop+90+38, false, 137, 0xFFB4B4B4);
+ guiLeft+76, guiTop+90, false, 137, 0xFFB4B4B4);
Utils.drawStringCenteredScaledMaxWidth("Dungeon Map", Minecraft.getMinecraft().fontRendererObj,
guiLeft+44+139, guiTop+30, false, 60, 0xFFB4B4B4);
@@ -301,32 +305,35 @@ public class GuiDungeonMapEditor extends GuiScreen {
guiLeft+108+139, guiTop+175, false, 60, 0xFFB4B4B4);
Utils.drawStringCenteredScaledMaxWidth("X (%)", Minecraft.getMinecraft().fontRendererObj,
- guiLeft+44+139, guiTop+204, false, 60, 0xFFB4B4B4);
+ guiLeft+44, guiTop+189, false, 60, 0xFFB4B4B4);
Utils.drawStringCenteredScaledMaxWidth("Y (%)", Minecraft.getMinecraft().fontRendererObj,
- guiLeft+108+139, guiTop+204, false, 60, 0xFFB4B4B4);
+ guiLeft+108, guiTop+189, false, 60, 0xFFB4B4B4);
+
+ drawSlider(NotEnoughUpdates.INSTANCE.manager.config.dmBorderSize, guiLeft+76, guiTop+45);
+ drawSlider(NotEnoughUpdates.INSTANCE.manager.config.dmRoomSize, guiLeft+76, guiTop+75);
Options options = NotEnoughUpdates.INSTANCE.manager.config;
- buttons.get(18).text = options.dmEnable.value ? "Enabled" : "Disabled";
- buttons.get(19).text = options.dmCenterPlayer.value ? "Player" : "Map";
- buttons.get(20).text = options.dmRotatePlayer.value ? "Player" : "Vertical";
- buttons.get(21).text = options.dmPlayerHeads.value <= 0 ? "Default" : options.dmPlayerHeads.value >= 3 ? "SmallHeads" :
+ buttons.get(18-6).text = options.dmEnable.value ? "Enabled" : "Disabled";
+ buttons.get(19-6).text = options.dmCenterPlayer.value ? "Player" : "Map";
+ buttons.get(20-6).text = options.dmRotatePlayer.value ? "Player" : "Vertical";
+ buttons.get(21-6).text = options.dmPlayerHeads.value <= 0 ? "Default" : options.dmPlayerHeads.value >= 3 ? "SmallHeads" :
options.dmPlayerHeads.value == 1 ? "Heads" : "ScaledHeads";
- buttons.get(22).text = options.dmOrientCheck.value ? "Orient" : "Off";
- buttons.get(23).text = options.dmCenterCheck.value ? "Center" : "Off";
- buttons.get(24).text = options.dmPlayerInterp.value ? "Interp" : "No Interp";
- buttons.get(25).text = options.dmCompat.value <= 0 ? "Normal" : options.dmCompat.value >= 2 ? "No FB/SHD" : "No SHD";
+ buttons.get(22-6).text = options.dmOrientCheck.value ? "Orient" : "Off";
+ buttons.get(23-6).text = options.dmCenterCheck.value ? "Center" : "Off";
+ buttons.get(24-6).text = options.dmPlayerInterp.value ? "Interp" : "No Interp";
+ buttons.get(25-6).text = options.dmCompat.value <= 0 ? "Normal" : options.dmCompat.value >= 2 ? "No FB/SHD" : "No SHD";
- buttons.get(26).colour = new Color(SpecialColour.specialToChromaRGB(options.dmBackgroundColour.value));
- buttons.get(27).colour = new Color(SpecialColour.specialToChromaRGB(options.dmBorderColour.value));
+ buttons.get(26-6).colour = new Color(SpecialColour.specialToChromaRGB(options.dmBackgroundColour.value));
+ buttons.get(27-6).colour = new Color(SpecialColour.specialToChromaRGB(options.dmBorderColour.value));
- buttons.get(28).text = options.dmChromaBorder.value ? "Scroll" : "Normal";
+ buttons.get(28-6).text = options.dmChromaBorder.value ? "Scroll" : "Normal";
blurField.setSize(48, 16);
xField.setSize(48, 16);
yField.setSize(48, 16);
blurField.render(guiLeft+20+139, guiTop+181);
- xField.render(guiLeft+20+139, guiTop+210);
- yField.render(guiLeft+84+139, guiTop+210);
+ xField.render(guiLeft+20, guiTop+195);
+ yField.render(guiLeft+84, guiTop+195);
Map<String, Vec4b> decorations = new HashMap<>();
Vec4b vec4b = new Vec4b((byte)3, (byte)(((50)-64)*2), (byte)(((40)-64)*2), (byte)((60)*16/360));
@@ -337,7 +344,7 @@ public class GuiDungeonMapEditor extends GuiScreen {
GlStateManager.color(1, 1, 1, 1);
demoMap.renderMap(guiLeft+357, guiTop+125, NotEnoughUpdates.INSTANCE.colourMap, decorations, 0,
- players, false);
+ players, false, partialTicks);
for(Button button : buttons) {
button.render();
@@ -481,6 +488,39 @@ public class GuiDungeonMapEditor extends GuiScreen {
Utils.pushGuiScale(-1);
}
+ public void drawSlider(Options.Option<Double> option, int centerX, int centerY) {
+ float sliderAmount = (float)Math.max(0, Math.min(1, (option.value-option.minValue)/(option.maxValue-option.minValue)));
+ int sliderAmountI = (int)(96*sliderAmount);
+
+ GlStateManager.color(1f, 1f, 1f, 1f);
+ Minecraft.getMinecraft().getTextureManager().bindTexture(slider_on_large);
+ Utils.drawTexturedRect(centerX-48, centerY-8, sliderAmountI, 16,
+ 0, sliderAmount, 0, 1, GL11.GL_NEAREST);
+
+ Minecraft.getMinecraft().getTextureManager().bindTexture(slider_off_large);
+ Utils.drawTexturedRect(centerX-48+sliderAmountI, centerY-8, 96-sliderAmountI, 16,
+ sliderAmount, 1, 0, 1, GL11.GL_NEAREST);
+
+ Minecraft.getMinecraft().getTextureManager().bindTexture(slider_button);
+ Utils.drawTexturedRect(centerX-48+sliderAmountI-4, centerY-8, 8, 16,
+ 0, 1, 0, 1, GL11.GL_NEAREST);
+ }
+
+ @Override
+ protected void mouseClickMove(int mouseX, int mouseY, int clickedMouseButton, long timeSinceLastClick) {
+ super.mouseClickMove(mouseX, mouseY, clickedMouseButton, timeSinceLastClick);
+
+ if(clickedSlider != null) {
+ float sliderAmount = (mouseX - (guiLeft+76-48))/96f;
+ double val = clickedSlider.minValue+(clickedSlider.maxValue-clickedSlider.minValue)*sliderAmount;
+ if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) {
+ val = Math.round(val);
+ }
+ clickedSlider.value = Math.max(clickedSlider.minValue, Math.min(clickedSlider.maxValue, val));
+ }
+
+ }
+
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) {
for(Button button : buttons) {
@@ -495,6 +535,16 @@ public class GuiDungeonMapEditor extends GuiScreen {
}
}
+ clickedSlider = null;
+ if(mouseX >= guiLeft+76-48 && mouseX <= guiLeft+76+48) {
+ if(mouseY > guiTop+45-8 && mouseY < guiTop+45+8) {
+ clickedSlider = NotEnoughUpdates.INSTANCE.manager.config.dmBorderSize;
+ return;
+ } else if(mouseY > guiTop+75-8 && mouseY < guiTop+75+8) {
+ clickedSlider = NotEnoughUpdates.INSTANCE.manager.config.dmRoomSize;
+ return;
+ }
+ }
if(mouseY > guiTop+181 && mouseY < guiTop+181+16) {
if(mouseX > guiLeft+20+139 && mouseX < guiLeft+20+139+48) {
@@ -503,13 +553,13 @@ public class GuiDungeonMapEditor extends GuiScreen {
yField.otherComponentClick();
return;
}
- } else if(mouseY > guiTop+210 && mouseY < guiTop+210+16) {
- if(mouseX > guiLeft+20+139 && mouseX < guiLeft+20+139+48) {
+ } else if(mouseY > guiTop+195 && mouseY < guiTop+195+16) {
+ if(mouseX > guiLeft+20 && mouseX < guiLeft+20+48) {
xField.mouseClicked(mouseX, mouseY, mouseButton);
yField.otherComponentClick();
blurField.otherComponentClick();
return;
- } else if(mouseX > guiLeft+84+139 && mouseX < guiLeft+84+139+48) {
+ } else if(mouseX > guiLeft+84 && mouseX < guiLeft+84+48) {
yField.mouseClicked(mouseX, mouseY, mouseButton);
xField.otherComponentClick();
blurField.otherComponentClick();
@@ -836,9 +886,7 @@ public class GuiDungeonMapEditor extends GuiScreen {
blurOutputVert.bindFramebufferTexture();
GlStateManager.color(1f, 1f, 1f, 1f);
- //Utils.setScreen(width*f, height*f, f);
Utils.drawTexturedRect(x, y, blurWidth, blurHeight, uMin, uMax, vMin, vMax);
- //Utils.setScreen(width, height, f);
blurOutputVert.unbindFramebufferTexture();
}