Custom spawn locations
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package io.anuke.mindustry.ai;
|
||||
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
import io.anuke.mindustry.content.blocks.Blocks;
|
||||
import io.anuke.mindustry.entities.units.BaseUnit;
|
||||
import io.anuke.mindustry.entities.units.Squad;
|
||||
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
|
||||
@@ -25,6 +26,7 @@ public class WaveSpawner{
|
||||
private GridBits quadrants;
|
||||
|
||||
private Array<SpawnGroup> groups;
|
||||
private boolean dynamicSpawn;
|
||||
|
||||
private Array<FlyerSpawn> flySpawns = new Array<>();
|
||||
private Array<GroundSpawn> groundSpawns = new Array<>();
|
||||
@@ -81,10 +83,12 @@ public class WaveSpawner{
|
||||
int addGround = groundGroups - groundSpawns.size, addFly = flyGroups - flySpawns.size;
|
||||
|
||||
//add extra groups if the total exceeds it
|
||||
for(int i = 0; i < addGround; i++){
|
||||
GroundSpawn spawn = new GroundSpawn();
|
||||
findLocation(spawn);
|
||||
groundSpawns.add(spawn);
|
||||
if(!dynamicSpawn){
|
||||
for(int i = 0; i < addGround; i++){
|
||||
GroundSpawn spawn = new GroundSpawn();
|
||||
findLocation(spawn);
|
||||
groundSpawns.add(spawn);
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < addFly; i++){
|
||||
@@ -117,9 +121,12 @@ public class WaveSpawner{
|
||||
flyCount++;
|
||||
}else{
|
||||
GroundSpawn spawn = groundSpawns.get(groundCount);
|
||||
checkQuadrant(spawn.x, spawn.y);
|
||||
if(!getQuad(spawn.x, spawn.y)){
|
||||
findLocation(spawn);
|
||||
|
||||
if(dynamicSpawn){
|
||||
checkQuadrant(spawn.x, spawn.y);
|
||||
if(!getQuad(spawn.x, spawn.y)){
|
||||
findLocation(spawn);
|
||||
}
|
||||
}
|
||||
|
||||
spawnX = spawn.x * quadsize * tilesize + quadsize * tilesize / 2f;
|
||||
@@ -165,6 +172,7 @@ public class WaveSpawner{
|
||||
}
|
||||
|
||||
private void reset(WorldLoadEvent event){
|
||||
dynamicSpawn = false;
|
||||
flySpawns.clear();
|
||||
groundSpawns.clear();
|
||||
quadrants = new GridBits(quadWidth(), quadHeight());
|
||||
@@ -174,6 +182,20 @@ public class WaveSpawner{
|
||||
}else{
|
||||
groups = world.getSector().spawns;
|
||||
}
|
||||
|
||||
dynamicSpawn = true;
|
||||
|
||||
for(int x = 0; x < world.width(); x++){
|
||||
for(int y = 0; y < world.height(); y++){
|
||||
if(world.tile(x, y).block() == Blocks.spawn){
|
||||
dynamicSpawn = false;
|
||||
GroundSpawn spawn = new GroundSpawn();
|
||||
spawn.x = x/quadsize;
|
||||
spawn.y = y/quadsize;
|
||||
groundSpawns.add(spawn);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean getQuad(int quadx, int quady){
|
||||
|
||||
Reference in New Issue
Block a user