Add ability to shoot
This commit is contained in:
parent
a853d9a01b
commit
5e5aeb31e2
@ -16,6 +16,7 @@ public class Turret implements Constants {
|
|||||||
private static final int TURRET_WIDTH = PLAYERS_BLOCK_COUNT;
|
private static final int TURRET_WIDTH = PLAYERS_BLOCK_COUNT;
|
||||||
private static final int TURRET_HEIGHT = PLAYERS_BLOCK_COUNT + 1;
|
private static final int TURRET_HEIGHT = PLAYERS_BLOCK_COUNT + 1;
|
||||||
|
|
||||||
|
// Parameters
|
||||||
private final int turretX, turretY;
|
private final int turretX, turretY;
|
||||||
private final int barrelRadius;
|
private final int barrelRadius;
|
||||||
private final boolean server;
|
private final boolean server;
|
||||||
@ -23,13 +24,21 @@ public class Turret implements Constants {
|
|||||||
private double barrelAngle;
|
private double barrelAngle;
|
||||||
private double shotPower;
|
private double shotPower;
|
||||||
|
|
||||||
public Turret(boolean server, int turretY) {
|
// Shooting
|
||||||
|
private boolean shootState;
|
||||||
|
private final ShootInfo shootInfo;
|
||||||
|
private final Terrain terrain; // TODO GameInfo
|
||||||
|
|
||||||
|
public Turret(boolean server, int turretY, Terrain terrain) {
|
||||||
this.server = server;
|
this.server = server;
|
||||||
this.turretX = (server ? 5 : Constants.WIDTH - 5);
|
this.turretX = (server ? 5 : Constants.WIDTH - 5);
|
||||||
this.turretY = turretY;
|
this.turretY = turretY;
|
||||||
|
this.terrain = terrain;
|
||||||
barrelAngle = ANGLE_45;
|
barrelAngle = ANGLE_45;
|
||||||
shotPower = 0.5d;
|
shotPower = 0.5d;
|
||||||
barrelRadius = Constants.WIDTH / 20;
|
barrelRadius = Constants.WIDTH / 20;
|
||||||
|
shootState = false;
|
||||||
|
shootInfo = new ShootInfo();
|
||||||
calculateBarrelPosition();
|
calculateBarrelPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -39,6 +48,17 @@ public class Turret implements Constants {
|
|||||||
g.setColor(server ? Color.BLUE : Color.RED);
|
g.setColor(server ? Color.BLUE : Color.RED);
|
||||||
g.fillArc(turretX - TURRET_WIDTH / 2, Constants.HEIGHT - turretY - TURRET_HEIGHT / 2,
|
g.fillArc(turretX - TURRET_WIDTH / 2, Constants.HEIGHT - turretY - TURRET_HEIGHT / 2,
|
||||||
TURRET_WIDTH, TURRET_HEIGHT, 0, 180);
|
TURRET_WIDTH, TURRET_HEIGHT, 0, 180);
|
||||||
|
if (shootState) {
|
||||||
|
shootInfo.update(server);
|
||||||
|
shootInfo.draw(g);
|
||||||
|
if (shootInfo.isOver()) {
|
||||||
|
shootState = false;
|
||||||
|
}
|
||||||
|
if (shootInfo.isCollideTerrain(terrain)) {
|
||||||
|
shootState = false;
|
||||||
|
terrain.destroyTerrain((int) shootInfo.x);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (DEBUG_MODE) {
|
if (DEBUG_MODE) {
|
||||||
g.setColor(Color.RED);
|
g.setColor(Color.RED);
|
||||||
double x = barrelX;
|
double x = barrelX;
|
||||||
@ -75,6 +95,17 @@ public class Turret implements Constants {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void shoot() {
|
||||||
|
shootState = true;
|
||||||
|
shootInfo.reset();
|
||||||
|
shootInfo.x = barrelX;
|
||||||
|
shootInfo.y = barrelY;
|
||||||
|
final double speed = shotPower * (Constants.WIDTH / 80d);
|
||||||
|
shootInfo.windSpeed = 0d;//Wind.getInstance().getSpeed();
|
||||||
|
shootInfo.speedX = speed * Math.cos(barrelAngle);
|
||||||
|
shootInfo.vsin = speed * Math.sin(barrelAngle);
|
||||||
|
}
|
||||||
|
|
||||||
private void calculateBarrelPosition() {
|
private void calculateBarrelPosition() {
|
||||||
final int sign = (server ? 1 : -1);
|
final int sign = (server ? 1 : -1);
|
||||||
barrelX = (int) (turretX + sign * barrelRadius * shotPower * Math.cos(barrelAngle));
|
barrelX = (int) (turretX + sign * barrelRadius * shotPower * Math.cos(barrelAngle));
|
||||||
|
Loading…
Reference in New Issue
Block a user