Fixed spawn/core select filters

This commit is contained in:
Anuken
2019-11-16 13:04:04 -05:00
parent 94cf054312
commit aa6229be4b
10 changed files with 1979 additions and 1908 deletions

View File

@@ -30,7 +30,7 @@ public class MapGenerateDialog extends FloatingDialog{
private final Prov<GenerateFilter>[] filterTypes = new Prov[]{
NoiseFilter::new, ScatterFilter::new, TerrainFilter::new, DistortFilter::new,
RiverNoiseFilter::new, OreFilter::new, OreMedianFilter::new, MedianFilter::new,
BlendFilter::new, MirrorFilter::new, ClearFilter::new
BlendFilter::new, MirrorFilter::new, ClearFilter::new, CoreSpawnFilter::new, EnemySpawnFilter::new
};
private final MapEditor editor;
private final boolean applied;
@@ -292,7 +292,7 @@ public class MapGenerateDialog extends FloatingDialog{
for(Prov<GenerateFilter> gen : filterTypes){
GenerateFilter filter = gen.get();
if(!applied && filter.isBuffered()) continue;
if((!applied && filter.isBuffered()) || (filter.isPost() && applied)) continue;
selection.cont.addButton(filter.name(), () -> {
filters.add(filter);

View File

@@ -1,24 +1,20 @@
package io.anuke.mindustry.graphics;
import io.anuke.arc.Core;
import io.anuke.arc.collection.Array;
import io.anuke.arc.func.Floatc2;
import io.anuke.arc.graphics.Camera;
import io.anuke.arc.graphics.Color;
import io.anuke.arc.*;
import io.anuke.arc.collection.*;
import io.anuke.arc.func.*;
import io.anuke.arc.graphics.*;
import io.anuke.arc.graphics.g2d.*;
import io.anuke.arc.graphics.glutils.FrameBuffer;
import io.anuke.arc.graphics.glutils.*;
import io.anuke.arc.math.*;
import io.anuke.arc.scene.ui.layout.Scl;
import io.anuke.arc.scene.ui.layout.*;
import io.anuke.arc.util.*;
import io.anuke.arc.util.noise.RidgedPerlin;
import io.anuke.arc.util.noise.Simplex;
import io.anuke.mindustry.content.Blocks;
import io.anuke.mindustry.content.UnitTypes;
import io.anuke.mindustry.type.UnitType;
import io.anuke.mindustry.ui.Cicon;
import io.anuke.arc.util.noise.*;
import io.anuke.mindustry.content.*;
import io.anuke.mindustry.type.*;
import io.anuke.mindustry.ui.*;
import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.mindustry.world.blocks.OreBlock;
import io.anuke.mindustry.world.blocks.*;
import static io.anuke.mindustry.Vars.*;
@@ -158,7 +154,7 @@ public class MenuRenderer implements Disposable{
tiles.set(x, y, (tile = new CachedTile()));
tile.x = (short)x;
tile.y = (short)y;
tile.setFloor((Floor) floor);
tile.setFloor(floor.asFloor());
tile.setBlock(wall);
tile.setOverlay(ore);
}

View File

@@ -2,11 +2,11 @@ package io.anuke.mindustry.maps.filters;
import io.anuke.arc.collection.*;
import io.anuke.arc.util.*;
import io.anuke.mindustry.content.*;
import io.anuke.mindustry.maps.filters.FilterOption.*;
import io.anuke.mindustry.world.*;
import io.anuke.mindustry.world.blocks.storage.*;
import static io.anuke.mindustry.Vars.defaultTeam;
import static io.anuke.mindustry.Vars.*;
/** Selects X spawns from the core spawn pool.*/
public class CoreSpawnFilter extends GenerateFilter{
@@ -23,7 +23,7 @@ public class CoreSpawnFilter extends GenerateFilter{
public void apply(Tiles tiles, GenerateInput in){
IntArray spawns = new IntArray();
for(Tile tile : tiles){
if(tile.getTeam() == defaultTeam){
if(tile.getTeam() == defaultTeam && tile.block() instanceof CoreBlock){
spawns.add(tile.pos());
}
}
@@ -33,7 +33,7 @@ public class CoreSpawnFilter extends GenerateFilter{
int used = Math.min(spawns.size, amount);
for(int i = used; i < spawns.size; i++){
Tile tile = tiles.getp(spawns.get(i));
tile.setBlock(Blocks.air);
world.removeBlock(tile);
}
}

View File

@@ -5,6 +5,7 @@ import io.anuke.arc.math.*;
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.world.*;
public abstract class GenerateFilter{
@@ -19,7 +20,7 @@ public abstract class GenerateFilter{
apply();
tile.setFloor(in.floor.asFloor());
tile.setOverlay(in.ore);
tile.setOverlay(in.floor.asFloor().isLiquid ? Blocks.air : in.ore);
if(!tile.block().synthetic() && !in.block.synthetic()){
tile.setBlock(in.block);