From fdca6771fb739d496ed55277c76f0d45b18313dd Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 8 Sep 2020 11:54:23 -0400 Subject: [PATCH] Better attack-mode core spawning limits --- core/assets/maps/fungalPass.msav | Bin 9777 -> 10519 bytes core/src/mindustry/ai/WaveSpawner.java | 32 +++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/core/assets/maps/fungalPass.msav b/core/assets/maps/fungalPass.msav index 2415d16ae47f2e117ec1af39889301fb0a93b034..c154c2e4db35245649d325f401d00a1d8500895e 100644 GIT binary patch literal 10519 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 literal 9777 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 diff --git a/core/src/mindustry/ai/WaveSpawner.java b/core/src/mindustry/ai/WaveSpawner.java index 151ff65418..43882cfbbe 100644 --- a/core/src/mindustry/ai/WaveSpawner.java +++ b/core/src/mindustry/ai/WaveSpawner.java @@ -3,6 +3,7 @@ package mindustry.ai; import arc.*; import arc.func.*; import arc.math.*; +import arc.math.geom.*; import arc.struct.*; import arc.util.*; import mindustry.annotations.Annotations.*; @@ -17,10 +18,11 @@ import mindustry.world.*; import static mindustry.Vars.*; public class WaveSpawner{ - private static final float margin = 40f, coreMargin = tilesize * 3.5f; + private static final float margin = 40f, coreMargin = tilesize * 2f, maxSteps = 30; private Seq spawns = new Seq<>(); private boolean spawning = false; + private boolean any = false; public WaveSpawner(){ Events.on(WorldLoadEvent.class, e -> reset()); @@ -92,7 +94,33 @@ public class WaveSpawner{ Building firstCore = state.teams.playerCores().first(); for(Building core : state.rules.waveTeam.cores()){ Tmp.v1.set(firstCore).sub(core).limit(coreMargin + core.block().size * tilesize /2f * Mathf.sqrt2); - cons.accept(core.x + Tmp.v1.x, core.y + Tmp.v1.y, false); + + boolean valid = false; + int steps = 0; + + //keep moving forward until the max step amount is reached + while(steps++ < maxSteps){ + int tx = world.toTile(core.x + Tmp.v1.x), ty = world.toTile(core.y + Tmp.v1.y); + any = false; + Geometry.circle(tx, ty, world.width(), world.height(), 3, (x, y) -> { + if(world.solid(x, y)){ + any = true; + } + }); + + //nothing is in the way, spawn it + if(!any){ + valid = true; + break; + }else{ + //make the vector longer + Tmp.v1.setLength(Tmp.v1.len() + tilesize*1.1f); + } + } + + if(valid){ + cons.accept(core.x + Tmp.v1.x, core.y + Tmp.v1.y, false); + } } } }