From 2b0fbd99045d580d6f7c6876197b4c2200eb59f8 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 26 Jul 2019 00:04:36 -0400 Subject: [PATCH] """better""" map generation dialog --- .../mindustry/editor/MapGenerateDialog.java | 19 +++++++++++++------ .../mindustry/maps/filters/MirrorFilter.java | 13 ++++++++++++- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java b/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java index f6a56d879c..032516df3e 100644 --- a/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java @@ -83,6 +83,8 @@ public class MapGenerateDialog extends FloatingDialog{ if(!applied){ hidden(this::apply); } + + onResize(() -> rebuildFilters()); } public void show(Array filters, Consumer> applier){ @@ -183,8 +185,8 @@ public class MapGenerateDialog extends FloatingDialog{ setScaling(Scaling.none); }}); visible(() -> generating && !updateEditorOnChange); - }}).size(mobile ? 300f : 400f).padRight(10); - t.pane(p -> filterTable = p.marginRight(6)).width(300f).update(pane -> { + }}).grow().padRight(10); + t.pane(p -> filterTable = p.marginRight(6)).update(pane -> { if(Core.scene.getKeyboardFocus() instanceof Dialog && Core.scene.getKeyboardFocus() != this){ return; } @@ -196,7 +198,7 @@ public class MapGenerateDialog extends FloatingDialog{ }else{ Core.scene.setScrollFocus(null); } - }).get().setScrollingDisabled(true, false); + }).grow().get().setScrollingDisabled(true, false); }).grow(); buffer1 = create(); @@ -218,8 +220,10 @@ public class MapGenerateDialog extends FloatingDialog{ } void rebuildFilters(){ + int cols = Math.max((int)(filterTable.getParent().getWidth() / Unit.dp.scl(290f)), 1); filterTable.clearChildren(); - filterTable.top(); + filterTable.top().left(); + int i = 0; for(GenerateFilter filter : filters){ @@ -227,6 +231,7 @@ public class MapGenerateDialog extends FloatingDialog{ filterTable.table("button", c -> { //icons to perform actions c.table(t -> { + t.top(); t.add(filter.name()).padTop(5).color(Pal.accent).growX().left(); t.row(); @@ -273,8 +278,10 @@ public class MapGenerateDialog extends FloatingDialog{ f.row(); } }).grow().left().pad(2); - }).width(280f).pad(3); - filterTable.row(); + }).width(280f).pad(3).top().left(); + if(++i % cols == 0){ + filterTable.row(); + } } if(filters.isEmpty()){ diff --git a/core/src/io/anuke/mindustry/maps/filters/MirrorFilter.java b/core/src/io/anuke/mindustry/maps/filters/MirrorFilter.java index 3da7590de8..9397f9bf03 100644 --- a/core/src/io/anuke/mindustry/maps/filters/MirrorFilter.java +++ b/core/src/io/anuke/mindustry/maps/filters/MirrorFilter.java @@ -43,8 +43,19 @@ public class MirrorFilter extends GenerateFilter{ @Override public void draw(Image image){ super.draw(image); + + Vector2 vsize = Scaling.fit.apply(image.getDrawable().getMinWidth(), image.getDrawable().getMinHeight(), image.getWidth(), image.getHeight()); + float imageWidth = vsize.x; + float imageHeight = vsize.y; + float size = Math.max(image.getWidth() *2, image.getHeight()*2); - Consumer clamper = v -> v.clamp(image.getX(), image.getX() + image.getWidth(), image.getY(), image.getY() + image.getHeight()); + Consumer clamper = v -> + v.clamp( + image.getX() + image.getWidth()/2f - imageWidth/2f, + image.getX() + image.getWidth()/2f + imageWidth/2f, + image.getY() + image.getHeight()/2f - imageHeight/2f, + image.getY() + image.getHeight()/2f + imageHeight/2f); + clamper.accept(Tmp.v1.trns(angle - 90, size).add(image.getWidth()/2f + image.getX(), image.getHeight()/2f + image.getY())); clamper.accept(Tmp.v2.set(Tmp.v1).sub(image.getWidth()/2f + image.getX(), image.getHeight()/2f + image.getY()).rotate(180f).add(image.getWidth()/2f + image.getX(), image.getHeight()/2f + image.getY()));