diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 7533d4aa0a..c23e16b3a1 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -460,6 +460,7 @@ toolmode.drawteams = Draw Teams toolmode.drawteams.description = Draw teams instead of blocks. filters.empty = [lightgray]No filters! Add one with the button below. + filter.distort = Distort filter.noise = Noise filter.enemyspawn = Enemy Spawn Select @@ -476,6 +477,7 @@ filter.clear = Clear filter.option.ignore = Ignore filter.scatter = Scatter filter.terrain = Terrain + filter.option.scale = Scale filter.option.chance = Chance filter.option.mag = Magnitude diff --git a/core/src/mindustry/maps/filters/BlendFilter.java b/core/src/mindustry/maps/filters/BlendFilter.java index 8aa0e7e067..2083f46ef8 100644 --- a/core/src/mindustry/maps/filters/BlendFilter.java +++ b/core/src/mindustry/maps/filters/BlendFilter.java @@ -1,6 +1,5 @@ package mindustry.maps.filters; -import arc.math.*; import arc.util.*; import mindustry.content.*; import mindustry.gen.*; @@ -15,9 +14,9 @@ public class BlendFilter extends GenerateFilter{ @Override public FilterOption[] options(){ return Structs.arr( - new SliderOption("radius", () -> radius, f -> radius = f, 1f, 10f), + new SliderOption("radius", () -> radius, f -> radius = f, 1f, 15f), new BlockOption("block", () -> block, b -> block = b, anyOptional), - new BlockOption("floor", () -> floor, b -> floor = b, floorsOnly), + new BlockOption("floor", () -> floor, b -> floor = b, anyOptional), new BlockOption("ignore", () -> ignore, b -> ignore = b, floorsOptional) ); } @@ -34,7 +33,7 @@ public class BlendFilter extends GenerateFilter{ @Override public void apply(){ - if(in.floor == block || block == Blocks.air || in.floor == ignore) return; + if(in.floor == block || block == Blocks.air || in.floor == ignore || (!floor.isFloor() && (in.block == block || in.block == ignore))) return; int rad = (int)radius; boolean found = false; @@ -42,7 +41,7 @@ public class BlendFilter extends GenerateFilter{ outer: for(int x = -rad; x <= rad; x++){ for(int y = -rad; y <= rad; y++){ - if(Mathf.within(x, y, rad)) continue; + if(x*x + y*y > rad) continue; Tile tile = in.tile(in.x + x, in.y + y); if(tile.floor() == block || tile.block() == block || tile.overlay() == block){ @@ -53,7 +52,11 @@ public class BlendFilter extends GenerateFilter{ } if(found){ - in.floor = floor; + if(!floor.isFloor()){ + in.block = floor; + }else{ + in.floor = floor; + } } } } diff --git a/core/src/mindustry/maps/filters/FilterOption.java b/core/src/mindustry/maps/filters/FilterOption.java index 1a6230795f..ea97157abf 100644 --- a/core/src/mindustry/maps/filters/FilterOption.java +++ b/core/src/mindustry/maps/filters/FilterOption.java @@ -9,7 +9,6 @@ import arc.scene.ui.layout.*; import mindustry.*; import mindustry.content.*; import mindustry.gen.*; -import mindustry.ui.*; import mindustry.ui.dialogs.*; import mindustry.world.*; import mindustry.world.blocks.environment.*; @@ -105,6 +104,7 @@ public abstract class FilterOption{ if(++i % 10 == 0) dialog.cont.row(); } + dialog.closeOnBack(); dialog.show(); }).pad(4).margin(12f); diff --git a/core/src/mindustry/maps/filters/GenerateFilter.java b/core/src/mindustry/maps/filters/GenerateFilter.java index 0887d4f135..66ed9eaf76 100644 --- a/core/src/mindustry/maps/filters/GenerateFilter.java +++ b/core/src/mindustry/maps/filters/GenerateFilter.java @@ -75,11 +75,16 @@ public abstract class GenerateFilter{ /** draw any additional guides */ public void draw(Image image){} - /** localized display name */ - public String name(){ + public String simpleName(){ Class c = getClass(); if(c.isAnonymousClass()) c = c.getSuperclass(); - return Core.bundle.get("filter." + c.getSimpleName().toLowerCase().replace("filter", ""), c.getSimpleName().replace("Filter", "")); + return c.getSimpleName().toLowerCase().replace("filter", ""); + } + + /** localized display name */ + public String name(){ + var s = simpleName(); + return Core.bundle.get("filter." + s); } public char icon(){ diff --git a/core/src/mindustry/maps/filters/MedianFilter.java b/core/src/mindustry/maps/filters/MedianFilter.java index fa2c3e310b..001d79bba5 100644 --- a/core/src/mindustry/maps/filters/MedianFilter.java +++ b/core/src/mindustry/maps/filters/MedianFilter.java @@ -10,14 +10,15 @@ import mindustry.world.*; import static mindustry.Vars.*; public class MedianFilter extends GenerateFilter{ + private static final IntSeq blocks = new IntSeq(), floors = new IntSeq(); + float radius = 2; float percentile = 0.5f; - IntSeq blocks = new IntSeq(), floors = new IntSeq(); @Override public FilterOption[] options(){ return Structs.arr( - new SliderOption("radius", () -> radius, f -> radius = f, 1f, 12f), + new SliderOption("radius", () -> radius, f -> radius = f, 1f, 10f), new SliderOption("percentile", () -> percentile, f -> percentile = f, 0f, 1f) ); } diff --git a/tools/src/mindustry/tools/Generators.java b/tools/src/mindustry/tools/Generators.java index cc6193025c..a993fb35be 100644 --- a/tools/src/mindustry/tools/Generators.java +++ b/tools/src/mindustry/tools/Generators.java @@ -331,7 +331,7 @@ public class Generators{ average.mul(1f / asum); if(block instanceof Floor){ - average.mul(0.8f); + average.mul(0.77f); }else{ average.mul(1.1f); }