1
0

Add wind changing and influence to missile

This commit is contained in:
Victor 2014-03-22 22:36:56 +02:00
parent bcf6584fc9
commit 455f6998d7
2 changed files with 11 additions and 6 deletions

View File

@ -29,6 +29,7 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
private Terrain terrain; private Terrain terrain;
private Turret serverTurret, clientTurret; private Turret serverTurret, clientTurret;
private Turret instanceTurret; private Turret instanceTurret;
private final Wind wind;
private final boolean serverInstance; private final boolean serverInstance;
private SocketHelper socketHelper; private SocketHelper socketHelper;
@ -43,6 +44,7 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
initBackground(); initBackground();
font = new Font(Constants.FONT_NAME, Font.PLAIN, 24); font = new Font(Constants.FONT_NAME, Font.PLAIN, 24);
wind = new Wind();
gameStarted = false; gameStarted = false;
} }
@ -136,9 +138,9 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
terrain = new Terrain(Constants.WIDTH); terrain = new Terrain(Constants.WIDTH);
newRound(seed); newRound(seed);
serverTurret = new Turret(Turret.SERVER, terrain); serverTurret = new Turret(Turret.SERVER, terrain, wind);
serverTurret.setTurretListener(serverTurretListener); serverTurret.setTurretListener(serverTurretListener);
clientTurret = new Turret(Turret.CLIENT, terrain); clientTurret = new Turret(Turret.CLIENT, terrain, wind);
clientTurret.setTurretListener(clientTurretListener); clientTurret.setTurretListener(clientTurretListener);
instanceTurret = (serverInstance) ? serverTurret : clientTurret; instanceTurret = (serverInstance) ? serverTurret : clientTurret;
@ -154,6 +156,7 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
// Reinit background with same seed on server and client. // Reinit background with same seed on server and client.
initBackground(); initBackground();
terrain.generate(); terrain.generate();
wind.change();
if (gameStarted) { if (gameStarted) {
serverTurret.reinit(); serverTurret.reinit();

View File

@ -29,12 +29,14 @@ 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 final Wind wind;
private TurretListener listener; private TurretListener listener;
public Turret(boolean server, Terrain terrain) { public Turret(boolean server, Terrain terrain, Wind wind) {
this.server = server; this.server = server;
this.turretX = (server ? 5 : Constants.WIDTH - 5); this.turretX = (server ? 5 : Constants.WIDTH - 5);
this.terrain = terrain; this.terrain = terrain;
this.wind = wind;
barrelRadius = Constants.WIDTH / 20; barrelRadius = Constants.WIDTH / 20;
shootInfo = new ShootInfo(); shootInfo = new ShootInfo();
reinit(); reinit();
@ -80,7 +82,7 @@ public class Turret implements Constants {
double x = barrelX; double x = barrelX;
double y = barrelY; double y = barrelY;
final double speed = shotPower * (Constants.WIDTH / 80d); final double speed = shotPower * (Constants.WIDTH / 80d);
final double windSpeed = 0d; final double windSpeed = wind.getSpeed();
final double speedX = speed * Math.cos(barrelAngle); final double speedX = speed * Math.cos(barrelAngle);
final double vsin = speed * Math.sin(barrelAngle); final double vsin = speed * Math.sin(barrelAngle);
@ -90,7 +92,7 @@ public class Turret implements Constants {
final double speedY = vsin - GRAVITATION_ACCELERATION * t; final double speedY = vsin - GRAVITATION_ACCELERATION * t;
// The longer the missile flight, the greater the wind impact. // The longer the missile flight, the greater the wind impact.
if (server) x += speedX + Math.sin(t) * windSpeed; if (server) x += speedX + Math.sin(t) * windSpeed;
else x -= speedX + Math.sin(t) * windSpeed; else x -= speedX + Math.sin(t) * -windSpeed;
y += speedY; y += speedY;
t += 0.01; t += 0.01;
@ -137,7 +139,7 @@ public class Turret implements Constants {
shootInfo.x = barrelX; shootInfo.x = barrelX;
shootInfo.y = barrelY; shootInfo.y = barrelY;
final double speed = shotPower * (Constants.WIDTH / 80d); final double speed = shotPower * (Constants.WIDTH / 80d);
shootInfo.windSpeed = 0d;//Wind.getInstance().getSpeed(); shootInfo.windSpeed = wind.getSpeed() * (server ? 1 : -1);
shootInfo.speedX = speed * Math.cos(barrelAngle); shootInfo.speedX = speed * Math.cos(barrelAngle);
shootInfo.vsin = speed * Math.sin(barrelAngle); shootInfo.vsin = speed * Math.sin(barrelAngle);
} }