From 468e092422f8d8b45d0156680bb84703131731ad Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 5 Aug 2018 23:19:11 -0400 Subject: [PATCH] Pad ammo autofill / Per-mission waves / Better core resource selection --- core/src/io/anuke/mindustry/core/Logic.java | 11 ++++++++--- .../io/anuke/mindustry/entities/UnitInventory.java | 6 ++++++ core/src/io/anuke/mindustry/maps/Sector.java | 2 +- core/src/io/anuke/mindustry/maps/Sectors.java | 7 +++++-- .../src/io/anuke/mindustry/maps/missions/Mission.java | 6 ++++++ .../io/anuke/mindustry/maps/missions/WaveMission.java | 9 +++++++++ .../anuke/mindustry/world/blocks/units/UnitPad.java | 7 +++++++ 7 files changed, 42 insertions(+), 6 deletions(-) diff --git a/core/src/io/anuke/mindustry/core/Logic.java b/core/src/io/anuke/mindustry/core/Logic.java index c83d751015..89eeb2d4a0 100644 --- a/core/src/io/anuke/mindustry/core/Logic.java +++ b/core/src/io/anuke/mindustry/core/Logic.java @@ -49,9 +49,7 @@ public class Logic extends Module{ state.set(State.playing); state.wavetime = wavespace * state.difficulty.timeScaling * 2; - //fill inventory with items for debugging - - for(TeamData team : state.teams.getTeams()){ + for(TeamData team : state.teams.getTeams(true)){ for(Tile tile : team.cores){ if(debug){ for(Item item : Item.all()){ @@ -66,6 +64,13 @@ public class Logic extends Module{ } } + for(TeamData team : state.teams.getTeams(false)){ + for(Tile tile : team.cores){ + tile.entity.items.add(Items.tungsten, 2000); + tile.entity.items.add(Items.blastCompound, 2000); + } + } + Events.fire(PlayEvent.class); } diff --git a/core/src/io/anuke/mindustry/entities/UnitInventory.java b/core/src/io/anuke/mindustry/entities/UnitInventory.java index 53fd627f88..0ebfcb27f9 100644 --- a/core/src/io/anuke/mindustry/entities/UnitInventory.java +++ b/core/src/io/anuke/mindustry/entities/UnitInventory.java @@ -110,6 +110,12 @@ public class UnitInventory implements Saveable{ ammos.add(entry); } + public void fillAmmo(AmmoType type){ + totalAmmo = ammoCapacity(); + ammos.clear(); + ammos.add(new AmmoEntry(type, ammoCapacity())); + } + public int capacity(){ return unit.getItemCapacity(); } diff --git a/core/src/io/anuke/mindustry/maps/Sector.java b/core/src/io/anuke/mindustry/maps/Sector.java index 34f2368135..1618b0c694 100644 --- a/core/src/io/anuke/mindustry/maps/Sector.java +++ b/core/src/io/anuke/mindustry/maps/Sector.java @@ -26,7 +26,7 @@ public class Sector{ /**Missions of this sector-- what needs to be accomplished to unlock it.*/ public transient Array missions = new Array<>(); /**Enemies spawned at this sector.*/ - public transient Array spawns = new Array<>(); + public transient Array spawns; /**Ores that appear in this sector.*/ public transient Array ores = new Array<>(); /**Difficulty of the sector, measured by calculating distance from origin and applying scaling.*/ diff --git a/core/src/io/anuke/mindustry/maps/Sectors.java b/core/src/io/anuke/mindustry/maps/Sectors.java index bac319a09b..4841f3bc71 100644 --- a/core/src/io/anuke/mindustry/maps/Sectors.java +++ b/core/src/io/anuke/mindustry/maps/Sectors.java @@ -133,13 +133,16 @@ public class Sectors{ } private void initSector(Sector sector){ + double waveChance = 0.3; + sector.difficulty = (int)(Mathf.dst(sector.x, sector.y)); + sector.spawns = sector.missions.first().getWaves(sector); if(sector.difficulty == 0){ sector.missions.add(new WaveMission(10)); }else{ - sector.missions.add(new BattleMission()); - //sector.missions.add(new WaveMission(Math.min(10 + sector.difficulty*5 + Mathf.randomSeed(sector.getSeed(), 0, 5)*5, 100))); + sector.missions.add(Mathf.randomSeed(sector.getSeed() + 1) < waveChance ? new WaveMission(Math.min(10 + sector.difficulty*5 + Mathf.randomSeed(sector.getSeed(), 0, 5)*5, 100)) + : new BattleMission()); } //add all ores for now since material differences aren't well handled yet diff --git a/core/src/io/anuke/mindustry/maps/missions/Mission.java b/core/src/io/anuke/mindustry/maps/missions/Mission.java index 1e0d06e7a5..5c20056d27 100644 --- a/core/src/io/anuke/mindustry/maps/missions/Mission.java +++ b/core/src/io/anuke/mindustry/maps/missions/Mission.java @@ -4,7 +4,9 @@ import com.badlogic.gdx.math.GridPoint2; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.content.blocks.StorageBlocks; import io.anuke.mindustry.game.GameMode; +import io.anuke.mindustry.game.SpawnGroup; import io.anuke.mindustry.game.Team; +import io.anuke.mindustry.maps.Sector; import io.anuke.mindustry.maps.generation.Generation; import io.anuke.ucore.scene.ui.layout.Table; @@ -14,6 +16,10 @@ public interface Mission{ GameMode getMode(); void display(Table table); + default Array getWaves(Sector sector){ + return new Array<>(); + } + default Array getSpawnPoints(Generation gen){ return Array.with(); } diff --git a/core/src/io/anuke/mindustry/maps/missions/WaveMission.java b/core/src/io/anuke/mindustry/maps/missions/WaveMission.java index 0bf4cc8b24..f31bbc49af 100644 --- a/core/src/io/anuke/mindustry/maps/missions/WaveMission.java +++ b/core/src/io/anuke/mindustry/maps/missions/WaveMission.java @@ -3,7 +3,10 @@ package io.anuke.mindustry.maps.missions; import com.badlogic.gdx.math.GridPoint2; import com.badlogic.gdx.utils.Array; import io.anuke.mindustry.game.GameMode; +import io.anuke.mindustry.game.SpawnGroup; import io.anuke.mindustry.game.Team; +import io.anuke.mindustry.game.Waves; +import io.anuke.mindustry.maps.Sector; import io.anuke.mindustry.maps.generation.Generation; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.util.Bundles; @@ -17,6 +20,12 @@ public class WaveMission implements Mission{ this.target = target; } + @Override + public Array getWaves(Sector sector){ + Array spawns = new Array<>(); + return Waves.getSpawns(); + } + @Override public void generate(Generation gen){ int coreX = gen.width/2, coreY = gen.height/2; diff --git a/core/src/io/anuke/mindustry/world/blocks/units/UnitPad.java b/core/src/io/anuke/mindustry/world/blocks/units/UnitPad.java index d3b6cf7b1c..844f6cce05 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/UnitPad.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/UnitPad.java @@ -14,6 +14,7 @@ import io.anuke.mindustry.gen.Call; import io.anuke.mindustry.graphics.Palette; import io.anuke.mindustry.graphics.Shaders; import io.anuke.mindustry.net.Net; +import io.anuke.mindustry.type.AmmoType; import io.anuke.mindustry.type.Item; import io.anuke.mindustry.type.ItemStack; import io.anuke.mindustry.world.BarType; @@ -70,6 +71,12 @@ public class UnitPad extends Block{ unit.set(tile.drawx(), tile.drawy()); unit.add(); unit.getVelocity().y = factory.launchVelocity; + + //fill inventory with 1st ammo + if(tile.getTeam() == Team.red){ + AmmoType type = unit.getWeapon().getAmmoType(unit.getWeapon().getAcceptedItems().iterator().next()); + unit.inventory.fillAmmo(type); + } } }