Editor filter bugfixes
This commit is contained in:
@@ -460,6 +460,7 @@ toolmode.drawteams = Draw Teams
|
|||||||
toolmode.drawteams.description = Draw teams instead of blocks.
|
toolmode.drawteams.description = Draw teams instead of blocks.
|
||||||
|
|
||||||
filters.empty = [lightgray]No filters! Add one with the button below.
|
filters.empty = [lightgray]No filters! Add one with the button below.
|
||||||
|
|
||||||
filter.distort = Distort
|
filter.distort = Distort
|
||||||
filter.noise = Noise
|
filter.noise = Noise
|
||||||
filter.enemyspawn = Enemy Spawn Select
|
filter.enemyspawn = Enemy Spawn Select
|
||||||
@@ -476,6 +477,7 @@ filter.clear = Clear
|
|||||||
filter.option.ignore = Ignore
|
filter.option.ignore = Ignore
|
||||||
filter.scatter = Scatter
|
filter.scatter = Scatter
|
||||||
filter.terrain = Terrain
|
filter.terrain = Terrain
|
||||||
|
|
||||||
filter.option.scale = Scale
|
filter.option.scale = Scale
|
||||||
filter.option.chance = Chance
|
filter.option.chance = Chance
|
||||||
filter.option.mag = Magnitude
|
filter.option.mag = Magnitude
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package mindustry.maps.filters;
|
package mindustry.maps.filters;
|
||||||
|
|
||||||
import arc.math.*;
|
|
||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
@@ -15,9 +14,9 @@ public class BlendFilter extends GenerateFilter{
|
|||||||
@Override
|
@Override
|
||||||
public FilterOption[] options(){
|
public FilterOption[] options(){
|
||||||
return Structs.arr(
|
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("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)
|
new BlockOption("ignore", () -> ignore, b -> ignore = b, floorsOptional)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -34,7 +33,7 @@ public class BlendFilter extends GenerateFilter{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void apply(){
|
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;
|
int rad = (int)radius;
|
||||||
boolean found = false;
|
boolean found = false;
|
||||||
@@ -42,7 +41,7 @@ public class BlendFilter extends GenerateFilter{
|
|||||||
outer:
|
outer:
|
||||||
for(int x = -rad; x <= rad; x++){
|
for(int x = -rad; x <= rad; x++){
|
||||||
for(int y = -rad; y <= rad; y++){
|
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);
|
Tile tile = in.tile(in.x + x, in.y + y);
|
||||||
|
|
||||||
if(tile.floor() == block || tile.block() == block || tile.overlay() == block){
|
if(tile.floor() == block || tile.block() == block || tile.overlay() == block){
|
||||||
@@ -53,7 +52,11 @@ public class BlendFilter extends GenerateFilter{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(found){
|
if(found){
|
||||||
in.floor = floor;
|
if(!floor.isFloor()){
|
||||||
|
in.block = floor;
|
||||||
|
}else{
|
||||||
|
in.floor = floor;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import arc.scene.ui.layout.*;
|
|||||||
import mindustry.*;
|
import mindustry.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.gen.*;
|
import mindustry.gen.*;
|
||||||
import mindustry.ui.*;
|
|
||||||
import mindustry.ui.dialogs.*;
|
import mindustry.ui.dialogs.*;
|
||||||
import mindustry.world.*;
|
import mindustry.world.*;
|
||||||
import mindustry.world.blocks.environment.*;
|
import mindustry.world.blocks.environment.*;
|
||||||
@@ -105,6 +104,7 @@ public abstract class FilterOption{
|
|||||||
if(++i % 10 == 0) dialog.cont.row();
|
if(++i % 10 == 0) dialog.cont.row();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dialog.closeOnBack();
|
||||||
dialog.show();
|
dialog.show();
|
||||||
}).pad(4).margin(12f);
|
}).pad(4).margin(12f);
|
||||||
|
|
||||||
|
|||||||
@@ -75,11 +75,16 @@ public abstract class GenerateFilter{
|
|||||||
/** draw any additional guides */
|
/** draw any additional guides */
|
||||||
public void draw(Image image){}
|
public void draw(Image image){}
|
||||||
|
|
||||||
/** localized display name */
|
public String simpleName(){
|
||||||
public String name(){
|
|
||||||
Class c = getClass();
|
Class c = getClass();
|
||||||
if(c.isAnonymousClass()) c = c.getSuperclass();
|
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(){
|
public char icon(){
|
||||||
|
|||||||
@@ -10,14 +10,15 @@ import mindustry.world.*;
|
|||||||
import static mindustry.Vars.*;
|
import static mindustry.Vars.*;
|
||||||
|
|
||||||
public class MedianFilter extends GenerateFilter{
|
public class MedianFilter extends GenerateFilter{
|
||||||
|
private static final IntSeq blocks = new IntSeq(), floors = new IntSeq();
|
||||||
|
|
||||||
float radius = 2;
|
float radius = 2;
|
||||||
float percentile = 0.5f;
|
float percentile = 0.5f;
|
||||||
IntSeq blocks = new IntSeq(), floors = new IntSeq();
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FilterOption[] options(){
|
public FilterOption[] options(){
|
||||||
return Structs.arr(
|
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)
|
new SliderOption("percentile", () -> percentile, f -> percentile = f, 0f, 1f)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -331,7 +331,7 @@ public class Generators{
|
|||||||
average.mul(1f / asum);
|
average.mul(1f / asum);
|
||||||
|
|
||||||
if(block instanceof Floor){
|
if(block instanceof Floor){
|
||||||
average.mul(0.8f);
|
average.mul(0.77f);
|
||||||
}else{
|
}else{
|
||||||
average.mul(1.1f);
|
average.mul(1.1f);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user