package com.spaceshooter;
import com.badlogic.gdx.Gdx;
//Eye enemy follows the player, and, once it reaches a certain distance, it shoots off bullets in a circular pattern.
public class EnemyEye extends Enemy {
private float bulletTimer;
private final int HOMING_SPEED;
private boolean isAngry;
EnemyEye() {
super(50, ResourceManager.EnemyEye);
setOrigin(getWidth() / 2, getHeight() / 2);
bulletTimer = 0f;
isAngry = false;
HOMING_SPEED = 150;
setOrigin(getWidth() / 2, getHeight() / 2);
}
public void updateEnemy(Player player, BulletManager bulletManager) {
if (player != null) {
float playerDist = getDistance(player);
if (isAngry == false) {
moveTowards(HOMING_SPEED,player);
rotateTowards(player);
if (playerDist < 200 && !isAngry) {
isAngry = true;
}
}
else if (isAngry == true) {
if (getX() > player.getX())
rotate(-Gdx.graphics.getDeltaTime() * 100);
else
rotate(Gdx.graphics.getDeltaTime() * 100);
bulletTimer += (Gdx.graphics.getDeltaTime() / 5);
if (bulletTimer > 0.03f) {
// Creates a circular bullet pattern.
bulletManager
.getList()
.add(new EnemyBulletBasic(
getX() + getWidth() / 2,
getY() + getHeight() / 2,
(-1f * SpaceShooter.getBulletSpeed())
* (float) Math.cos(Math
.toRadians(getRotation() - 90)),
(-1f * SpaceShooter.getBulletSpeed())
* (float) Math.sin(Math
.toRadians(getRotation() - 90)),
0));
bulletTimer = 0;
}
}
setY(this.getY() - 10 * Gdx.graphics.getDeltaTime());
}
else
setY(this.getY() - 150 * Gdx.graphics.getDeltaTime());
}
}