Fixed spawn/core select filters
@@ -373,6 +373,8 @@ 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 = Spawn Select
|
||||||
|
filter.corespawn = Core Select
|
||||||
filter.median = Median
|
filter.median = Median
|
||||||
filter.oremedian = Ore Median
|
filter.oremedian = Ore Median
|
||||||
filter.blend = Blend
|
filter.blend = Blend
|
||||||
@@ -392,6 +394,7 @@ filter.option.circle-scale = Circle Scale
|
|||||||
filter.option.octaves = Octaves
|
filter.option.octaves = Octaves
|
||||||
filter.option.falloff = Falloff
|
filter.option.falloff = Falloff
|
||||||
filter.option.angle = Angle
|
filter.option.angle = Angle
|
||||||
|
filter.option.amount = Amount
|
||||||
filter.option.block = Block
|
filter.option.block = Block
|
||||||
filter.option.floor = Floor
|
filter.option.floor = Floor
|
||||||
filter.option.flooronto = Target Floor
|
filter.option.flooronto = Target Floor
|
||||||
@@ -795,6 +798,7 @@ liquid.temperature = [lightgray]Temperature: {0}
|
|||||||
|
|
||||||
block.sand-boulder.name = Sand Boulder
|
block.sand-boulder.name = Sand Boulder
|
||||||
block.grass.name = Grass
|
block.grass.name = Grass
|
||||||
|
block.slag.name = Slag
|
||||||
block.salt.name = Salt
|
block.salt.name = Salt
|
||||||
block.saltrocks.name = Salt Rocks
|
block.saltrocks.name = Salt Rocks
|
||||||
block.pebbles.name = Pebbles
|
block.pebbles.name = Pebbles
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 739 B After Width: | Height: | Size: 743 B |
|
Before Width: | Height: | Size: 720 KiB After Width: | Height: | Size: 719 KiB |
|
Before Width: | Height: | Size: 260 KiB After Width: | Height: | Size: 260 KiB |
|
Before Width: | Height: | Size: 888 KiB After Width: | Height: | Size: 888 KiB |
@@ -30,7 +30,7 @@ public class MapGenerateDialog extends FloatingDialog{
|
|||||||
private final Prov<GenerateFilter>[] filterTypes = new Prov[]{
|
private final Prov<GenerateFilter>[] filterTypes = new Prov[]{
|
||||||
NoiseFilter::new, ScatterFilter::new, TerrainFilter::new, DistortFilter::new,
|
NoiseFilter::new, ScatterFilter::new, TerrainFilter::new, DistortFilter::new,
|
||||||
RiverNoiseFilter::new, OreFilter::new, OreMedianFilter::new, MedianFilter::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 MapEditor editor;
|
||||||
private final boolean applied;
|
private final boolean applied;
|
||||||
@@ -292,7 +292,7 @@ public class MapGenerateDialog extends FloatingDialog{
|
|||||||
for(Prov<GenerateFilter> gen : filterTypes){
|
for(Prov<GenerateFilter> gen : filterTypes){
|
||||||
GenerateFilter filter = gen.get();
|
GenerateFilter filter = gen.get();
|
||||||
|
|
||||||
if(!applied && filter.isBuffered()) continue;
|
if((!applied && filter.isBuffered()) || (filter.isPost() && applied)) continue;
|
||||||
|
|
||||||
selection.cont.addButton(filter.name(), () -> {
|
selection.cont.addButton(filter.name(), () -> {
|
||||||
filters.add(filter);
|
filters.add(filter);
|
||||||
|
|||||||
@@ -1,24 +1,20 @@
|
|||||||
package io.anuke.mindustry.graphics;
|
package io.anuke.mindustry.graphics;
|
||||||
|
|
||||||
import io.anuke.arc.Core;
|
import io.anuke.arc.*;
|
||||||
import io.anuke.arc.collection.Array;
|
import io.anuke.arc.collection.*;
|
||||||
import io.anuke.arc.func.Floatc2;
|
import io.anuke.arc.func.*;
|
||||||
import io.anuke.arc.graphics.Camera;
|
import io.anuke.arc.graphics.*;
|
||||||
import io.anuke.arc.graphics.Color;
|
|
||||||
import io.anuke.arc.graphics.g2d.*;
|
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.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.*;
|
||||||
import io.anuke.arc.util.noise.RidgedPerlin;
|
import io.anuke.arc.util.noise.*;
|
||||||
import io.anuke.arc.util.noise.Simplex;
|
import io.anuke.mindustry.content.*;
|
||||||
import io.anuke.mindustry.content.Blocks;
|
import io.anuke.mindustry.type.*;
|
||||||
import io.anuke.mindustry.content.UnitTypes;
|
import io.anuke.mindustry.ui.*;
|
||||||
import io.anuke.mindustry.type.UnitType;
|
|
||||||
import io.anuke.mindustry.ui.Cicon;
|
|
||||||
import io.anuke.mindustry.world.*;
|
import io.anuke.mindustry.world.*;
|
||||||
import io.anuke.mindustry.world.blocks.Floor;
|
import io.anuke.mindustry.world.blocks.*;
|
||||||
import io.anuke.mindustry.world.blocks.OreBlock;
|
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
|
|
||||||
@@ -158,7 +154,7 @@ public class MenuRenderer implements Disposable{
|
|||||||
tiles.set(x, y, (tile = new CachedTile()));
|
tiles.set(x, y, (tile = new CachedTile()));
|
||||||
tile.x = (short)x;
|
tile.x = (short)x;
|
||||||
tile.y = (short)y;
|
tile.y = (short)y;
|
||||||
tile.setFloor((Floor) floor);
|
tile.setFloor(floor.asFloor());
|
||||||
tile.setBlock(wall);
|
tile.setBlock(wall);
|
||||||
tile.setOverlay(ore);
|
tile.setOverlay(ore);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ package io.anuke.mindustry.maps.filters;
|
|||||||
|
|
||||||
import io.anuke.arc.collection.*;
|
import io.anuke.arc.collection.*;
|
||||||
import io.anuke.arc.util.*;
|
import io.anuke.arc.util.*;
|
||||||
import io.anuke.mindustry.content.*;
|
|
||||||
import io.anuke.mindustry.maps.filters.FilterOption.*;
|
import io.anuke.mindustry.maps.filters.FilterOption.*;
|
||||||
import io.anuke.mindustry.world.*;
|
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.*/
|
/** Selects X spawns from the core spawn pool.*/
|
||||||
public class CoreSpawnFilter extends GenerateFilter{
|
public class CoreSpawnFilter extends GenerateFilter{
|
||||||
@@ -23,7 +23,7 @@ public class CoreSpawnFilter extends GenerateFilter{
|
|||||||
public void apply(Tiles tiles, GenerateInput in){
|
public void apply(Tiles tiles, GenerateInput in){
|
||||||
IntArray spawns = new IntArray();
|
IntArray spawns = new IntArray();
|
||||||
for(Tile tile : tiles){
|
for(Tile tile : tiles){
|
||||||
if(tile.getTeam() == defaultTeam){
|
if(tile.getTeam() == defaultTeam && tile.block() instanceof CoreBlock){
|
||||||
spawns.add(tile.pos());
|
spawns.add(tile.pos());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@ public class CoreSpawnFilter extends GenerateFilter{
|
|||||||
int used = Math.min(spawns.size, amount);
|
int used = Math.min(spawns.size, amount);
|
||||||
for(int i = used; i < spawns.size; i++){
|
for(int i = used; i < spawns.size; i++){
|
||||||
Tile tile = tiles.getp(spawns.get(i));
|
Tile tile = tiles.getp(spawns.get(i));
|
||||||
tile.setBlock(Blocks.air);
|
world.removeBlock(tile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import io.anuke.arc.math.*;
|
|||||||
import io.anuke.arc.scene.ui.*;
|
import io.anuke.arc.scene.ui.*;
|
||||||
import io.anuke.arc.util.*;
|
import io.anuke.arc.util.*;
|
||||||
import io.anuke.arc.util.noise.*;
|
import io.anuke.arc.util.noise.*;
|
||||||
|
import io.anuke.mindustry.content.*;
|
||||||
import io.anuke.mindustry.world.*;
|
import io.anuke.mindustry.world.*;
|
||||||
|
|
||||||
public abstract class GenerateFilter{
|
public abstract class GenerateFilter{
|
||||||
@@ -19,7 +20,7 @@ public abstract class GenerateFilter{
|
|||||||
apply();
|
apply();
|
||||||
|
|
||||||
tile.setFloor(in.floor.asFloor());
|
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()){
|
if(!tile.block().synthetic() && !in.block.synthetic()){
|
||||||
tile.setBlock(in.block);
|
tile.setBlock(in.block);
|
||||||
|
|||||||