Files
SpaceShooter/com/spaceshooter/EnemyRedship.java
T
2014-07-06 15:07:28 -07:00

105 lines
4.0 KiB
Java

package com.spaceshooter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.Texture;
public class EnemyRedship extends Enemy {
private float bulletTimer;
private float angryTimer;
private Texture angryTexture;
private Texture happyTexture;
private boolean isAngry;
private boolean alternateShot;
private float angle;
EnemyRedship() {
super(50, ResourceManager.EnemyRedShip1); // tons of health! (45)
angryTexture = ResourceManager.getAssetManager().get(
ResourceManager.EnemyRedShip1b, Texture.class);
happyTexture = ResourceManager.getAssetManager().get(
ResourceManager.EnemyRedShip1, Texture.class);
setOrigin(getWidth() / 2, getHeight() / 2);
bulletTimer = 0f;
angryTimer = 0f;
isAngry = false;
alternateShot = false;
angle= 0.0f;
}
public void updateEnemy(Player player, BulletManager bulletManager) {
angle += Gdx.graphics.getDeltaTime()*100f;
angryTimer += (Gdx.graphics.getDeltaTime() / 5);
if (isAngry == false) {
if (angryTimer > 0.5f) {
setTexture(angryTexture);
isAngry = true;
}
} else if (isAngry == true) {
bulletTimer += (Gdx.graphics.getDeltaTime() / 5);
if (bulletTimer > 0.10f && alternateShot == false) {
bulletManager.getList().add(
new EnemyBulletBasic(getX() + 118, getY(),
SpaceShooter.getBulletSpeed() * (float) Math.cos(Math.PI / 3),SpaceShooter.getBulletSpeed(), 0));
bulletManager.getList().add(
new EnemyBulletBasic(getX() + 118, getY(), 0, SpaceShooter.getBulletSpeed(), 0));
bulletManager.getList().add(
new EnemyBulletBasic(getX() + 118, getY(), (-1f * SpaceShooter.getBulletSpeed())
* (float) Math.cos(Math.PI / 3),SpaceShooter.getBulletSpeed(), 0));
bulletManager.getList().add(
new EnemyBulletBasic(getX() + 10, getY(),
SpaceShooter.getBulletSpeed() * (float) Math.cos(Math.PI / 3),SpaceShooter.getBulletSpeed(), 0));
bulletManager.getList().add(
new EnemyBulletBasic(getX() + 10, getY(), 0, SpaceShooter.getBulletSpeed(), 0));
bulletManager.getList().add(
new EnemyBulletBasic(getX() + 10, getY(), (-1f * SpaceShooter.getBulletSpeed())
* (float) Math.cos(Math.PI / 3),SpaceShooter.getBulletSpeed(), 0));
alternateShot = true;
bulletTimer = 0;
}
if (bulletTimer > 0.10f && alternateShot == true) {
bulletManager.getList().add(
new EnemyBulletBasic(getX() + 118, getY(),
SpaceShooter.getBulletSpeed() * (float) Math.sin(Math.PI / 3),SpaceShooter.getBulletSpeed(), 0));
bulletManager.getList().add(
new EnemyBulletBasic(getX() + 118, getY(), 0,SpaceShooter.getBulletSpeed(), 0));
bulletManager.getList().add(
new EnemyBulletBasic(getX() + 118, getY(), (-1f * SpaceShooter.getBulletSpeed())
* (float) Math.sin(Math.PI / 3),SpaceShooter.getBulletSpeed(), 0));
bulletManager.getList().add(
new EnemyBulletBasic(getX() + 10, getY(),
SpaceShooter.getBulletSpeed() * (float) Math.sin(Math.PI / 3),SpaceShooter.getBulletSpeed(), 0));
bulletManager.getList().add(
new EnemyBulletBasic(getX() + 10, getY(), 0,SpaceShooter.getBulletSpeed(), 0));
bulletManager.getList().add(
new EnemyBulletBasic(getX() + 10, getY(), (-1f * SpaceShooter.getBulletSpeed())
* (float) Math.sin(Math.PI / 3),SpaceShooter.getBulletSpeed(), 0));
alternateShot = false;
bulletTimer = 0;
}
if (angryTimer > 1.0f) {
isAngry = false;
setTexture(happyTexture);
angryTimer = 0f;
}
}
if (player != null)
setPosition(getX() + 4f*(float)Math.sin(Math.toRadians(angle)),getY() - 30*Gdx.graphics.getDeltaTime());
else
setPosition(getX() + 4f*(float)Math.sin(Math.toRadians(angle)),getY() - 100*Gdx.graphics.getDeltaTime());
}
@Override
public void hit() { // Make it easier for the player to see hits. Turns to
// pink instead of red.
// setY(getY() + 150 * Gdx.graphics.getDeltaTime()); Possible impact
// powerup??
gotHit = true;
setColor(Color.CLEAR);
health--;
if (health <= 0)
isDead = true;
}
}