mirror of
https://github.com/jwinterm/SpaceShooter.git
synced 2026-10-17 05:51:30 +02:00
61 lines
1.7 KiB
Java
61 lines
1.7 KiB
Java
package com.spaceshooter;
|
|
|
|
import com.badlogic.gdx.Gdx;
|
|
import com.badlogic.gdx.graphics.Texture;
|
|
import com.badlogic.gdx.math.MathUtils;
|
|
|
|
public class EnemyFactory extends Enemy {
|
|
private float spawnTimer;
|
|
private EnemyManager enemyManager;
|
|
private boolean hasChanged; //Returns true if the texture has changed.
|
|
|
|
private int type;
|
|
|
|
public EnemyFactory(EnemyManager enemyManager) {
|
|
super(50,ResourceManager.EnemyFactory);
|
|
spawnTimer = 0.0f;
|
|
hasChanged = false;
|
|
this.enemyManager = enemyManager;
|
|
type = MathUtils.random(0,2);
|
|
}
|
|
|
|
|
|
public void updateEnemy(Player player, BulletManager bulletManager) {
|
|
spawnTimer += (Gdx.graphics.getDeltaTime() / 5);
|
|
|
|
setY(getY() - 50 * Gdx.graphics.getDeltaTime());
|
|
|
|
if (player != null) {
|
|
|
|
float playerDist = (float) Math.sqrt(Math.pow(
|
|
getX() - player.getX(), 2)
|
|
+ Math.pow(getY() - player.getY(), 2));
|
|
|
|
if (type == 0) {
|
|
if ((spawnTimer > 0.2f) && (playerDist < 600) && (getY() > player.getY())) {
|
|
enemyManager.addEnemy(new EnemyHoming(),getX() + (getWidth()/2) - 15,getY());
|
|
spawnTimer = 0f;
|
|
}
|
|
}
|
|
else if (type == 1) {
|
|
if ((spawnTimer > 0.5f) && (playerDist < 600) && (getY() > player.getY())) {
|
|
enemyManager.addEnemy(new EnemySpinner(),getX() + (getWidth()/2) - 15,getY());
|
|
spawnTimer = 0f;
|
|
}
|
|
}
|
|
else if (type == 2) {
|
|
if ((spawnTimer > 0.2f) && (playerDist < 600) && (getY() > player.getY())) {
|
|
enemyManager.addEnemy(new EnemyPopcorn(),getX() + (getWidth()/2 - 15),getY());
|
|
spawnTimer = 0f;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
if (health < 15 && !hasChanged) {
|
|
setTexture(ResourceManager.getAssetManager().get(ResourceManager.EnemyFactoryDestroyed,Texture.class));
|
|
hasChanged = true;
|
|
}
|
|
|
|
}
|
|
} |