Add turret info entity
This commit is contained in:
parent
25fab59e20
commit
571b5f23bf
@ -28,6 +28,7 @@ public class Turret implements Constants {
|
|||||||
private boolean shootState;
|
private boolean shootState;
|
||||||
private final ShootInfo shootInfo;
|
private final ShootInfo shootInfo;
|
||||||
private final Terrain terrain; // TODO GameInfo
|
private final Terrain terrain; // TODO GameInfo
|
||||||
|
private TurretListener listener;
|
||||||
|
|
||||||
public Turret(boolean server, int turretY, Terrain terrain) {
|
public Turret(boolean server, int turretY, Terrain terrain) {
|
||||||
this.server = server;
|
this.server = server;
|
||||||
@ -53,9 +54,11 @@ public class Turret implements Constants {
|
|||||||
shootInfo.draw(g);
|
shootInfo.draw(g);
|
||||||
if (shootInfo.isOver()) {
|
if (shootInfo.isOver()) {
|
||||||
shootState = false;
|
shootState = false;
|
||||||
|
if (listener != null) listener.shootComplete(-1);
|
||||||
} else if (shootInfo.isCollideTerrain(terrain)) {
|
} else if (shootInfo.isCollideTerrain(terrain)) {
|
||||||
shootState = false;
|
shootState = false;
|
||||||
terrain.destroyTerrain((int) shootInfo.x);
|
terrain.destroyTerrain((int) shootInfo.x);
|
||||||
|
if (listener != null) listener.shootComplete((int) shootInfo.x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (DEBUG_MODE) {
|
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;
|
if (shootState) return;
|
||||||
|
|
||||||
|
this.listener = listener;
|
||||||
shootState = true;
|
shootState = true;
|
||||||
shootInfo.reset();
|
shootInfo.reset();
|
||||||
shootInfo.x = barrelX;
|
shootInfo.x = barrelX;
|
||||||
@ -114,4 +134,8 @@ public class Turret implements Constants {
|
|||||||
barrelX = (int) (turretX + sign * barrelRadius * shotPower * Math.cos(barrelAngle));
|
barrelX = (int) (turretX + sign * barrelRadius * shotPower * Math.cos(barrelAngle));
|
||||||
barrelY = (int) (turretY + barrelRadius * shotPower * Math.sin(barrelAngle));
|
barrelY = (int) (turretY + barrelRadius * shotPower * Math.sin(barrelAngle));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface TurretListener {
|
||||||
|
void shootComplete(int x);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
11
src/com/annimon/turrets/TurretInfo.java
Normal file
11
src/com/annimon/turrets/TurretInfo.java
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package com.annimon.turrets;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author aNNiMON
|
||||||
|
*/
|
||||||
|
public class TurretInfo {
|
||||||
|
|
||||||
|
double barrelAngle, shotPower;
|
||||||
|
int barrelX, barrelY;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user