From 455f6998d79839212ab2ddfe336f1766d15b9ec9 Mon Sep 17 00:00:00 2001 From: Victor Date: Sat, 22 Mar 2014 22:36:56 +0200 Subject: [PATCH] Add wind changing and influence to missile --- src/com/annimon/turrets/GameCanvas.java | 7 +++++-- src/com/annimon/turrets/Turret.java | 10 ++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/com/annimon/turrets/GameCanvas.java b/src/com/annimon/turrets/GameCanvas.java index 5346ce9..6b55b15 100644 --- a/src/com/annimon/turrets/GameCanvas.java +++ b/src/com/annimon/turrets/GameCanvas.java @@ -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(); diff --git a/src/com/annimon/turrets/Turret.java b/src/com/annimon/turrets/Turret.java index 7e72934..bc3a1b8 100644 --- a/src/com/annimon/turrets/Turret.java +++ b/src/com/annimon/turrets/Turret.java @@ -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); }