From 7c028ffcb863f16986f04bc9fa2cc511492b6307 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 10 Sep 2021 13:56:12 -0400 Subject: [PATCH] Experimental positional spawn support / WIP map --- core/assets/maps/coastline.msav | Bin 22176 -> 22312 bytes core/assets/maps/navalFortress.msav | Bin 0 -> 20998 bytes core/src/mindustry/ai/WaveSpawner.java | 22 ++++++++++----- core/src/mindustry/content/SectorPresets.java | 3 +- core/src/mindustry/editor/WaveInfoDialog.java | 26 +++++++++++++++++- core/src/mindustry/game/SpawnGroup.java | 10 ++++++- core/src/mindustry/maps/SectorDamage.java | 8 +++++- .../mindustry/maps/filters/BlendFilter.java | 4 +-- 8 files changed, 59 insertions(+), 14 deletions(-) create mode 100644 core/assets/maps/navalFortress.msav diff --git a/core/assets/maps/coastline.msav b/core/assets/maps/coastline.msav index 66c343f4d67d26d64b754e1c7c800f0d80250645..91e8c1db83f3f49b3e4ee4cfa85f61fae5d87762 100644 GIT binary patch literal 22312 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 Sf4I@R;$$Wn_yt&Oglokp8fy(gZUC_DY} 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%0DP8S=Rk) znK*UgynSz$*!*9<;C(oEWtG!^$;H-@n_o<0+Vv>gbAMm)zFN0%M)Mi-vnbkT za?jGNYWXg4`F3_m%j%O=nr0ebm3PnPef|H$?+eoDF;4DoJ7(*!@4s;I@!q39CyUJW z{GmEO{>4d;?4vI-Te@lIzw93W7qRJ9=4A_&wa>QptvOaZ^<_we|GcL~ zCwjt-7YNT=rE0k4glCyTeCjTt>Ju-6&pMnx-t%30%0FIZ>xDJDvghp2S9!MU$*+*< zlIM?G{yjbC-L}1x?Eh&htIxO)F)#mX&qT&kGDlbZO#dhU`}s+Ii9fr&?lp(4c=q}F vz8~NJechZMFLSt;^WW1$w_o0wynpj|^%wtcU3!pj_xr{N^MCeM8A(9^kws!< diff --git a/core/assets/maps/navalFortress.msav b/core/assets/maps/navalFortress.msav new file mode 100644 index 0000000000000000000000000000000000000000..1be5ea6577c324cd323755ed44c5571fe4e1f8ea GIT binary patch literal 20998 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 F2LNbNPYM74 literal 0 HcmV?d00001 diff --git a/core/src/mindustry/ai/WaveSpawner.java b/core/src/mindustry/ai/WaveSpawner.java index 276b86bb26..82d695fc83 100644 --- a/core/src/mindustry/ai/WaveSpawner.java +++ b/core/src/mindustry/ai/WaveSpawner.java @@ -56,7 +56,7 @@ public class WaveSpawner{ public void spawnEnemies(){ spawning = true; - eachGroundSpawn((spawnX, spawnY, doShockwave) -> { + eachGroundSpawn(-1, (spawnX, spawnY, doShockwave) -> { if(doShockwave){ doShockwave(spawnX, spawnY); } @@ -70,7 +70,7 @@ public class WaveSpawner{ if(group.type.flying){ float spread = margin / 1.5f; - eachFlyerSpawn((spawnX, spawnY) -> { + eachFlyerSpawn(group.spawn, (spawnX, spawnY) -> { for(int i = 0; i < spawned; i++){ Unit unit = group.createUnit(state.rules.waveTeam, state.wave - 1); unit.set(spawnX + Mathf.range(spread), spawnY + Mathf.range(spread)); @@ -80,7 +80,7 @@ public class WaveSpawner{ }else{ float spread = tilesize * 2; - eachGroundSpawn((spawnX, spawnY, doShockwave) -> { + eachGroundSpawn(group.spawn, (spawnX, spawnY, doShockwave) -> { for(int i = 0; i < spawned; i++){ Tmp.v1.rnd(spread); @@ -102,12 +102,14 @@ public class WaveSpawner{ } public void eachGroundSpawn(Intc2 cons){ - eachGroundSpawn((x, y, shock) -> cons.get(World.toTile(x), World.toTile(y))); + eachGroundSpawn(-1, (x, y, shock) -> cons.get(World.toTile(x), World.toTile(y))); } - private void eachGroundSpawn(SpawnConsumer cons){ + private void eachGroundSpawn(int filterPos, SpawnConsumer cons){ if(state.hasSpawns()){ for(Tile spawn : spawns){ + if(filterPos != -1 && filterPos != spawn.pos()) continue; + cons.accept(spawn.worldx(), spawn.worldy(), true); } } @@ -115,6 +117,8 @@ public class WaveSpawner{ if(state.rules.attackMode && state.teams.isActive(state.rules.waveTeam) && !state.teams.playerCores().isEmpty()){ Building firstCore = state.teams.playerCores().first(); for(Building core : state.rules.waveTeam.cores()){ + if(filterPos != -1 && filterPos != core.pos()) continue; + Tmp.v1.set(firstCore).sub(core).limit(coreMargin + core.block.size * tilesize /2f * Mathf.sqrt2); boolean valid = false; @@ -147,8 +151,10 @@ public class WaveSpawner{ } } - private void eachFlyerSpawn(Floatc2 cons){ + private void eachFlyerSpawn(int filterPos, Floatc2 cons){ for(Tile tile : spawns){ + if(filterPos != -1 && filterPos != tile.pos()) continue; + float angle = Angles.angle(world.width() / 2f, world.height() / 2f, tile.x, tile.y); float trns = Math.max(world.width(), world.height()) * Mathf.sqrt2 * tilesize; float spawnX = Mathf.clamp(world.width() * tilesize / 2f + Angles.trnsx(angle, trns), -margin, world.width() * tilesize + margin); @@ -158,6 +164,8 @@ public class WaveSpawner{ if(state.rules.attackMode && state.teams.isActive(state.rules.waveTeam)){ for(Building core : state.rules.waveTeam.data().cores){ + if(filterPos != -1 && filterPos != core.pos()) continue; + cons.get(core.x, core.y); } } @@ -171,7 +179,7 @@ public class WaveSpawner{ public int countFlyerSpawns(){ tmpCount = 0; - eachFlyerSpawn((x, y) -> tmpCount ++); + eachFlyerSpawn(-1, (x, y) -> tmpCount ++); return tmpCount; } diff --git a/core/src/mindustry/content/SectorPresets.java b/core/src/mindustry/content/SectorPresets.java index b1f0796a29..7c86779dc9 100644 --- a/core/src/mindustry/content/SectorPresets.java +++ b/core/src/mindustry/content/SectorPresets.java @@ -70,9 +70,8 @@ public class SectorPresets implements ContentList{ difficulty = 5; }}; - //TODO - if(false) navalFortress = new SectorPreset("navalFortress", serpulo, 216){{ + //TODO AI or not? useAI = true; difficulty = 8; }}; diff --git a/core/src/mindustry/editor/WaveInfoDialog.java b/core/src/mindustry/editor/WaveInfoDialog.java index d6588b3279..10c4751bd7 100644 --- a/core/src/mindustry/editor/WaveInfoDialog.java +++ b/core/src/mindustry/editor/WaveInfoDialog.java @@ -3,6 +3,7 @@ package mindustry.editor; import arc.*; import arc.graphics.*; import arc.math.*; +import arc.math.geom.*; import arc.scene.event.*; import arc.scene.style.*; import arc.scene.ui.*; @@ -316,7 +317,30 @@ public class WaveInfoDialog extends BaseDialog{ t.check("@waves.guardian", b -> { group.effect = (b ? StatusEffects.boss : null); buildGroups(); - }).padTop(4).update(b -> b.setChecked(group.effect == StatusEffects.boss)).padBottom(8f); + }).padTop(4).update(b -> b.setChecked(group.effect == StatusEffects.boss)).padBottom(8f).row(); + + //spawn positions are clunky and thus experimental for now + if(experimental){ + t.table(a -> { + a.add("spawn at "); + + a.field(group.spawn == -1 ? "" : Point2.x(group.spawn) + "", TextFieldFilter.digitsOnly, text -> { + if(Strings.canParsePositiveInt(text)){ + group.spawn = Point2.pack(Strings.parseInt(text), Point2.y(group.spawn)); + Log.info(group.spawn); + } + }).width(70f); + + a.add(","); + + a.field(group.spawn == -1 ? "" : Point2.y(group.spawn) + "", TextFieldFilter.digitsOnly, text -> { + if(Strings.canParsePositiveInt(text)){ + group.spawn = Point2.pack(Point2.x(group.spawn), Strings.parseInt(text)); + Log.info(group.spawn); + } + }).width(70f); + }).padBottom(8f).padTop(-8f).row(); + } } }).width(340f).pad(8); diff --git a/core/src/mindustry/game/SpawnGroup.java b/core/src/mindustry/game/SpawnGroup.java index c814f0a925..79bf5164eb 100644 --- a/core/src/mindustry/game/SpawnGroup.java +++ b/core/src/mindustry/game/SpawnGroup.java @@ -36,10 +36,12 @@ public class SpawnGroup implements JsonSerializable, Cloneable{ public float unitScaling = never; /** Shield points that this unit has. */ public float shields = 0f; - /** How much shields get increased per wave. */ + /** How much shields get increased by per wave. */ public float shieldScaling = 0f; /** Amount of enemies spawned initially, with no scaling */ public int unitAmount = 1; + /** If not -1, the unit will only spawn in spawnpoints with these packed coordinates. */ + public int spawn = -1; /** Seq of payloads that this unit will spawn with. */ public @Nullable Seq payloads; /** Status effect applied to the spawned unit. Null to disable. */ @@ -55,6 +57,10 @@ public class SpawnGroup implements JsonSerializable, Cloneable{ //serialization use only } + public boolean canSpawn(int position){ + return spawn == -1 || spawn == position; + } + /** @return amount of units spawned on a specific wave. */ public int getSpawned(int wave){ if(spacing == 0) spacing = 1; @@ -111,6 +117,7 @@ public class SpawnGroup implements JsonSerializable, Cloneable{ if(shieldScaling != 0) json.writeValue("shieldScaling", shieldScaling); if(unitAmount != 1) json.writeValue("amount", unitAmount); if(effect != null) json.writeValue("effect", effect.name); + if(spawn != -1) json.writeValue("spawn", spawn); if(payloads != null && payloads.size > 0){ json.writeValue("payloads", payloads.map(u -> u.name).toArray(String.class)); } @@ -130,6 +137,7 @@ public class SpawnGroup implements JsonSerializable, Cloneable{ shields = data.getFloat("shields", 0); shieldScaling = data.getFloat("shieldScaling", 0); unitAmount = data.getInt("amount", 1); + spawn = data.getInt("spawn", -1); if(data.has("payloads")){ payloads = Seq.with(json.readValue(String[].class, data.get("payloads"))).map(s -> content.getByName(ContentType.unit, s)); } diff --git a/core/src/mindustry/maps/SectorDamage.java b/core/src/mindustry/maps/SectorDamage.java index 2b1c9995e3..9fd2f0d247 100644 --- a/core/src/mindustry/maps/SectorDamage.java +++ b/core/src/mindustry/maps/SectorDamage.java @@ -321,14 +321,20 @@ public class SectorDamage{ var reg = new LinearRegression(); SpawnGroup bossGroup = null; Seq waveDps = new Seq<>(), waveHealth = new Seq<>(); + int groundSpawns = Math.max(spawner.countFlyerSpawns(), 1), airSpawns = Math.max(spawner.countGroundSpawns(), 1); for(int wave = state.wave; wave < state.wave + 10; wave ++){ float sumWaveDps = 0f, sumWaveHealth = 0f; for(SpawnGroup group : state.rules.spawns){ + //calculate the amount of spawn points used + //if there's a spawn position override, there is only one potential place they spawn + //assume that all overridden positions are valid, should always be true in properly designed campaign maps + int spawnCount = group.spawn != -1 ? 1 : group.type.flying ? airSpawns : groundSpawns; + float healthMult = 1f + Mathf.clamp(group.type.armor / 20f); StatusEffect effect = (group.effect == null ? StatusEffects.none : group.effect); - int spawned = group.getSpawned(wave); + int spawned = group.getSpawned(wave) * spawnCount; //save the boss group if(group.effect == StatusEffects.boss){ bossGroup = group; diff --git a/core/src/mindustry/maps/filters/BlendFilter.java b/core/src/mindustry/maps/filters/BlendFilter.java index 7f0d319df9..773459d75a 100644 --- a/core/src/mindustry/maps/filters/BlendFilter.java +++ b/core/src/mindustry/maps/filters/BlendFilter.java @@ -8,7 +8,7 @@ import static mindustry.maps.filters.FilterOption.*; public class BlendFilter extends GenerateFilter{ float radius = 2f; - Block block = Blocks.stone, floor = Blocks.ice, ignore = Blocks.air; + Block block = Blocks.sand, floor = Blocks.sandWater, ignore = Blocks.air; @Override public FilterOption[] options(){ @@ -16,7 +16,7 @@ public class BlendFilter extends GenerateFilter{ new SliderOption("radius", () -> radius, f -> radius = f, 1f, 10f), new BlockOption("block", () -> block, b -> block = b, anyOptional), new BlockOption("floor", () -> floor, b -> floor = b, anyOptional), - new BlockOption("ignore", () -> ignore, b -> ignore = b, floorsOptional) + new BlockOption("ignore", () -> ignore, b -> ignore = b, anyOptional) }; }