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 Turret serverTurret, clientTurret;
private Turret instanceTurret;
private final Wind wind;
private final boolean serverInstance;
private SocketHelper socketHelper;
@ -43,6 +44,7 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
initBackground();
font = new Font(Constants.FONT_NAME, Font.PLAIN, 24);
wind = new Wind();
gameStarted = false;
}
@ -136,9 +138,9 @@ public class GameCanvas extends DoubleBufferedCanvas implements Runnable, Networ
terrain = new Terrain(Constants.WIDTH);
newRound(seed);
serverTurret = new Turret(Turret.SERVER, terrain);
serverTurret = new Turret(Turret.SERVER, terrain, wind);
serverTurret.setTurretListener(serverTurretListener);
clientTurret = new Turret(Turret.CLIENT, terrain);
clientTurret = new Turret(Turret.CLIENT, terrain, wind);
clientTurret.setTurretListener(clientTurretListener);
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.
initBackground();
terrain.generate();
wind.change();
if (gameStarted) {
serverTurret.reinit();

View File

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