Experimental core-capture PvP map / Editor filter fixes
This commit is contained in:
@@ -29,9 +29,9 @@ import static mindustry.Vars.*;
|
||||
|
||||
public class Maps{
|
||||
/** List of all built-in maps. Filenames only. */
|
||||
private static String[] defaultMapNames = {"maze", "fortress", "labyrinth", "islands", "tendrils", "caldera", "wasteland", "shattered", "fork", "triad", "mudFlats", "moltenLake", "archipelago", "debrisField", "veins", "glacier"};
|
||||
private static String[] defaultMapNames = {"maze", "fortress", "labyrinth", "islands", "tendrils", "caldera", "wasteland", "shattered", "fork", "triad", "mudFlats", "moltenLake", "archipelago", "debrisField", "veins", "glacier", "passage"};
|
||||
/** Maps tagged as PvP */
|
||||
static final String[] pvpMaps = {"veins", "glacier"};
|
||||
static final String[] pvpMaps = {"veins", "glacier", "passage"};
|
||||
/** All maps stored in an ordered array. */
|
||||
private Seq<Map> maps = new Seq<>();
|
||||
/** Serializer for meta. */
|
||||
|
||||
@@ -7,12 +7,14 @@ import mindustry.world.*;
|
||||
import static mindustry.maps.filters.FilterOption.*;
|
||||
|
||||
public class ClearFilter extends GenerateFilter{
|
||||
protected Block block = Blocks.air;
|
||||
protected Block target = Blocks.stone;
|
||||
protected Block replace = Blocks.air;
|
||||
|
||||
@Override
|
||||
public FilterOption[] options(){
|
||||
return new BlockOption[]{
|
||||
new BlockOption("block", () -> block, b -> block = b, b -> oresOnly.get(b) || wallsOnly.get(b))
|
||||
new BlockOption("target", () -> target, b -> target = b, anyOptional),
|
||||
new BlockOption("replacement", () -> replace, b -> replace = b, anyOptional)
|
||||
};
|
||||
}
|
||||
|
||||
@@ -24,12 +26,21 @@ public class ClearFilter extends GenerateFilter{
|
||||
@Override
|
||||
public void apply(GenerateInput in){
|
||||
|
||||
if(in.block == block){
|
||||
in.block = Blocks.air;
|
||||
}
|
||||
|
||||
if(in.overlay == block){
|
||||
in.overlay = Blocks.air;
|
||||
if(in.block == target || in.floor == target || (target.isOverlay() && in.overlay == target)){
|
||||
//special case: when air is the result, replace only the overlay or wall
|
||||
if(replace == Blocks.air){
|
||||
if(in.overlay == target){
|
||||
in.overlay = Blocks.air;
|
||||
}else{
|
||||
in.block = Blocks.air;
|
||||
}
|
||||
}else if(replace.isOverlay()){ //replace the best match based on type
|
||||
in.overlay = replace;
|
||||
}else if(replace.isFloor()){
|
||||
in.floor = replace;
|
||||
}else{
|
||||
in.block = replace;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user