package com.spaceshooter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.*;
public class EnemyMissileShip extends Enemy {
private EnemyManager enemyManager;
private float missileTimer; // Time between each shot;
private int state;
private Texture textureM;
private Texture textureL;
private Texture textureR;
private Texture texture;
//Red ship that fires six missiles at the player (two at a time).
public EnemyMissileShip(EnemyManager enemyManager) {
super(50, ResourceManager.MissileEnemy);
texture = getTexture();
textureM = ResourceManager.getAssetManager().get(
ResourceManager.MissileEnemyM, Texture.class);
textureL = ResourceManager.getAssetManager().get(
ResourceManager.MissileEnemyL, Texture.class);
textureR = ResourceManager.getAssetManager().get(
ResourceManager.MissileEnemyR, Texture.class);
this.enemyManager = enemyManager;
state = 0; // unaware of player.
}
public void updateEnemy(Player player, BulletManager bulletManager) {
if (state != 0)
missileTimer += Gdx.graphics.getDeltaTime() / 5;
if (state == 0) {
setY(getY() - 150 * Gdx.graphics.getDeltaTime());
} else if (state == 4) {
setY(getY() - 200 * Gdx.graphics.getDeltaTime());
}
if (player != null && (getDistance(player) < 200) && state == 0) {
setTexture(textureL);
state++;
} else if (player != null && state == 1 && missileTimer > 0.2f) {
enemyManager.addEnemy(new EnemyMissile(), getX() - 30, getY());
enemyManager.addEnemy(new EnemyMissile(), getX() + 50, getY());
setTexture(textureM);
state++;
missileTimer = 0f;
} else if (player != null && state == 2 && missileTimer > 0.2f) {
enemyManager.addEnemy(new EnemyMissile(), getX() - 30, getY());
enemyManager.addEnemy(new EnemyMissile(), getX() + 50, getY());
setTexture(textureR);
state++;
missileTimer = 0f;
} else if (state == 3 && missileTimer > 0.2f) {
enemyManager.addEnemy(new EnemyMissile(), getX() - 30, getY());
enemyManager.addEnemy(new EnemyMissile(), getX() + 50, getY());
setTexture(texture);
state++;
missileTimer = 0f;
}
}
}