Fixed core selection in preset sectors

This commit is contained in:
Anuken
2020-05-18 15:38:56 -04:00
parent a12ff624e5
commit 530ff9761b
13 changed files with 57 additions and 92 deletions

View File

@@ -330,7 +330,7 @@ public class Maps{
}else{
try{
return JsonIO.read(Array.class, str);
}catch(Exception e){
}catch(Throwable e){
e.printStackTrace();
return readFilters("");
}

View File

@@ -2,11 +2,10 @@ package mindustry.maps.filters;
import arc.struct.*;
import arc.util.*;
import mindustry.maps.filters.FilterOption.*;
import mindustry.world.*;
import mindustry.world.blocks.storage.*;
import static mindustry.Vars.*;
import static mindustry.Vars.state;
/** Selects X spawns from the core spawn pool.*/
public class CoreSpawnFilter extends GenerateFilter{
@@ -15,7 +14,8 @@ public class CoreSpawnFilter extends GenerateFilter{
@Override
public FilterOption[] options(){
return Structs.arr(
new SliderOption("amount", () -> amount, f -> amount = (int)f, 1, 10).display()
//disabled until necessary
// SliderOption("amount", () -> amount, f -> amount = (int)f, 1, 10).display()
);
}
@@ -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.team() == state.rules.defaultTeam && tile.block() instanceof CoreBlock){
if(tile.team() == state.rules.defaultTeam && tile.block() instanceof CoreBlock && tile.isCenter()){
spawns.add(tile.pos());
}
}

View File

@@ -24,8 +24,9 @@ public class FileMapGenerator implements WorldGenerator{
public void generate(Tiles tiles){
if(map == null) throw new RuntimeException("Generator has null map, cannot be used.");
SaveIO.load(map.file);
world.beginMapLoad();
world.setGenerating(false);
SaveIO.load(map.file, world.filterContext(map));
world.setGenerating(true);
tiles = world.tiles;
@@ -52,14 +53,14 @@ public class FileMapGenerator implements WorldGenerator{
});
}
if(tile.block() instanceof CoreBlock && tile.team() == state.rules.defaultTeam && !anyCores){
if(tile.isCenter() && tile.block() instanceof CoreBlock && tile.team() == state.rules.defaultTeam && !anyCores){
//TODO PLACE THE (CORRECT) LOADOUT
Schematics.placeLoadout(Loadouts.basicShard, tile.x, tile.y);
anyCores = true;
}
//add random decoration
if(Mathf.chance(0.01) && !tile.floor().isLiquid && tile.block() == Blocks.air){
if(Mathf.chance(0.015) && !tile.floor().isLiquid && tile.block() == Blocks.air){
tile.setBlock(tile.floor().decoration);
}
}