From b99b13a6e4cf892dd3e9fecc8ac83204c7cf589c Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 24 Jul 2019 12:07:12 -0400 Subject: [PATCH] Added mirror tool for attack/PvP maps --- core/assets/bundles/bundle.properties | 1 + core/assets/maps/crags.msav | Bin 15701 -> 15800 bytes core/assets/maps/impact0078.msav | Bin 20864 -> 20824 bytes .../mindustry/editor/MapGenerateDialog.java | 19 ++++- .../editor/generation/FilterOption.java | 12 ++- .../editor/generation/GenerateFilter.java | 4 + .../editor/generation/MirrorFilter.java | 69 ++++++++++++++++++ core/src/io/anuke/mindustry/type/Loadout.java | 14 ++-- 8 files changed, 104 insertions(+), 15 deletions(-) create mode 100644 core/src/io/anuke/mindustry/editor/generation/MirrorFilter.java diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 846cd1b074..a9617ea0dd 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -277,6 +277,7 @@ filter.option.threshold = Threshold filter.option.circle-scale = Circle Scale filter.option.octaves = Octaves filter.option.falloff = Falloff +filter.option.angle = Angle filter.option.block = Block filter.option.floor = Floor filter.option.flooronto = Target Floor diff --git a/core/assets/maps/crags.msav b/core/assets/maps/crags.msav index 406168ec90420e3b4af3c179c39a576923df1d03..d3cb2b307a55e5a08efd6bdb301405bf82793eee 100644 GIT binary patch literal 15800 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 literal 15701 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 diff --git a/core/assets/maps/impact0078.msav b/core/assets/maps/impact0078.msav index 6702c005db1f7d087d8f694d79cf045c44f67c9c..872b26dc5113db1e88f9db11f20a2fd66708e13e 100644 GIT binary patch literal 20824 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 literal 20864 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

AiGy-Pe^Nc_&ceo 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 Yyiczt8_nCWOPldr_LKjt+u8$_0I?CP4*&oF diff --git a/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java b/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java index 011c07d4d9..3a3dcc0ed4 100644 --- a/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java @@ -30,7 +30,8 @@ import static io.anuke.mindustry.Vars.*; 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 + RiverNoiseFilter::new, OreFilter::new, MedianFilter::new, BlendFilter::new, + MirrorFilter::new }; private final MapEditor editor; @@ -84,9 +85,19 @@ public class MapGenerateDialog extends FloatingDialog{ cont.clear(); cont.table(t -> { t.margin(8f); - t.stack(new BorderImage(texture){{ - setScaling(Scaling.fit); - }}, new Stack(){{ + t.stack(new BorderImage(texture){ + { + setScaling(Scaling.fit); + } + + @Override + public void draw(){ + super.draw(); + for(GenerateFilter filter : filters){ + filter.draw(this); + } + } + }, new Stack(){{ add(new Image("loadDim")); add(new Image("icon-refresh"){{ setScaling(Scaling.none); diff --git a/core/src/io/anuke/mindustry/editor/generation/FilterOption.java b/core/src/io/anuke/mindustry/editor/generation/FilterOption.java index 1ef160315e..3aa2441885 100644 --- a/core/src/io/anuke/mindustry/editor/generation/FilterOption.java +++ b/core/src/io/anuke/mindustry/editor/generation/FilterOption.java @@ -24,28 +24,32 @@ public abstract class FilterOption{ public abstract void build(Table table); - public Runnable changed = () -> { - }; + public Runnable changed = () -> {}; static class SliderOption extends FilterOption{ final String name; final FloatProvider getter; final FloatConsumer setter; - final float min, max; + final float min, max, step; SliderOption(String name, FloatProvider getter, FloatConsumer setter, float min, float max){ + this(name, getter, setter, min, max, (max - min) / 200); + } + + SliderOption(String name, FloatProvider getter, FloatConsumer setter, float min, float max, float step){ this.name = name; this.getter = getter; this.setter = setter; this.min = min; this.max = max; + this.step = step; } @Override public void build(Table table){ table.add("$filter.option." + name); table.row(); - Slider slider = table.addSlider(min, max, (max - min) / 200f, setter).growX().get(); + Slider slider = table.addSlider(min, max, step, setter).growX().get(); slider.setValue(getter.get()); if(updateEditorOnChange){ slider.changed(changed); diff --git a/core/src/io/anuke/mindustry/editor/generation/GenerateFilter.java b/core/src/io/anuke/mindustry/editor/generation/GenerateFilter.java index 9105a7b4e8..d06eb5fb82 100644 --- a/core/src/io/anuke/mindustry/editor/generation/GenerateFilter.java +++ b/core/src/io/anuke/mindustry/editor/generation/GenerateFilter.java @@ -2,6 +2,7 @@ package io.anuke.mindustry.editor.generation; import io.anuke.arc.Core; import io.anuke.arc.math.Mathf; +import io.anuke.arc.scene.ui.*; import io.anuke.arc.util.Pack; import io.anuke.arc.util.noise.RidgedPerlin; import io.anuke.arc.util.noise.Simplex; @@ -20,6 +21,9 @@ public abstract class GenerateFilter{ protected abstract void apply(); + //draw any additional guides + public void draw(Image image){} + protected float noise(float x, float y, float scl, float mag){ return (float)in.noise.octaveNoise2D(1f, 0f, 1f / scl, x + o, y + o) * mag; } diff --git a/core/src/io/anuke/mindustry/editor/generation/MirrorFilter.java b/core/src/io/anuke/mindustry/editor/generation/MirrorFilter.java new file mode 100644 index 0000000000..159225708e --- /dev/null +++ b/core/src/io/anuke/mindustry/editor/generation/MirrorFilter.java @@ -0,0 +1,69 @@ +package io.anuke.mindustry.editor.generation; + +import io.anuke.arc.function.*; +import io.anuke.arc.graphics.g2d.*; +import io.anuke.arc.math.geom.*; +import io.anuke.arc.scene.ui.*; +import io.anuke.arc.scene.ui.layout.*; +import io.anuke.arc.util.*; +import io.anuke.mindustry.editor.MapGenerateDialog.*; +import io.anuke.mindustry.editor.generation.FilterOption.*; +import io.anuke.mindustry.graphics.*; + +import static io.anuke.mindustry.Vars.content; + +public class MirrorFilter extends GenerateFilter{ + private final Vector2 v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2(); + + float angle = 45; + + { + options(new SliderOption("angle", () -> angle, f -> angle = f, 0, 360, 45)); + } + + @Override + protected void apply(){ + v1.trns(angle - 90, 1f); + v2.set(v1).scl(-1f); + + v1.add(in.width/2f, in.height/2f); + v2.add(in.width/2f, in.height/2f); + + v3.set(in.x / in.scaling, in.y / in.scaling); + + if(!left(v1, v2, v3)){ + mirror(v3, v1.x, v1.y, v2.x, v2.y); + GenTile tile = in.tile(v3.x, v3.y); + in.floor = content.block(tile.floor); + in.block = content.block(tile.block); + in.ore = content.block(tile.ore); + } + } + + @Override + public void draw(Image image){ + super.draw(image); + 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()); + 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())); + + Lines.stroke(Unit.dp.scl(3f), Pal.accent); + Lines.line(Tmp.v1.x, Tmp.v1.y, Tmp.v2.x, Tmp.v2.y); + Draw.reset(); + } + + void mirror(Vector2 p, float x0, float y0, float x1, float y1){ + float dx = x1 - x0; + float dy = y1 - y0; + + float a = (dx * dx - dy * dy) / (dx * dx + dy*dy); + float b = 2 * dx * dy / (dx*dx + dy*dy); + + p.set((a * (p.x - x0) + b*(p.y - y0) + x0), (b * (p.x - x0) - a*(p.y - y0) + y0)); + } + + boolean left(Vector2 a, Vector2 b, Vector2 c){ + return ((b.x - a.x)*(c.y - a.y) - (b.y - a.y)*(c.x - a.x)) > 0; + } +} diff --git a/core/src/io/anuke/mindustry/type/Loadout.java b/core/src/io/anuke/mindustry/type/Loadout.java index b6a86bcb88..05339c3d1b 100644 --- a/core/src/io/anuke/mindustry/type/Loadout.java +++ b/core/src/io/anuke/mindustry/type/Loadout.java @@ -1,14 +1,12 @@ package io.anuke.mindustry.type; -import io.anuke.arc.collection.Array; -import io.anuke.arc.collection.IntMap; -import io.anuke.mindustry.content.Blocks; -import io.anuke.mindustry.game.Content; +import io.anuke.arc.collection.*; +import io.anuke.mindustry.content.*; +import io.anuke.mindustry.game.*; import io.anuke.mindustry.world.*; -import io.anuke.mindustry.world.blocks.storage.CoreBlock; +import io.anuke.mindustry.world.blocks.storage.*; -import static io.anuke.mindustry.Vars.defaultTeam; -import static io.anuke.mindustry.Vars.world; +import static io.anuke.mindustry.Vars.*; public class Loadout extends Content{ private final Array outArray = new Array<>(); @@ -70,6 +68,8 @@ public class Loadout extends Content{ int rx = Pos.x(entry.key); int ry = Pos.y(entry.key); Tile tile = world.tile(x + rx, y + ry); + if(tile == null) continue; + world.setBlock(tile, entry.value.block, defaultTeam); tile.rotation((byte)entry.value.rotation); if(entry.value.ore != null){