1
0

Add optional TurretListener

This commit is contained in:
Victor 2014-10-25 17:06:22 +03:00
parent 4326c02fb2
commit 8adf9ded34

View File

@ -7,6 +7,7 @@ import static com.annimon.turrets.Constants.PLAYERS_BLOCK_COUNT;
import static com.annimon.turrets.Constants.WIDTH;
import java.awt.Color;
import java.awt.Graphics2D;
import java.util.Optional;
/**
*
@ -35,7 +36,7 @@ public final class Turret {
private final ShootInfo shootInfo;
private final Terrain terrain;
private final Wind wind;
private TurretListener listener;
private Optional<TurretListener> listener;
public Turret(boolean server, Terrain terrain, Wind wind) {
this.server = server;
@ -58,7 +59,7 @@ public final class Turret {
}
public void setTurretListener(TurretListener listener) {
this.listener = listener;
this.listener = Optional.of(listener);
}
public void draw(Graphics2D g) {
@ -72,16 +73,16 @@ public final class Turret {
shootInfo.draw(g);
if (shootInfo.isOver()) {
shootState = false;
if (listener != null) listener.shootComplete(false);
listener.ifPresent(t -> t.shootComplete(false));
} else if (shootInfo.isCollideOpponent(server, terrain)) {
shootState = false;
Sound.EXPLOSION_2.play();
if (listener != null) listener.shootComplete(true);
listener.ifPresent(t -> t.shootComplete(true));
} else if (shootInfo.isCollideTerrain(terrain)) {
shootState = false;
Sound.EXPLOSION_1.play();
terrain.destroyTerrain((int) shootInfo.x);
if (listener != null) listener.shootComplete(false);
listener.ifPresent(t -> t.shootComplete(false));
}
}
if (DEBUG_MODE) {
@ -157,6 +158,7 @@ public final class Turret {
barrelY = (int) (turretY + barrelRadius * shotPower * Math.sin(barrelAngle));
}
@FunctionalInterface
public interface TurretListener {
void shootComplete(boolean hitOpponent);
}