From 666e3e51a3e3d3987cd65037f4db0639e9b0be3c Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 28 Jul 2019 10:53:26 -0400 Subject: [PATCH] Bugfixes --- core/assets/maps/frozenForest.msav | Bin 9707 -> 9743 bytes core/src/io/anuke/mindustry/Vars.java | 2 - .../io/anuke/mindustry/content/Blocks.java | 4 +- .../src/io/anuke/mindustry/content/Items.java | 2 +- core/src/io/anuke/mindustry/core/UI.java | 1 + core/src/io/anuke/mindustry/core/World.java | 4 +- .../mindustry/editor/MapGenerateDialog.java | 24 +++++++++-- .../mindustry/maps/filters/BlendFilter.java | 14 +++---- .../mindustry/maps/filters/DistortFilter.java | 16 ++++---- .../maps/filters/GenerateFilter.java | 5 +-- .../mindustry/maps/filters/MedianFilter.java | 14 +++---- .../mindustry/maps/filters/MirrorFilter.java | 38 ++++++++++-------- .../mindustry/ui/dialogs/ZoneInfoDialog.java | 4 +- 13 files changed, 70 insertions(+), 58 deletions(-) diff --git a/core/assets/maps/frozenForest.msav b/core/assets/maps/frozenForest.msav index b1dcac3001b213ad3f49a5a18c29d7cccc3ba9a1..8e6ab8fdc96a458a6cfeb2f755624cdc6c06e826 100644 GIT binary patch delta 9603 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 delta 9562 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 gtile.set(tiles[x][y])); + input.begin(filter, width(), height(), (x, y) -> tiles[x][y]); //actually apply the filter for(int x = 0; x < width(); x++){ diff --git a/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java b/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java index a78d342366..545cc4004e 100644 --- a/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java +++ b/core/src/io/anuke/mindustry/editor/MapGenerateDialog.java @@ -48,6 +48,13 @@ public class MapGenerateDialog extends FloatingDialog{ private GenTile[][] buffer1, buffer2; private Consumer> applier; + private CachedTile ctile = new CachedTile(){ + //nothing. + @Override + protected void changed(){ + + } + }; /** @param applied whether or not to use the applied in-game mode. */ public MapGenerateDialog(MapEditor editor, boolean applied){ @@ -84,7 +91,7 @@ public class MapGenerateDialog extends FloatingDialog{ hidden(this::apply); } - onResize(() -> rebuildFilters()); + onResize(this::rebuildFilters); } public void show(Array filters, Consumer> applier){ @@ -109,7 +116,7 @@ public class MapGenerateDialog extends FloatingDialog{ } for(GenerateFilter filter : filters){ - input.begin(filter, editor.width(), editor.height(), (x, y) -> dset(editor.tile(x, y))); + input.begin(filter, editor.width(), editor.height(), editor::tile); //write to buffer for(int x = 0; x < editor.width(); x++){ for(int y = 0; y < editor.height(); y++){ @@ -363,7 +370,7 @@ public class MapGenerateDialog extends FloatingDialog{ } for(GenerateFilter filter : copy){ - input.begin(filter, editor.width(), editor.height(), (x, y) -> buffer1[Mathf.clamp(x / scaling, 0, pixmap.getWidth()-1)][Mathf.clamp(y / scaling, 0, pixmap.getHeight()-1)]); + input.begin(filter, editor.width(), editor.height(), (x, y) -> buffer1[Mathf.clamp(x / scaling, 0, pixmap.getWidth()-1)][Mathf.clamp(y / scaling, 0, pixmap.getHeight()-1)].tile()); //read from buffer1 and write to buffer2 for(int px = 0; px < pixmap.getWidth(); px++){ for(int py = 0; py < pixmap.getHeight(); py++){ @@ -411,7 +418,7 @@ public class MapGenerateDialog extends FloatingDialog{ }); } - public static class GenTile{ + private class GenTile{ public byte team, rotation; public short block, floor, ore; @@ -435,5 +442,14 @@ public class MapGenerateDialog extends FloatingDialog{ set(other.floor(), other.block(), other.overlay(), other.getTeam(), other.rotation()); return this; } + + Tile tile(){ + ctile.setFloor((Floor)content.block(floor)); + ctile.setBlock(content.block(block)); + ctile.setOverlay(content.block(ore)); + ctile.rotation(rotation); + ctile.setTeam(Team.all[team]); + return ctile; + } } } diff --git a/core/src/io/anuke/mindustry/maps/filters/BlendFilter.java b/core/src/io/anuke/mindustry/maps/filters/BlendFilter.java index cbb62f46eb..f1f16e7800 100644 --- a/core/src/io/anuke/mindustry/maps/filters/BlendFilter.java +++ b/core/src/io/anuke/mindustry/maps/filters/BlendFilter.java @@ -1,11 +1,9 @@ package io.anuke.mindustry.maps.filters; -import io.anuke.arc.math.Mathf; -import io.anuke.mindustry.content.Blocks; -import io.anuke.mindustry.editor.MapGenerateDialog.*; -import io.anuke.mindustry.maps.filters.FilterOption.BlockOption; -import io.anuke.mindustry.maps.filters.FilterOption.SliderOption; -import io.anuke.mindustry.world.Block; +import io.anuke.arc.math.*; +import io.anuke.mindustry.content.*; +import io.anuke.mindustry.maps.filters.FilterOption.*; +import io.anuke.mindustry.world.*; import static io.anuke.mindustry.maps.filters.FilterOption.*; @@ -34,9 +32,9 @@ public class BlendFilter extends GenerateFilter{ for(int x = -rad; x <= rad; x++){ for(int y = -rad; y <= rad; y++){ if(Mathf.dst2(x, y) > rad*rad) continue; - GenTile tile = in.tile(in.x + x, in.y + y); + Tile tile = in.tile(in.x + x, in.y + y); - if(tile.floor == block.id || tile.block == block.id || tile.ore == block.id){ + if(tile.floor() == block || tile.block() == block || tile.overlay() == block){ found = true; break outer; } diff --git a/core/src/io/anuke/mindustry/maps/filters/DistortFilter.java b/core/src/io/anuke/mindustry/maps/filters/DistortFilter.java index a2aa5f853c..4da9afaefb 100644 --- a/core/src/io/anuke/mindustry/maps/filters/DistortFilter.java +++ b/core/src/io/anuke/mindustry/maps/filters/DistortFilter.java @@ -1,10 +1,8 @@ package io.anuke.mindustry.maps.filters; -import io.anuke.mindustry.editor.MapGenerateDialog.GenTile; -import io.anuke.mindustry.maps.filters.FilterOption.SliderOption; -import io.anuke.mindustry.world.blocks.Floor; - -import static io.anuke.mindustry.Vars.content; +import io.anuke.mindustry.maps.filters.FilterOption.*; +import io.anuke.mindustry.world.*; +import io.anuke.mindustry.world.blocks.*; public class DistortFilter extends GenerateFilter{ float scl = 40, mag = 5; @@ -19,10 +17,10 @@ public class DistortFilter extends GenerateFilter{ @Override public void apply(){ - GenTile tile = in.tile(in.x + noise(in.x, in.y, scl, mag) - mag / 2f, in.y + noise(in.x, in.y + o, scl, mag) - mag / 2f); + Tile tile = in.tile(in.x + noise(in.x, in.y, scl, mag) - mag / 2f, in.y + noise(in.x, in.y + o, scl, mag) - mag / 2f); - in.floor = content.block(tile.floor); - if(!content.block(tile.block).synthetic() && !in.block.synthetic()) in.block = content.block(tile.block); - if(!((Floor)in.floor).isLiquid) in.ore = content.block(tile.ore); + in.floor = tile.floor(); + if(!tile.block().synthetic() && !in.block.synthetic()) in.block = tile.block(); + if(!((Floor)in.floor).isLiquid) in.ore = tile.overlay(); } } diff --git a/core/src/io/anuke/mindustry/maps/filters/GenerateFilter.java b/core/src/io/anuke/mindustry/maps/filters/GenerateFilter.java index 007f2c1dbb..2ab84d2864 100644 --- a/core/src/io/anuke/mindustry/maps/filters/GenerateFilter.java +++ b/core/src/io/anuke/mindustry/maps/filters/GenerateFilter.java @@ -6,7 +6,6 @@ import io.anuke.arc.scene.ui.*; import io.anuke.arc.util.*; import io.anuke.arc.util.noise.*; import io.anuke.mindustry.content.*; -import io.anuke.mindustry.editor.MapGenerateDialog.*; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.*; @@ -95,12 +94,12 @@ public abstract class GenerateFilter{ pnoise.setSeed((int)(filter.seed + 1)); } - GenTile tile(float x, float y){ + Tile tile(float x, float y){ return buffer.get(Mathf.clamp((int)x, 0, width - 1), Mathf.clamp((int)y, 0, height - 1)); } public interface TileProvider{ - GenTile get(int x, int y); + Tile get(int x, int y); } } } diff --git a/core/src/io/anuke/mindustry/maps/filters/MedianFilter.java b/core/src/io/anuke/mindustry/maps/filters/MedianFilter.java index 0ebba247e3..9cc4606d20 100644 --- a/core/src/io/anuke/mindustry/maps/filters/MedianFilter.java +++ b/core/src/io/anuke/mindustry/maps/filters/MedianFilter.java @@ -1,9 +1,9 @@ package io.anuke.mindustry.maps.filters; -import io.anuke.arc.collection.IntArray; -import io.anuke.arc.math.Mathf; -import io.anuke.mindustry.editor.MapGenerateDialog.GenTile; -import io.anuke.mindustry.maps.filters.FilterOption.SliderOption; +import io.anuke.arc.collection.*; +import io.anuke.arc.math.*; +import io.anuke.mindustry.maps.filters.FilterOption.*; +import io.anuke.mindustry.world.*; import static io.anuke.mindustry.Vars.content; @@ -29,9 +29,9 @@ public class MedianFilter extends GenerateFilter{ for(int y = -rad; y <= rad; y++){ if(Mathf.dst2(x, y) > rad*rad) continue; - GenTile tile = in.tile(in.x + x, in.y + y); - blocks.add(tile.block); - floors.add(tile.floor); + Tile tile = in.tile(in.x + x, in.y + y); + blocks.add(tile.block().id); + floors.add(tile.floor().id); } } diff --git a/core/src/io/anuke/mindustry/maps/filters/MirrorFilter.java b/core/src/io/anuke/mindustry/maps/filters/MirrorFilter.java index 9397f9bf03..866dc791f1 100644 --- a/core/src/io/anuke/mindustry/maps/filters/MirrorFilter.java +++ b/core/src/io/anuke/mindustry/maps/filters/MirrorFilter.java @@ -6,19 +6,17 @@ 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.maps.filters.FilterOption.*; import io.anuke.mindustry.graphics.*; - -import static io.anuke.mindustry.Vars.content; +import io.anuke.mindustry.maps.filters.FilterOption.*; +import io.anuke.mindustry.world.*; public class MirrorFilter extends GenerateFilter{ private final Vector2 v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2(); - float angle = 45; + int angle = 45; { - options(new SliderOption("angle", () -> angle, f -> angle = f, 0, 360, 45)); + options(new SliderOption("angle", () -> angle, f -> angle = (int)f, 0, 360, 45)); } @Override @@ -33,10 +31,10 @@ public class MirrorFilter extends GenerateFilter{ 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); + Tile tile = in.tile(v3.x, v3.y); + in.floor = tile.floor(); + in.block = tile.block(); + in.ore = tile.overlay(); } } @@ -45,8 +43,8 @@ public class MirrorFilter extends GenerateFilter{ 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 imageWidth = Math.max(vsize.x, vsize.y); + float imageHeight = Math.max(vsize.y, vsize.x); float size = Math.max(image.getWidth() *2, image.getHeight()*2); Consumer clamper = v -> @@ -65,13 +63,19 @@ public class MirrorFilter extends GenerateFilter{ } void mirror(Vector2 p, float x0, float y0, float x1, float y1){ - float dx = x1 - x0; - float dy = y1 - y0; + //special case: uneven map mirrored at 45 degree angle + if(in.width != in.height && angle % 90 != 0){ + p.x = (p.x - in.width/2f) * -1 + in.width/2f; + p.y = (p.y - in.height/2f) * -1 + in.height/2f; + }else{ + 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); + 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)); + 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){ diff --git a/core/src/io/anuke/mindustry/ui/dialogs/ZoneInfoDialog.java b/core/src/io/anuke/mindustry/ui/dialogs/ZoneInfoDialog.java index 0d0d653184..9f89cd2406 100644 --- a/core/src/io/anuke/mindustry/ui/dialogs/ZoneInfoDialog.java +++ b/core/src/io/anuke/mindustry/ui/dialogs/ZoneInfoDialog.java @@ -103,8 +103,8 @@ public class ZoneInfoDialog extends FloatingDialog{ cont.addImage("whiteui").color(Pal.accent).height(3).pad(6).growX(); cont.row(); cont.table(desc -> { - desc.left().defaults().left().width(400f); - desc.add(zone.description).wrap().padBottom(8f); + desc.left().defaults().left().width(500f); + desc.add(zone.description).wrap().pad(2).padBottom(8f); desc.row(); desc.table(t -> {