Fixed core selection in preset sectors
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package mindustry.content;
|
||||
|
||||
import mindustry.ctype.*;
|
||||
import mindustry.game.Objectives.*;
|
||||
import mindustry.type.*;
|
||||
|
||||
import static mindustry.content.Items.copper;
|
||||
import static arc.struct.Array.with;
|
||||
import static mindustry.content.Items.*;
|
||||
import static mindustry.content.Planets.starter;
|
||||
import static mindustry.type.ItemStack.list;
|
||||
|
||||
@@ -25,62 +27,8 @@ public class SectorPresets implements ContentList{
|
||||
launchPeriod = 5;
|
||||
}};
|
||||
|
||||
//TODO remove
|
||||
/*
|
||||
desertWastes = new Zone("desertWastes", starter){{
|
||||
startingItems = list(copper, 120);
|
||||
conditionWave = 20;
|
||||
launchPeriod = 10;
|
||||
loadout = Loadouts.advancedShard;
|
||||
resources = with(copper, lead, coal, sand);
|
||||
rules = r -> {
|
||||
r.waves = true;
|
||||
r.waveTimer = true;
|
||||
r.launchWaveMultiplier = 3f;
|
||||
r.waveSpacing = 60 * 50f;
|
||||
r.spawns = with(
|
||||
new SpawnGroup(UnitTypes.crawler){{
|
||||
unitScaling = 3f;
|
||||
}},
|
||||
new SpawnGroup(UnitTypes.dagger){{
|
||||
unitScaling = 4f;
|
||||
begin = 2;
|
||||
spacing = 2;
|
||||
}},
|
||||
new SpawnGroup(UnitTypes.wraith){{
|
||||
unitScaling = 3f;
|
||||
begin = 11;
|
||||
spacing = 3;
|
||||
}},
|
||||
new SpawnGroup(UnitTypes.eruptor){{
|
||||
unitScaling = 3f;
|
||||
begin = 22;
|
||||
unitAmount = 1;
|
||||
spacing = 4;
|
||||
}},
|
||||
new SpawnGroup(UnitTypes.titan){{
|
||||
unitScaling = 3f;
|
||||
begin = 37;
|
||||
unitAmount = 2;
|
||||
spacing = 4;
|
||||
}},
|
||||
new SpawnGroup(UnitTypes.fortress){{
|
||||
unitScaling = 2f;
|
||||
effect = StatusEffects.boss;
|
||||
begin = 41;
|
||||
spacing = 20;
|
||||
}}
|
||||
);
|
||||
};
|
||||
requirements = with(
|
||||
new ZoneWave(groundZero, 20),
|
||||
new Unlock(Blocks.combustionGenerator)
|
||||
);
|
||||
}};*/
|
||||
|
||||
/*
|
||||
saltFlats = new SectorPreset("saltFlats", starter){{
|
||||
startingItems = list(copper, 200, Items.silicon, 200, lead, 200);
|
||||
saltFlats = new SectorPreset("saltFlats", starter, 16){{
|
||||
startingItems = list(copper, 200, silicon, 200, lead, 200);
|
||||
loadout = Loadouts.basicFoundation;
|
||||
conditionWave = 10;
|
||||
launchPeriod = 5;
|
||||
@@ -93,7 +41,7 @@ public class SectorPresets implements ContentList{
|
||||
);
|
||||
}};
|
||||
|
||||
frozenForest = new SectorPreset("frozenForest", starter){{
|
||||
frozenForest = new SectorPreset("frozenForest", starter, 17){{
|
||||
loadout = Loadouts.basicFoundation;
|
||||
startingItems = list(copper, 250);
|
||||
conditionWave = 10;
|
||||
@@ -104,7 +52,7 @@ public class SectorPresets implements ContentList{
|
||||
);
|
||||
}};
|
||||
|
||||
craters = new SectorPreset("craters", starter){{
|
||||
craters = new SectorPreset("craters", starter, 18){{
|
||||
startingItems = list(copper, 100);
|
||||
conditionWave = 10;
|
||||
requirements = with(
|
||||
@@ -114,7 +62,7 @@ public class SectorPresets implements ContentList{
|
||||
);
|
||||
}};
|
||||
|
||||
ruinousShores = new SectorPreset("ruinousShores", starter){{
|
||||
ruinousShores = new SectorPreset("ruinousShores", starter, 19){{
|
||||
loadout = Loadouts.basicFoundation;
|
||||
startingItems = list(copper, 140, lead, 50);
|
||||
conditionWave = 20;
|
||||
@@ -129,7 +77,7 @@ public class SectorPresets implements ContentList{
|
||||
);
|
||||
}};
|
||||
|
||||
stainedMountains = new SectorPreset("stainedMountains", starter){{
|
||||
stainedMountains = new SectorPreset("stainedMountains", starter, 20){{
|
||||
loadout = Loadouts.basicFoundation;
|
||||
startingItems = list(copper, 200, lead, 50);
|
||||
conditionWave = 10;
|
||||
@@ -142,7 +90,7 @@ public class SectorPresets implements ContentList{
|
||||
);
|
||||
}};
|
||||
|
||||
fungalPass = new SectorPreset("fungalPass", starter){{
|
||||
fungalPass = new SectorPreset("fungalPass", starter, 21){{
|
||||
startingItems = list(copper, 250, lead, 250, Items.metaglass, 100, Items.graphite, 100);
|
||||
requirements = with(
|
||||
new ZoneWave(stainedMountains, 15),
|
||||
@@ -153,7 +101,7 @@ public class SectorPresets implements ContentList{
|
||||
);
|
||||
}};
|
||||
|
||||
overgrowth = new SectorPreset("overgrowth", starter){{
|
||||
overgrowth = new SectorPreset("overgrowth", starter, 22){{
|
||||
startingItems = list(copper, 1500, lead, 1000, Items.silicon, 500, Items.metaglass, 250);
|
||||
conditionWave = 12;
|
||||
launchPeriod = 4;
|
||||
@@ -168,7 +116,7 @@ public class SectorPresets implements ContentList{
|
||||
);
|
||||
}};
|
||||
|
||||
tarFields = new SectorPreset("tarFields", starter){{
|
||||
tarFields = new SectorPreset("tarFields", starter, 23){{
|
||||
loadout = Loadouts.basicFoundation;
|
||||
startingItems = list(copper, 250, lead, 100);
|
||||
conditionWave = 15;
|
||||
@@ -181,7 +129,7 @@ public class SectorPresets implements ContentList{
|
||||
);
|
||||
}};
|
||||
|
||||
desolateRift = new SectorPreset("desolateRift", starter){{
|
||||
desolateRift = new SectorPreset("desolateRift", starter, 24){{
|
||||
loadout = Loadouts.basicNucleus;
|
||||
startingItems = list(copper, 1000, lead, 1000, Items.graphite, 250, titanium, 250, Items.silicon, 250);
|
||||
conditionWave = 3;
|
||||
@@ -194,18 +142,7 @@ public class SectorPresets implements ContentList{
|
||||
}};
|
||||
|
||||
|
||||
crags = new Zone("crags", new MapGenerator("crags").dist(2f)){{
|
||||
loadout = Loadouts.basicFoundation;
|
||||
baseLaunchCost = ItemStack.with();
|
||||
startingItems = ItemStack.list(Items.copper, 2000, Items.lead, 2000, Items.graphite, 500, Items.titanium, 500, Items.silicon, 500);
|
||||
conditionWave = 3;
|
||||
launchPeriod = 2;
|
||||
requirements = with(stainedMountains, 40);
|
||||
blockRequirements = new Block[]{Blocks.thermalGenerator};
|
||||
resources = Array.with(Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand};
|
||||
}};
|
||||
|
||||
nuclearComplex = new SectorPreset("nuclearComplex", starter){{
|
||||
nuclearComplex = new SectorPreset("nuclearComplex", starter, 25){{
|
||||
loadout = Loadouts.basicNucleus;
|
||||
startingItems = list(copper, 1250, lead, 1500, Items.silicon, 400, Items.metaglass, 250);
|
||||
conditionWave = 30;
|
||||
@@ -217,6 +154,18 @@ public class SectorPresets implements ContentList{
|
||||
);
|
||||
}};
|
||||
|
||||
/*
|
||||
crags = new Zone("crags", new MapGenerator("crags").dist(2f)){{
|
||||
loadout = Loadouts.basicFoundation;
|
||||
baseLaunchCost = ItemStack.with();
|
||||
startingItems = ItemStack.list(Items.copper, 2000, Items.lead, 2000, Items.graphite, 500, Items.titanium, 500, Items.silicon, 500);
|
||||
conditionWave = 3;
|
||||
launchPeriod = 2;
|
||||
requirements = with(stainedMountains, 40);
|
||||
blockRequirements = new Block[]{Blocks.thermalGenerator};
|
||||
resources = Array.with(Items.copper, Items.scrap, Items.lead, Items.coal, Items.sand};
|
||||
}};
|
||||
|
||||
|
||||
impact0078 = new SectorPreset("impact0078"){{
|
||||
loadout = Loadouts.basicNucleus;
|
||||
|
||||
@@ -240,6 +240,10 @@ public class World{
|
||||
}
|
||||
}
|
||||
|
||||
public Context filterContext(Map map){
|
||||
return new FilterContext(map);
|
||||
}
|
||||
|
||||
public void loadMap(Map map){
|
||||
loadMap(map, new Rules());
|
||||
}
|
||||
@@ -472,6 +476,7 @@ public class World{
|
||||
@Override
|
||||
public void end(){
|
||||
Array<GenerateFilter> filters = map.filters();
|
||||
|
||||
if(!filters.isEmpty()){
|
||||
//input for filter queries
|
||||
GenerateInput input = new GenerateInput();
|
||||
|
||||
@@ -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("");
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ public class Sector{
|
||||
return Vars.state.isGame() && Vars.state.rules.sector == this && !Vars.state.launched && !Vars.state.gameOver;
|
||||
}
|
||||
|
||||
/** @return whether waves are present, e.g. any bases here will be attacked. */
|
||||
/** @return whether waves are present - if true, any bases here will be attacked. */
|
||||
public boolean hasWaves(){
|
||||
return save != null && save.meta.rules.waves;
|
||||
}
|
||||
|
||||
@@ -285,6 +285,8 @@ public class PlanetDialog extends FloatingDialog{
|
||||
float stroke = 0.026f;
|
||||
if(sec.hasBase()){
|
||||
drawSelection(sec, Tmp.c1.set(Team.sharded.color).mul(0.8f).a(selectAlpha), stroke, -0.01f);
|
||||
}else if(sec.preset != null){
|
||||
drawSelection(sec, Tmp.c1.set(Team.derelict.color).mul(0.8f).a(selectAlpha), stroke, -0.02f);
|
||||
}else if(sec.hasEnemyBase()){
|
||||
drawSelection(sec, Tmp.c1.set(Team.crux.color).mul(0.8f).a(selectAlpha), stroke, -0.02f);
|
||||
}
|
||||
|
||||
@@ -49,6 +49,7 @@ public class HudFragment extends Fragment{
|
||||
showToast("New turn: [accent]" + universe.getTurn() + "[]" + (attacked > 0 ? "\n[scarlet]" + Iconc.warning + " " + attacked + " sectors attacked!": ""));
|
||||
});
|
||||
|
||||
//TODO tear this all down
|
||||
//menu at top left
|
||||
parent.fill(cont -> {
|
||||
cont.setName("overlaymarker");
|
||||
@@ -133,6 +134,13 @@ public class HudFragment extends Fragment{
|
||||
cont.row();
|
||||
}
|
||||
|
||||
//TODO BUTTONS FOR VIEWING EXPORTS/IMPORTS/RESEARCH
|
||||
/*
|
||||
cont.table(t -> {
|
||||
|
||||
});
|
||||
cont.row();*/
|
||||
|
||||
cont.update(() -> {
|
||||
if(Core.input.keyTap(Binding.toggle_menus) && !ui.chatfrag.shown() && !Core.scene.hasDialog() && !(Core.scene.getKeyboardFocus() instanceof TextField)){
|
||||
toggleMenus();
|
||||
|
||||
Reference in New Issue
Block a user