Removed waterlogged sectors

This commit is contained in:
Anuken
2018-11-05 21:04:04 -05:00
parent 2a3cc3d88c
commit 184e52b4ec
2 changed files with 31 additions and 10 deletions

View File

@@ -6,6 +6,7 @@ import com.badlogic.gdx.graphics.Pixmap.Format;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.math.GridPoint2;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Array.ArrayIterable;
import com.badlogic.gdx.utils.async.AsyncExecutor;
import io.anuke.mindustry.content.Items;
import io.anuke.mindustry.core.GameState.State;
@@ -13,6 +14,7 @@ import io.anuke.mindustry.game.Difficulty;
import io.anuke.mindustry.game.Team;
import io.anuke.mindustry.io.SaveIO;
import io.anuke.mindustry.maps.SectorPresets.SectorPreset;
import io.anuke.mindustry.maps.generation.Generation;
import io.anuke.mindustry.maps.generation.WorldGenerator.GenResult;
import io.anuke.mindustry.maps.missions.BattleMission;
import io.anuke.mindustry.maps.missions.Mission;
@@ -23,6 +25,7 @@ import io.anuke.mindustry.type.ItemStack;
import io.anuke.mindustry.type.Recipe;
import io.anuke.mindustry.type.Recipe.RecipeVisibility;
import io.anuke.mindustry.world.ColorMapper;
import io.anuke.mindustry.world.blocks.Floor;
import io.anuke.mindustry.world.blocks.defense.Wall;
import io.anuke.ucore.core.Settings;
import io.anuke.ucore.util.*;
@@ -156,7 +159,7 @@ public class Sectors{
}
grid.clear();
Array<Sector> out = Settings.getObject("sector-data", Array.class, Array::new);
Array<Sector> out = Settings.getObject("sectors", Array.class, Array::new);
for(Sector sector : out){
@@ -185,7 +188,7 @@ public class Sectors{
}
}
Settings.putObject("sector-data", out);
Settings.putObject("sectors", out);
Settings.save();
}
@@ -225,12 +228,6 @@ public class Sectors{
/**Generates a mission for a sector. This is deterministic and the same for each client.*/
private void generate(Sector sector){
//empty sector
if(Mathf.randomSeed(sector.getSeed() + 213) < 0.2){
return;
}
//TODO check for core on impassable block.
//50% chance to get a wave mission
if(Mathf.randomSeed(sector.getSeed() + 6) < 0.5){
@@ -244,6 +241,23 @@ public class Sectors{
//possibly add another recipe mission
addRecipeMission(sector, 11);
Generation gen = new Generation(sector, null, sectorSize, sectorSize, null);
Array<GridPoint2> points = new Array<>();
for(Mission mission : sector.missions){
points.addAll(mission.getSpawnPoints(gen));
}
GenResult result = new GenResult();
for(GridPoint2 point : new ArrayIterable<>(points)){
world.generator.generateTile(result, sector.x, sector.y, point.x, point.y, true, null, null);
if(((Floor)result.floor).isLiquid || result.wall.solid){
sector.missions.clear();
break;
}
}
}
private void addRecipeMission(Sector sector, int offset){

View File

@@ -1,5 +1,7 @@
package io.anuke.mindustry.maps.missions;
import com.badlogic.gdx.math.GridPoint2;
import com.badlogic.gdx.utils.Array;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.game.GameMode;
import io.anuke.mindustry.game.Team;
@@ -28,6 +30,11 @@ public class BattleMission extends Mission{
return Bundles.get("text.mission.battle");
}
@Override
public Array<GridPoint2> getSpawnPoints(Generation gen){
return Array.with(new GridPoint2(50, 50), new GridPoint2(gen.width - 1 - spacing, gen.height - 1 - spacing));
}
@Override
public void generate(Generation gen){
generateCoreAt(gen, 50, 50, defaultTeam);
@@ -37,8 +44,8 @@ public class BattleMission extends Mission{
}
Tile core = state.teams.get(defaultTeam).cores.first();
int enx = world.width() - 1 - spacing;
int eny = world.height() - 1 - spacing;
int enx = gen.width - 1 - spacing;
int eny = gen.height - 1 - spacing;
new FortressGenerator().generate(gen, Team.red, core.x, core.y, enx, eny);
}