Add optional TurretListener
This commit is contained in:
parent
4326c02fb2
commit
8adf9ded34
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user