From 571b5f23bf5e5b71140c50d871447a7a84c6da15 Mon Sep 17 00:00:00 2001 From: Victor Date: Sun, 16 Mar 2014 14:55:53 +0200 Subject: [PATCH] Add turret info entity --- src/com/annimon/turrets/Turret.java | 26 ++++++++++++++++++++++++- src/com/annimon/turrets/TurretInfo.java | 11 +++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/com/annimon/turrets/TurretInfo.java diff --git a/src/com/annimon/turrets/Turret.java b/src/com/annimon/turrets/Turret.java index e226fba..434e2b0 100644 --- a/src/com/annimon/turrets/Turret.java +++ b/src/com/annimon/turrets/Turret.java @@ -28,6 +28,7 @@ public class Turret implements Constants { private boolean shootState; private final ShootInfo shootInfo; private final Terrain terrain; // TODO GameInfo + private TurretListener listener; public Turret(boolean server, int turretY, Terrain terrain) { this.server = server; @@ -53,9 +54,11 @@ public class Turret implements Constants { shootInfo.draw(g); if (shootInfo.isOver()) { shootState = false; + if (listener != null) listener.shootComplete(-1); } else if (shootInfo.isCollideTerrain(terrain)) { shootState = false; terrain.destroyTerrain((int) shootInfo.x); + if (listener != null) listener.shootComplete((int) shootInfo.x); } } if (DEBUG_MODE) { @@ -96,9 +99,26 @@ public class Turret implements Constants { } } - public void shoot() { + public TurretInfo getTurretInfo() { + TurretInfo t = new TurretInfo(); + t.barrelAngle = this.barrelAngle; + t.shotPower = this.shotPower; + t.barrelX = this.barrelX; + t.barrelY = this.barrelY; + return t; + } + + public void setTurretInfo(TurretInfo t) { + this.barrelAngle = t.barrelAngle; + this.shotPower = t.shotPower; + this.barrelX = t.barrelX; + this.barrelY = t.barrelY; + } + + public void shoot(TurretListener listener) { if (shootState) return; + this.listener = listener; shootState = true; shootInfo.reset(); shootInfo.x = barrelX; @@ -114,4 +134,8 @@ public class Turret implements Constants { barrelX = (int) (turretX + sign * barrelRadius * shotPower * Math.cos(barrelAngle)); barrelY = (int) (turretY + barrelRadius * shotPower * Math.sin(barrelAngle)); } + + public interface TurretListener { + void shootComplete(int x); + } } diff --git a/src/com/annimon/turrets/TurretInfo.java b/src/com/annimon/turrets/TurretInfo.java new file mode 100644 index 0000000..07bd48f --- /dev/null +++ b/src/com/annimon/turrets/TurretInfo.java @@ -0,0 +1,11 @@ +package com.annimon.turrets; + +/** + * + * @author aNNiMON + */ +public class TurretInfo { + + double barrelAngle, shotPower; + int barrelX, barrelY; +}