diff options
| author | syeyoung <42869671+cyoung06@users.noreply.github.com> | 2020-12-10 22:46:37 +0900 |
|---|---|---|
| committer | syeyoung <42869671+cyoung06@users.noreply.github.com> | 2020-12-10 22:46:37 +0900 |
| commit | 75aa91678c2dfdf844ecfcbb68bcf9389028ca4e (patch) | |
| tree | 45757cabbc6e4c9b050f23102114ce89b10ea78d /src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes | |
| parent | cbd22473c62d076b25543611894da001685f5e21 (diff) | |
| download | Skyblock-Dungeons-Guide-75aa91678c2dfdf844ecfcbb68bcf9389028ca4e.tar.gz Skyblock-Dungeons-Guide-75aa91678c2dfdf844ecfcbb68bcf9389028ca4e.tar.bz2 Skyblock-Dungeons-Guide-75aa91678c2dfdf844ecfcbb68bcf9389028ca4e.zip | |
secretz
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes')
3 files changed, 149 insertions, 3 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/DynamicEditor.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/DynamicEditor.java new file mode 100644 index 00000000..f1b78cb2 --- /dev/null +++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/DynamicEditor.java @@ -0,0 +1,12 @@ +package kr.syeyoung.dungeonsguide.roomedit.panes; + +import kr.syeyoung.dungeonsguide.roomedit.Parameter; +import kr.syeyoung.dungeonsguide.roomedit.elements.MParameter; + +import java.util.List; + +public interface DynamicEditor { + void delete(MParameter parameter); + + List<String> allowedClass(); +} diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/ProcessorParameterEditPane.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/ProcessorParameterEditPane.java index a6606a0f..8f5d742a 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/ProcessorParameterEditPane.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/ProcessorParameterEditPane.java @@ -5,9 +5,7 @@ import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; import kr.syeyoung.dungeonsguide.roomedit.MPanel; import kr.syeyoung.dungeonsguide.roomedit.Parameter; import kr.syeyoung.dungeonsguide.roomedit.elements.MButton; -import kr.syeyoung.dungeonsguide.roomedit.elements.MLabelAndElement; import kr.syeyoung.dungeonsguide.roomedit.elements.MParameter; -import kr.syeyoung.dungeonsguide.roomedit.valueedit.ActuallyClonable; import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator; import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditRegistry; @@ -17,7 +15,7 @@ import java.util.List; import java.util.Map; import java.util.UUID; -public class ProcessorParameterEditPane extends MPanel { +public class ProcessorParameterEditPane extends MPanel implements DynamicEditor { private DungeonRoom dungeonRoom; private MButton save; @@ -92,6 +90,11 @@ public class ProcessorParameterEditPane extends MPanel { parameters.remove(parameter); } + @Override + public List<String> allowedClass() { + return ValueEditRegistry.getClassesSupported(); + } + @Override public List<MPanel> getChildComponents() { diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/SecretEditPane.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/SecretEditPane.java new file mode 100644 index 00000000..33dcdc00 --- /dev/null +++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/SecretEditPane.java @@ -0,0 +1,131 @@ +package kr.syeyoung.dungeonsguide.roomedit.panes; + +import kr.syeyoung.dungeonsguide.dungeon.data.DungeonRoomInfo; +import kr.syeyoung.dungeonsguide.dungeon.mechanics.DungeonMechanic; +import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; +import kr.syeyoung.dungeonsguide.roomedit.MPanel; +import kr.syeyoung.dungeonsguide.roomedit.Parameter; +import kr.syeyoung.dungeonsguide.roomedit.elements.MButton; +import kr.syeyoung.dungeonsguide.roomedit.elements.MParameter; +import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditCreator; +import kr.syeyoung.dungeonsguide.roomedit.valueedit.ValueEditRegistry; + +import java.awt.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +public class SecretEditPane extends MPanel implements DynamicEditor { + private DungeonRoom dungeonRoom; + + private MButton save; + private MButton create; + private List<MParameter> parameters = new ArrayList<MParameter>(); + + private List<String> allowedClasses = new ArrayList<String>(); + + public SecretEditPane(DungeonRoom dungeonRoom) { + this.dungeonRoom = dungeonRoom; + buildElements(); + + for (String clazz : ValueEditRegistry.getClassesSupported()) { + if (clazz.contains("mechanics") || clazz.equals("null")) { + allowedClasses.add(clazz); + } + } + } + + public void buildElements() { + { + create = new MButton(); + create.setText("Create New Mechanic"); + create.setBackgroundColor(Color.cyan); + create.setBounds(new Rectangle(0,0,100,20)); + create.setOnActionPerformed(new Runnable() { + @Override + public void run() { + MParameter parameter; + parameters.add(parameter = new MParameter(new Parameter(UUID.randomUUID().toString(), null, null), SecretEditPane.this)); + parameter.setBounds(new Rectangle(0,0,bounds.width, 20)); + } + }); + + save = new MButton(); + save.setText("Save"); + save.setBackgroundColor(Color.green); + save.setBounds(new Rectangle(0,0,100,20)); + save.setOnActionPerformed(new Runnable() { + @Override + public void run() { + DungeonRoomInfo dungeonRoomInfo = dungeonRoom.getDungeonRoomInfo(); + dungeonRoomInfo.getProperties().clear(); + + for (MParameter parameter : parameters) { + Parameter real = parameter.getParameter(); + + ValueEditCreator vec = ValueEditRegistry.getValueEditMap(real.getNewData() == null ? "null" :real.getNewData().getClass().getName()); + + real.setPreviousData(vec.cloneObj(real.getNewData())); + dungeonRoomInfo.getMechanics().put(real.getName(), (DungeonMechanic) real.getNewData()); + } + } + }); + } + { + for (Map.Entry<String, DungeonMechanic> en : dungeonRoom.getDungeonRoomInfo().getMechanics().entrySet()) { + ValueEditCreator vec = ValueEditRegistry.getValueEditMap(en.getValue() == null ? "null" :en.getValue().getClass().getName()); + + MParameter mParameter = new MParameter(new Parameter(en.getKey(), vec.cloneObj(en.getValue()), vec.cloneObj(en.getValue())), this); + mParameter.setBounds(new Rectangle(0,0,bounds.width,20)); + parameters.add(mParameter); + } + } + } + + @Override + public void onBoundsUpdate() { + for (MPanel panel :getChildComponents()){ + panel.setSize(new Dimension(bounds.width, 20)); + } + } + @Override + public void resize(int parentWidth, int parentHeight) { + this.setBounds(new Rectangle(5,5,parentWidth-10,parentHeight-10)); + } + + + public void delete(MParameter parameter) { + parameters.remove(parameter); + } + + @Override + public List<String> allowedClass() { + return allowedClasses; + } + + @Override + public List<MPanel> getChildComponents() { + ArrayList<MPanel> panels = new ArrayList<MPanel>(parameters); + panels.add(create); + panels.add(save); + return panels; + } + + private int offsetY = 0; + @Override + public void render(int absMousex, int absMousey, int relMousex0, int relMousey0, float partialTicks, Rectangle scissor) { + int heights = 0; + for (MPanel panel:getChildComponents()) { + panel.setPosition(new Point(0, -offsetY + heights)); + heights += panel.getBounds().height; + } + } + + @Override + public void mouseScrolled(int absMouseX, int absMouseY, int relMouseX0, int relMouseY0, int scrollAmount) { + if (scrollAmount > 0) offsetY -= 20; + else if (scrollAmount < 0) offsetY += 20; + if (offsetY < 0) offsetY = 0; + } +} |
