From 184e52b4ec68840cba1524992a816df47a468fda Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 5 Nov 2018 21:04:04 -0500 Subject: [PATCH] Removed waterlogged sectors --- core/src/io/anuke/mindustry/maps/Sectors.java | 30 ++++++++++++++----- .../maps/missions/BattleMission.java | 11 +++++-- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/core/src/io/anuke/mindustry/maps/Sectors.java b/core/src/io/anuke/mindustry/maps/Sectors.java index f6a14ec8c8..5ccec1454c 100644 --- a/core/src/io/anuke/mindustry/maps/Sectors.java +++ b/core/src/io/anuke/mindustry/maps/Sectors.java @@ -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 out = Settings.getObject("sector-data", Array.class, Array::new); + Array 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 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){ diff --git a/core/src/io/anuke/mindustry/maps/missions/BattleMission.java b/core/src/io/anuke/mindustry/maps/missions/BattleMission.java index 4a49ae7bf3..4ea34022c6 100644 --- a/core/src/io/anuke/mindustry/maps/missions/BattleMission.java +++ b/core/src/io/anuke/mindustry/maps/missions/BattleMission.java @@ -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 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); }