Spawnpoint repultion

This commit is contained in:
Anuken
2019-05-29 21:41:56 -04:00
parent bd134bf9c9
commit 00b953a04e
2 changed files with 23 additions and 11 deletions
@@ -4,7 +4,8 @@ import io.anuke.arc.Events;
import io.anuke.arc.collection.Array;
import io.anuke.arc.math.Angles;
import io.anuke.arc.math.Mathf;
import io.anuke.arc.util.*;
import io.anuke.arc.util.Time;
import io.anuke.arc.util.Tmp;
import io.anuke.mindustry.content.Blocks;
import io.anuke.mindustry.content.Fx;
import io.anuke.mindustry.entities.Damage;
@@ -13,12 +14,13 @@ import io.anuke.mindustry.entities.type.BaseUnit;
import io.anuke.mindustry.game.EventType.WorldLoadEvent;
import io.anuke.mindustry.game.SpawnGroup;
import io.anuke.mindustry.net.Net;
import io.anuke.mindustry.world.Tile;
import static io.anuke.mindustry.Vars.*;
public class WaveSpawner{
private Array<FlyerSpawn> flySpawns = new Array<>();
private Array<GroundSpawn> groundSpawns = new Array<>();
private Array<Tile> groundSpawns = new Array<>();
private boolean spawning = false;
public WaveSpawner(){
@@ -29,6 +31,10 @@ public class WaveSpawner{
return groundSpawns.size;
}
public Array<Tile> getGroundSpawns(){
return groundSpawns;
}
/** @return true if the player is near a ground spawn point. */
public boolean playerNear(){
return groundSpawns.contains(g -> Mathf.dst(g.x * tilesize, g.y * tilesize, player.x, player.y) < state.rules.dropZoneRadius);
@@ -58,9 +64,9 @@ public class WaveSpawner{
}
}
}else{
for(GroundSpawn spawn : groundSpawns){
spawnX = spawn.x * tilesize;
spawnY = spawn.y * tilesize;
for(Tile spawn : groundSpawns){
spawnX = spawn.worldx();
spawnY = spawn.worldy();
spread = tilesize * 2;
for(int i = 0; i < spawned; i++){
@@ -101,10 +107,7 @@ public class WaveSpawner{
}
private void addSpawns(int x, int y){
GroundSpawn spawn = new GroundSpawn();
spawn.x = x;
spawn.y = y;
groundSpawns.add(spawn);
groundSpawns.add(world.tile(x, y));
FlyerSpawn fspawn = new FlyerSpawn();
fspawn.angle = Angles.angle(world.width() / 2f, world.height() / 2f, x, y);