entity spawning added

This commit is contained in:
2017-07-12 23:53:53 -05:00
parent 44551bdea3
commit 9d8d34662d
12 changed files with 138 additions and 36 deletions

View File

@@ -1,10 +1,15 @@
package zero1hd.polyjet.entity;
import java.util.Arrays;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.scenes.scene2d.Stage;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Pool;
import zero1hd.polyjet.audio.map.EntitySpawnInfo;
import zero1hd.polyjet.entity.ally.Laser;
import zero1hd.polyjet.entity.enemies.Bar;
import zero1hd.polyjet.entity.enemies.Flake;
@@ -106,6 +111,61 @@ public class EntityController {
}
}
public Entity spawnEntity(Stage stage, EntitySpawnInfo entitySpawnInfo) {
if (entitySpawnInfo != null) {
float[] param = entitySpawnInfo.getParameters();
Gdx.app.debug("Spawning Entity", entitySpawnInfo.toString() + " parameters: " + Arrays.toString(param));
switch (entitySpawnInfo.getEntityType()) {
case VOID_CIRCLE:
VoidCircle voidCircle = voidCirclePool.obtain();
voidCircle.init(param[0], param[1], param[2], param[3], param[4]);
activeEnemies.add(voidCircle);
stage.addActor(voidCircle);
return voidCircle;
case LASER:
Laser laser = laserPool.obtain();
laser.init(param[0], param[1], param[2]);
activeAllies.add(laser);
stage.addActor(laser);
return laser;
case PELLET:
Pellet pellet = pelletPool.obtain();
pellet.init(param[0], param[1], param[2], param[3]);
activeEnemies.add(pellet);
stage.addActor(pellet);
return pellet;
case SHARD:
Shard shard = shardPool.obtain();
shard.init(param[0], param[1], param[2], param[3], (int) param[4]);
activeEnemies.add(shard);
stage.addActor(shard);
return shard;
case BAR:
Bar bar = barPool.obtain();
bar.init(param[0], param[1]);
activeEnemies.add(bar);
stage.addActor(bar);
return bar;
case FLAKE:
Flake flake = flakePool.obtain();
Shard[] shards = new Shard[(int) param[0]];
for (int i = 0; i < shards.length; i++) {
shards[i] = (Shard) retrieveEntity(Entities.SHARD);
shards[i].init(param[6], param[7], param[8], param[9], (int) param[10]);
stage.addActor(shards[i]);
}
flake.init(param[1], param[2], param[3], param[4], param[5], shards);
activeEnemies.add(flake);
stage.addActor(flake);
return flake;
default:
return null;
}
} else {
return null;
}
}
public void free(Entity entity) {
if (entity.getEntityType().isEnemy()) {
activeEnemies.removeValue(entity, true);