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