aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kr/syeyoung/dungeonsguide/roomedit
diff options
context:
space:
mode:
authorsyeyoung <42869671+cyoung06@users.noreply.github.com>2020-11-26 13:02:20 +0900
committersyeyoung <42869671+cyoung06@users.noreply.github.com>2020-11-26 13:02:20 +0900
commit4d5276d8523e5c4771bdde386c9a538ec544d4c5 (patch)
tree9c504ad9c1e441caa4f50cb1e78b00b91fa023ca /src/main/java/kr/syeyoung/dungeonsguide/roomedit
parent4ada6858039f3ca2f5de3c81df8c78f481d897d4 (diff)
downloadSkyblock-Dungeons-Guide-4d5276d8523e5c4771bdde386c9a538ec544d4c5.tar.gz
Skyblock-Dungeons-Guide-4d5276d8523e5c4771bdde386c9a538ec544d4c5.tar.bz2
Skyblock-Dungeons-Guide-4d5276d8523e5c4771bdde386c9a538ec544d4c5.zip
value edit stuff
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/roomedit')
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/roomedit/elements/MIntegerSelectionButton.java70
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/roomedit/elements/MParameter.java3
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonParameterEdit.java12
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditBoolean.java79
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditInteger.java78
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditNull.java5
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditOffsetPoint.java130
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java5
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditString.java2
9 files changed, 379 insertions, 5 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/elements/MIntegerSelectionButton.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/elements/MIntegerSelectionButton.java
new file mode 100644
index 00000000..9ba6350a
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/elements/MIntegerSelectionButton.java
@@ -0,0 +1,70 @@
+package kr.syeyoung.dungeonsguide.roomedit.elements;
+
+import kr.syeyoung.dungeonsguide.roomedit.MPanel;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.awt.*;
+import java.util.List;
+
+@Getter
+@Setter
+public class MIntegerSelectionButton extends MPanel {
+
+ private int data;
+
+ private MButton dec;
+ private MButton inc;
+ private MTextField selected;
+
+ @Getter
+ @Setter
+ private Runnable onUpdate;
+
+ public MIntegerSelectionButton(int data2) {
+ this.data = data2;
+
+ dec = new MButton(); dec.setText("<"); add(dec);
+ inc = new MButton(); inc.setText(">"); add(inc);
+ selected = new MTextField() {
+ @Override
+ public void edit(String str) {
+ try {
+ data = Integer.parseInt(str);
+ } catch (Exception e) {}
+ }
+ }; updateSelected(); add(selected);
+
+ dec.setOnActionPerformed(new Runnable() {
+ @Override
+ public void run() {
+ data--;
+ updateSelected();
+ onUpdate.run();
+ }
+ });
+ inc.setOnActionPerformed(new Runnable() {
+ @Override
+ public void run() {
+ data ++;
+ updateSelected();
+ onUpdate.run();
+ }
+ });
+ }
+
+ public int getSelected() {
+ return data;
+ }
+
+ private void updateSelected() {
+ selected.setText(data+"");
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ dec.setBounds(new Rectangle(0,0,bounds.height, bounds.height));
+ inc.setBounds(new Rectangle(bounds.width - bounds.height, 0, bounds.height, bounds.height));
+ selected.setBounds(new Rectangle(bounds.height, 0, bounds.width - bounds.height - bounds.height, bounds.height));
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/elements/MParameter.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/elements/MParameter.java
index 13e1c6ed..be6c4303 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/elements/MParameter.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/elements/MParameter.java
@@ -3,6 +3,7 @@ package kr.syeyoung.dungeonsguide.roomedit.elements;
import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
import kr.syeyoung.dungeonsguide.roomedit.MPanel;
import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.roomedit.gui.GuiDungeonParameterEdit;
import kr.syeyoung.dungeonsguide.roomedit.panes.ProcessorParameterEditPane;
import lombok.Getter;
import lombok.Setter;
@@ -52,7 +53,7 @@ public class MParameter extends MPanel {
public void mouseClicked(int absMouseX, int absMouseY, int relMouseX, int relMouseY, int mouseButton) {
if (this.bounds.x > -20 && new Rectangle(new Point(0,0),bounds.getSize()).contains(relMouseX, relMouseY)) {
// open new gui;
- System.out.println("hey I'm "+parameter.getName()+", i'ma open gui");
+ EditingContext.getEditingContext().openGui(new GuiDungeonParameterEdit(this, processorParameterEditPane));
}
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonParameterEdit.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonParameterEdit.java
index 83383954..4798e59d 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonParameterEdit.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/gui/GuiDungeonParameterEdit.java
@@ -40,6 +40,7 @@ public class GuiDungeonParameterEdit extends GuiScreen {
public GuiDungeonParameterEdit(final MParameter parameter2, final ProcessorParameterEditPane processorParameterEditPane) {
dungeonRoom = EditingContext.getEditingContext().getRoom();
+ mainPanel.setBackgroundColor(new Color(17, 17, 17, 179));
this.parameter = parameter2.getParameter();
{
MTextField mTextField = new MTextField() {
@@ -51,7 +52,7 @@ public class GuiDungeonParameterEdit extends GuiScreen {
MLabelAndElement mLabelAndElement = new MLabelAndElement("Name", mTextField);
mTextField.setText(parameter.getName());
- mLabelAndElement.setBounds(new Rectangle(0,20,200, 20));
+ mLabelAndElement.setBounds(new Rectangle(0,0,200, 20));
mainPanel.add(mLabelAndElement);
}
{
@@ -59,7 +60,7 @@ public class GuiDungeonParameterEdit extends GuiScreen {
final MStringSelectionButton mStringSelectionButton = new MStringSelectionButton(ValueEditRegistry.getClassesSupported(), classSelection) {
@Override
public void resize(int parentWidth, int parentHeight) {
- setBounds(new Rectangle(0, 20, parentWidth,parentHeight - 20));
+ setBounds(new Rectangle(0, 20, parentWidth,20));
}
};
@@ -123,8 +124,11 @@ public class GuiDungeonParameterEdit extends GuiScreen {
currentValueEdit.getChildComponents().clear();
ValueEditCreator valueEditCreator = ValueEditRegistry.getValueEditMap(classSelection);
- parameter.setNewData(valueEditCreator.createDefaultValue(parameter));
- parameter.setPreviousData(valueEditCreator.cloneObj(parameter.getNewData()));
+
+ if (!classSelection.equals(parameter.getNewData() == null ?"null" :parameter.getNewData().getClass().getName())) {
+ parameter.setNewData(valueEditCreator.createDefaultValue(parameter));
+ parameter.setPreviousData(valueEditCreator.cloneObj(parameter.getNewData()));
+ }
MPanel valueEdit = (MPanel) valueEditCreator.createValueEdit(parameter);
if (valueEdit == null) {
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditBoolean.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditBoolean.java
new file mode 100644
index 00000000..7a9b4259
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditBoolean.java
@@ -0,0 +1,79 @@
+package kr.syeyoung.dungeonsguide.roomedit.valueedit;
+
+import kr.syeyoung.dungeonsguide.roomedit.MPanel;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.roomedit.elements.MLabel;
+import kr.syeyoung.dungeonsguide.roomedit.elements.MLabelAndElement;
+import kr.syeyoung.dungeonsguide.roomedit.elements.MStringSelectionButton;
+import kr.syeyoung.dungeonsguide.roomedit.elements.MTextField;
+import scala.actors.threadpool.Arrays;
+
+import java.awt.*;
+
+public class ValueEditBoolean extends MPanel implements ValueEdit<Boolean> {
+ private Parameter parameter;
+
+
+ public ValueEditBoolean(Parameter parameter2) {
+ this.parameter = parameter2;
+ {
+ MLabel label = new MLabel() {
+ @Override
+ public String getText() {
+ return parameter.getPreviousData().toString();
+ }
+ };
+ MLabelAndElement mLabelAndElement = new MLabelAndElement("Prev",label);
+ mLabelAndElement.setBounds(new Rectangle(0,0,bounds.width,20));
+ add(mLabelAndElement);
+ }
+ {
+ boolean newData = (Boolean) parameter.getNewData();
+ final MStringSelectionButton textField = new MStringSelectionButton(Arrays.asList(new String[] {"true", "false"}), Boolean.toString(newData));
+ textField.setOnUpdate(new Runnable() {
+ @Override
+ public void run() {
+ parameter.setNewData(Boolean.valueOf(textField.getSelected()));
+ }
+ });
+ MLabelAndElement mLabelAndElement = new MLabelAndElement("New",textField);
+ mLabelAndElement.setBounds(new Rectangle(0,20,bounds.width,20));
+ add(mLabelAndElement);
+ }
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ for (MPanel panel :getChildComponents()){
+ panel.setSize(new Dimension(bounds.width, 20));
+ }
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditBoolean> {
+
+ @Override
+ public ValueEditBoolean createValueEdit(Parameter parameter) {
+ return new ValueEditBoolean(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return true;
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ return object;
+ }
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditInteger.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditInteger.java
new file mode 100644
index 00000000..7806cafc
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditInteger.java
@@ -0,0 +1,78 @@
+package kr.syeyoung.dungeonsguide.roomedit.valueedit;
+
+import kr.syeyoung.dungeonsguide.roomedit.MPanel;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.roomedit.elements.MIntegerSelectionButton;
+import kr.syeyoung.dungeonsguide.roomedit.elements.MLabel;
+import kr.syeyoung.dungeonsguide.roomedit.elements.MLabelAndElement;
+import kr.syeyoung.dungeonsguide.roomedit.elements.MTextField;
+
+import java.awt.*;
+
+public class ValueEditInteger extends MPanel implements ValueEdit<Integer> {
+ private Parameter parameter;
+
+
+ public ValueEditInteger(final Parameter parameter2) {
+ this.parameter = parameter2;
+ {
+ MLabel label = new MLabel() {
+ @Override
+ public String getText() {
+ return parameter.getPreviousData().toString();
+ }
+ };
+ MLabelAndElement mLabelAndElement = new MLabelAndElement("Prev",label);
+ mLabelAndElement.setBounds(new Rectangle(0,0,bounds.width,20));
+ add(mLabelAndElement);
+ }
+ {
+ int newData = (Integer) parameter.getNewData();
+ final MIntegerSelectionButton textField = new MIntegerSelectionButton(newData);
+ textField.setOnUpdate(new Runnable() {
+ @Override
+ public void run() {
+ parameter.setNewData(textField.getData());
+ }
+ });
+ MLabelAndElement mLabelAndElement = new MLabelAndElement("New",textField);
+ mLabelAndElement.setBounds(new Rectangle(0,20,bounds.width,20));
+ add(mLabelAndElement);
+ }
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ for (MPanel panel :getChildComponents()){
+ panel.setSize(new Dimension(bounds.width, 20));
+ }
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditInteger> {
+
+ @Override
+ public ValueEditInteger createValueEdit(Parameter parameter) {
+ return new ValueEditInteger(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return 0;
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ return object;
+ }
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditNull.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditNull.java
index 42488e98..d71ebc88 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditNull.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditNull.java
@@ -12,4 +12,9 @@ public class ValueEditNull implements ValueEditCreator {
public ActuallyClonable createDefaultValue(Parameter parameter) {
return null;
}
+
+ @Override
+ public Object cloneObj(Object object) {
+ return null;
+ }
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditOffsetPoint.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditOffsetPoint.java
new file mode 100644
index 00000000..c91e0bea
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditOffsetPoint.java
@@ -0,0 +1,130 @@
+package kr.syeyoung.dungeonsguide.roomedit.valueedit;
+
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+import kr.syeyoung.dungeonsguide.roomedit.EditingContext;
+import kr.syeyoung.dungeonsguide.roomedit.MPanel;
+import kr.syeyoung.dungeonsguide.roomedit.Parameter;
+import kr.syeyoung.dungeonsguide.roomedit.elements.*;
+import kr.syeyoung.dungeonsguide.utils.RenderUtils;
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import scala.actors.threadpool.Arrays;
+
+import java.awt.*;
+
+public class ValueEditOffsetPoint extends MPanel implements ValueEdit<String> {
+ private Parameter parameter;
+
+
+ public ValueEditOffsetPoint(final Parameter parameter2) {
+ this.parameter = parameter2;
+ {
+ MLabel label = new MLabel() {
+ @Override
+ public String getText() {
+ return parameter.getPreviousData().toString();
+ }
+ };
+ MLabelAndElement mLabelAndElement = new MLabelAndElement("Prev",label);
+ mLabelAndElement.setBounds(new Rectangle(0,0,bounds.width,20));
+ add(mLabelAndElement);
+ }
+ OffsetPoint newData = (OffsetPoint) parameter.getNewData();
+ {
+ final MIntegerSelectionButton textField = new MIntegerSelectionButton(newData.getX());
+ textField.setOnUpdate(new Runnable() {
+ @Override
+ public void run() {
+ ((OffsetPoint) parameter.getNewData()).setX(textField.getData());
+ }
+ });
+ MLabelAndElement mLabelAndElement = new MLabelAndElement("x",textField);
+ mLabelAndElement.setBounds(new Rectangle(0,20,bounds.width,20));
+ add(mLabelAndElement);
+ }
+ {
+ final MIntegerSelectionButton textField = new MIntegerSelectionButton(newData.getY());
+ textField.setOnUpdate(new Runnable() {
+ @Override
+ public void run() {
+ ((OffsetPoint) parameter.getNewData()).setY(textField.getData());
+ }
+ });
+ MLabelAndElement mLabelAndElement = new MLabelAndElement("y",textField);
+ mLabelAndElement.setBounds(new Rectangle(0,40,bounds.width,20));
+ add(mLabelAndElement);
+ }
+ {
+ final MIntegerSelectionButton textField = new MIntegerSelectionButton(newData.getZ());
+ textField.setOnUpdate(new Runnable() {
+ @Override
+ public void run() {
+ ((OffsetPoint) parameter.getNewData()).setX(textField.getData());
+ }
+ });
+ MLabelAndElement mLabelAndElement = new MLabelAndElement("z",textField);
+ mLabelAndElement.setBounds(new Rectangle(0,60,bounds.width,20));
+ add(mLabelAndElement);
+ }
+ {
+ final MLabel setToHEre = new MLabel() {
+ @Override
+ public String getText() {
+ OffsetPoint offsetPoint = (OffsetPoint) parameter.getNewData();
+ return Block.getIdFromBlock(offsetPoint.getBlock(EditingContext.getEditingContext().getRoom())) +
+ ":" + offsetPoint.getData(EditingContext.getEditingContext().getRoom());
+ }
+ };
+ MLabelAndElement mLabelAndElement = new MLabelAndElement("newPt",setToHEre);
+ mLabelAndElement.setBounds(new Rectangle(0,80,bounds.width,20));
+ add(mLabelAndElement);
+ }
+ }
+
+ @Override
+ public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) {
+ RenderUtils.highlightBlock2(((OffsetPoint)parameter.getPreviousData()).getBlockPos(EditingContext.getEditingContext().getRoom()), new Color(255,0,0,150), partialTicks);
+ RenderUtils.highlightBlock2(((OffsetPoint)parameter.getNewData()).getBlockPos(EditingContext.getEditingContext().getRoom()), new Color(0,255,0,150), partialTicks);
+ }
+
+ @Override
+ public void onBoundsUpdate() {
+ for (MPanel panel :getChildComponents()){
+ panel.setSize(new Dimension(bounds.width, 20));
+ }
+ }
+
+ @Override
+ public void setParameter(Parameter parameter) {
+ this.parameter = parameter;
+ }
+
+ @Override
+ public void resize(int parentWidth, int parentHeight) {
+ this.setBounds(new Rectangle(0,0,parentWidth, parentHeight));
+ }
+
+ public static class Generator implements ValueEditCreator<ValueEditOffsetPoint> {
+
+ @Override
+ public ValueEditOffsetPoint createValueEdit(Parameter parameter) {
+ return new ValueEditOffsetPoint(parameter);
+ }
+
+ @Override
+ public Object createDefaultValue(Parameter parameter) {
+ return new OffsetPoint(EditingContext.getEditingContext().getRoom(), Minecraft.getMinecraft().thePlayer.getPosition());
+ }
+
+ @Override
+ public Object cloneObj(Object object) {
+ try {
+ return ((OffsetPoint)object).clone();
+ } catch (CloneNotSupportedException e) {
+ e.printStackTrace();
+ }
+ assert false;
+ return null;
+ }
+ }
+}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java
index 72120c0f..5fd86b22 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditRegistry.java
@@ -1,5 +1,7 @@
package kr.syeyoung.dungeonsguide.roomedit.valueedit;
+import kr.syeyoung.dungeonsguide.dungeon.data.OffsetPoint;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -19,5 +21,8 @@ public class ValueEditRegistry {
static {
valueEditMap.put("null", new ValueEditNull());
valueEditMap.put(String.class.getName(), new ValueEditString.Generator());
+ valueEditMap.put(Boolean.class.getName(), new ValueEditBoolean.Generator());
+ valueEditMap.put(Integer.class.getName(), new ValueEditInteger.Generator());
+ valueEditMap.put(OffsetPoint.class.getName(), new ValueEditOffsetPoint.Generator());
}
}
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditString.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditString.java
index e7162a1a..96bb9a4f 100644
--- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditString.java
+++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/valueedit/ValueEditString.java
@@ -26,12 +26,14 @@ public class ValueEditString extends MPanel implements ValueEdit<String> {
add(mLabelAndElement);
}
{
+ String newData = (String) parameter.getNewData();
MTextField textField = new MTextField() {
@Override
public void edit(String str) {
parameter.setNewData(str);
}
};
+ textField.setText(newData);
MLabelAndElement mLabelAndElement = new MLabelAndElement("New",textField);
mLabelAndElement.setBounds(new Rectangle(0,20,bounds.width,20));
add(mLabelAndElement);