diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 6951006eec..0b7a116d49 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -269,6 +269,8 @@ filter.distort = Distort filter.noise = Noise filter.ore = Ore filter.rivernoise = River Noise +filter.mirror = Mirror +filter.clear = Clear filter.scatter = Scatter filter.terrain = Terrain filter.option.scale = Scale diff --git a/core/assets/maps/caldera.msav b/core/assets/maps/caldera.msav index b8cd96df57..4ed0889f5e 100644 Binary files a/core/assets/maps/caldera.msav and b/core/assets/maps/caldera.msav differ diff --git a/core/assets/maps/canyon.msav b/core/assets/maps/canyon.msav index ad8e8d7e15..4eec4a6598 100644 Binary files a/core/assets/maps/canyon.msav and b/core/assets/maps/canyon.msav differ diff --git a/core/assets/maps/fortress.msav b/core/assets/maps/fortress.msav index fdfa666271..25f2c10835 100644 Binary files a/core/assets/maps/fortress.msav and b/core/assets/maps/fortress.msav differ diff --git a/core/assets/maps/glacier.msav b/core/assets/maps/glacier.msav index 603bd2aeca..12c693556a 100644 Binary files a/core/assets/maps/glacier.msav and b/core/assets/maps/glacier.msav differ diff --git a/core/assets/maps/islands.msav b/core/assets/maps/islands.msav index c7fdff1001..66ad2aa646 100644 Binary files a/core/assets/maps/islands.msav and b/core/assets/maps/islands.msav differ diff --git a/core/assets/maps/labyrinth.msav b/core/assets/maps/labyrinth.msav index e1d51492aa..7501a592ad 100644 Binary files a/core/assets/maps/labyrinth.msav and b/core/assets/maps/labyrinth.msav differ diff --git a/core/assets/maps/maze.msav b/core/assets/maps/maze.msav index 775b9c83cf..47e9c5bbe3 100644 Binary files a/core/assets/maps/maze.msav and b/core/assets/maps/maze.msav differ diff --git a/core/assets/maps/tendrils.msav b/core/assets/maps/tendrils.msav index 651b745494..178c11a03e 100644 Binary files a/core/assets/maps/tendrils.msav and b/core/assets/maps/tendrils.msav differ diff --git a/core/assets/maps/veins.msav b/core/assets/maps/veins.msav index d29800684b..d63dc2c1e8 100644 Binary files a/core/assets/maps/veins.msav and b/core/assets/maps/veins.msav differ diff --git a/core/src/io/anuke/mindustry/editor/EditorTile.java b/core/src/io/anuke/mindustry/editor/EditorTile.java index 7f5c2a28ae..0e6f0d28f3 100644 --- a/core/src/io/anuke/mindustry/editor/EditorTile.java +++ b/core/src/io/anuke/mindustry/editor/EditorTile.java @@ -91,6 +91,11 @@ public class EditorTile extends Tile{ super.rotation(rotation); } + @Override + public void setOverlay(Block overlay){ + setOverlayID(overlay.id); + } + @Override public void setOverlayID(short overlay){ if(state.is(State.playing)){ diff --git a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java index 4953c818f6..934a2a5abd 100644 --- a/core/src/io/anuke/mindustry/editor/MapEditorDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapEditorDialog.java @@ -20,6 +20,7 @@ import io.anuke.arc.scene.ui.layout.Table; import io.anuke.arc.scene.ui.layout.Unit; import io.anuke.arc.util.*; import io.anuke.mindustry.Vars; +import io.anuke.mindustry.content.*; import io.anuke.mindustry.core.GameState.State; import io.anuke.mindustry.core.Platform; import io.anuke.mindustry.game.*; @@ -32,7 +33,7 @@ import io.anuke.mindustry.ui.dialogs.FloatingDialog; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Block.Icon; import io.anuke.mindustry.world.Tile; -import io.anuke.mindustry.world.blocks.OverlayFloor; +import io.anuke.mindustry.world.blocks.*; import io.anuke.mindustry.world.blocks.storage.CoreBlock; import static io.anuke.mindustry.Vars.*; @@ -590,6 +591,28 @@ public class MapEditorDialog extends Dialog implements Disposable{ editor.undo(); } + //more undocumented features, fantastic + if(Core.input.keyTap(KeyCode.T)){ + + //clears all 'decoration' from the map + for(int x = 0; x < editor.width(); x++){ + for(int y = 0; y < editor.height(); y++){ + Tile tile = editor.tile(x, y); + if(tile.block().breakable && tile.block() instanceof Rock){ + tile.setBlock(Blocks.air); + editor.renderer().updatePoint(x, y); + } + + if(tile.overlay() != Blocks.air && tile.overlay() != Blocks.spawn){ + tile.setOverlay(Blocks.air); + editor.renderer().updatePoint(x, y); + } + } + } + + editor.flushOp(); + } + if(Core.input.keyTap(KeyCode.Y)){ editor.redo(); } diff --git a/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java b/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java index 0b6193750e..f6a56d879c 100644 --- a/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java @@ -29,7 +29,7 @@ public class MapGenerateDialog extends FloatingDialog{ private final Supplier[] filterTypes = new Supplier[]{ NoiseFilter::new, ScatterFilter::new, TerrainFilter::new, DistortFilter::new, RiverNoiseFilter::new, OreFilter::new, MedianFilter::new, BlendFilter::new, - MirrorFilter::new + MirrorFilter::new, ClearFilter::new }; private final MapEditor editor; private final boolean applied; @@ -64,6 +64,12 @@ public class MapGenerateDialog extends FloatingDialog{ hide(); }); }).size(160f, 64f); + }else{ + buttons.addButton("$settings.reset", () -> { + filters.set(world.maps.readFilters("")); + rebuildFilters(); + update(); + }).size(160f, 64f); } buttons.addButton("$editor.randomize", () -> { for(GenerateFilter filter : filters){ @@ -137,9 +143,9 @@ public class MapGenerateDialog extends FloatingDialog{ public void addDefaultOres(Array filters){ int index = 0; - for(Block block : new Block[]{Blocks.oreCopper, Blocks.oreCoal, Blocks.oreLead, Blocks.oreTitanium, Blocks.oreThorium}){ + for(Block block : new Block[]{Blocks.oreCopper, Blocks.oreLead, Blocks.oreCoal, Blocks.oreTitanium, Blocks.oreThorium}){ OreFilter filter = new OreFilter(); - filter.threshold += index ++ * 0.025f; + filter.threshold += index ++ * 0.019f; filter.ore = block; filters.add(filter); } diff --git a/core/src/io/anuke/mindustry/maps/Maps.java b/core/src/io/anuke/mindustry/maps/Maps.java index 563882be2e..88c0a4f3ed 100644 --- a/core/src/io/anuke/mindustry/maps/Maps.java +++ b/core/src/io/anuke/mindustry/maps/Maps.java @@ -186,25 +186,35 @@ public class Maps implements Disposable{ @SuppressWarnings("unchecked") public Array readFilters(String str){ if(str == null || str.isEmpty()){ - return Array.with( - //stone - new ScatterFilter(){{ - flooronto = Blocks.stone; - block = Blocks.rock; - }}, - new ScatterFilter(){{ - flooronto = Blocks.shale; - block = Blocks.shaleBoulder; - }}, - new ScatterFilter(){{ - flooronto = Blocks.snow; - block = Blocks.snowrock; - }}, - new ScatterFilter(){{ - flooronto = Blocks.ice; - block = Blocks.snowrock; - }} + //create default filters list + Array filters = Array.with( + new ScatterFilter(){{ + flooronto = Blocks.stone; + block = Blocks.rock; + }}, + new ScatterFilter(){{ + flooronto = Blocks.shale; + block = Blocks.shaleBoulder; + }}, + new ScatterFilter(){{ + flooronto = Blocks.snow; + block = Blocks.snowrock; + }}, + new ScatterFilter(){{ + flooronto = Blocks.ice; + block = Blocks.snowrock; + }} ); + + int index = 0; + for(Block block : new Block[]{Blocks.oreCopper, Blocks.oreLead, Blocks.oreCoal, Blocks.oreTitanium, Blocks.oreThorium}){ + OreFilter filter = new OreFilter(); + filter.threshold += index ++ * 0.019f; + filter.ore = block; + filters.add(filter); + } + + return filters; }else{ return JsonIO.read(Array.class, str); } diff --git a/core/src/io/anuke/mindustry/maps/filters/ClearFilter.java b/core/src/io/anuke/mindustry/maps/filters/ClearFilter.java new file mode 100644 index 0000000000..418f99bebc --- /dev/null +++ b/core/src/io/anuke/mindustry/maps/filters/ClearFilter.java @@ -0,0 +1,24 @@ +package io.anuke.mindustry.maps.filters; + +import io.anuke.mindustry.content.*; +import io.anuke.mindustry.world.*; + +import static io.anuke.mindustry.maps.filters.FilterOption.*; + +public class ClearFilter extends GenerateFilter{ + protected Block block = Blocks.air; + + { + options( + new BlockOption("block", () -> block, b -> block = b, wallsOnly) + ); + } + + @Override + public void apply(){ + + if(in.block == block){ + in.block = Blocks.air; + } + } +} diff --git a/core/src/io/anuke/mindustry/maps/filters/OreFilter.java b/core/src/io/anuke/mindustry/maps/filters/OreFilter.java index 51e0024d6e..3c8194da5a 100644 --- a/core/src/io/anuke/mindustry/maps/filters/OreFilter.java +++ b/core/src/io/anuke/mindustry/maps/filters/OreFilter.java @@ -8,7 +8,7 @@ import static io.anuke.mindustry.maps.filters.FilterOption.BlockOption; import static io.anuke.mindustry.maps.filters.FilterOption.oresOnly; public class OreFilter extends GenerateFilter{ - public float scl = 45, threshold = 0.73f, octaves = 3f, falloff = 0.4f; + public float scl = 43, threshold = 0.705f, octaves = 3f, falloff = 0.4f; public Block ore = Blocks.oreCopper; {