diff --git a/src/asteroids/AsteroidTwoFace.java b/src/asteroids/AsteroidTwoFace.java index f27dee2be417072fb90c86aa5c5a5c1820caadc4..5725f62e246465e81dbd44b60b13041b3262e740 100644 --- a/src/asteroids/AsteroidTwoFace.java +++ b/src/asteroids/AsteroidTwoFace.java @@ -84,10 +84,10 @@ public class AsteroidTwoFace extends Asteroid implements PolyContains { game.asteroidTwoFaceDeath(this); } else { // shoot a missile back at the ship - Missile m = new Missile(s, new Vector2d(0, 0)); + Missile m = new Missile(s, new Vector2d(0, 0, true)); double releaseVelocity = 5.0; // Math.min(releaseVelocity, maxRelease); m.ttl = 60; - Vector2d d = new Vector2d(); + Vector2d d = new Vector2d(true); d.set(game.ship.s); d.subtract(s); d.normalise(); diff --git a/src/asteroids/BotShip.java b/src/asteroids/BotShip.java index 89ea755e6f3c7076f1088ed56015ec21c6ee783a..8bec589afef60f584a3364137563229daf522a2c 100644 --- a/src/asteroids/BotShip.java +++ b/src/asteroids/BotShip.java @@ -11,7 +11,7 @@ import static asteroids.Constants.*; public class BotShip extends Ship { public BotShip(GameState game, Vector2d s, Vector2d v, Vector2d d) { - super(game, new Vector2d(rand.nextDouble() * width, rand.nextDouble() * height), v, d); + super(game, new Vector2d(rand.nextDouble() * width, rand.nextDouble() * height, true), v, d); d.rotate(rand.nextDouble() * 2 * Math.PI); // better to have constructors that capture all of the state action = new Action(); diff --git a/src/asteroids/GameObject.java b/src/asteroids/GameObject.java index af2879f7ad3fc55b75f4b4124dfb6d5b90de968f..a31c5a6771caa73c6b39d73434b22eef03cfb51b 100644 --- a/src/asteroids/GameObject.java +++ b/src/asteroids/GameObject.java @@ -11,8 +11,8 @@ public abstract class GameObject { public double r; protected GameObject(Vector2d s, Vector2d v) { - this.s = new Vector2d(s); - this.v = new Vector2d(v); + this.s = new Vector2d(s, true); + this.v = new Vector2d(v, true); } public abstract void update(); @@ -20,8 +20,8 @@ public abstract class GameObject { public abstract GameObject copy(); protected GameObject updateClone(GameObject copyObject) { - copyObject.s = new Vector2d(s); - copyObject.v = new Vector2d(v); + copyObject.s = new Vector2d(s, true); + copyObject.v = new Vector2d(v, true); copyObject.isTarget = isTarget; copyObject.dead = dead; copyObject.r = r; diff --git a/src/asteroids/GameState.java b/src/asteroids/GameState.java index ad5e3dcb6f275a59632f69af3fed742cc9be6afa..02c1308a74c1cb3506510caa1b32f6c8be9c6ddb 100644 --- a/src/asteroids/GameState.java +++ b/src/asteroids/GameState.java @@ -163,13 +163,13 @@ public class GameState { } private void makeAsteroids(int nAsteroids) { - Vector2d centre = new Vector2d(width / 2, height / 2); + Vector2d centre = new Vector2d(width / 2, height / 2, true); // assumes that the game object list is currently empty while (list.objects.size() < nAsteroids) { // choose a random position and velocity Vector2d s = new Vector2d(rand.nextDouble() * width, - rand.nextDouble() * height); - Vector2d v = new Vector2d(rand.nextGaussian(), rand.nextGaussian()); + rand.nextDouble() * height, true); + Vector2d v = new Vector2d(rand.nextGaussian(), rand.nextGaussian(), true); if (s.dist(centre) > safeRadius && v.mag() > 0.5) { // Asteroid a = new Asteroid(this, s, v, 0); @@ -201,17 +201,17 @@ public class GameState { public void makeShip() { ship = new Ship(this, - new Vector2d(width / 2, height / 2), - new Vector2d(), - new Vector2d(0, -1)); + new Vector2d(width / 2, height / 2, true), + new Vector2d(true), + new Vector2d(0, -1, true)); add(ship); } public void makeBotShip() { BotShip ship = new BotShip(this, - new Vector2d(width / 2, height / 2), - new Vector2d(), - new Vector2d(0, -1)); + new Vector2d(width / 2, height / 2, true), + new Vector2d(true), + new Vector2d(0, -1, true)); add(ship); } @@ -231,9 +231,9 @@ public class GameState { if (a.index < radii.length - 1) { // add some new ones at this position for (int i=0; i<nSplits; i++) { - Vector2d v1 = new Vector2d(a.v); + Vector2d v1 = new Vector2d(a.v, true); v1.add(rand.nextGaussian(), rand.nextGaussian()); - Asteroid a1 = new Asteroid(this, new Vector2d(a.s), v1, a.index + 1); + Asteroid a1 = new Asteroid(this, new Vector2d(a.s, true), v1, a.index + 1); list.add(a1); } } @@ -250,9 +250,9 @@ public class GameState { if (a.index < radii.length - 1) { // add some new ones at this position for (int i=0; i<nSplits; i++) { - Vector2d v1 = new Vector2d(a.v); + Vector2d v1 = new Vector2d(a.v, true); v1.add(rand.nextGaussian(), rand.nextGaussian()); - Asteroid a1 = new AsteroidTwoFace(this, new Vector2d(a.s), v1, a.index + 1); + Asteroid a1 = new AsteroidTwoFace(this, new Vector2d(a.s, true), v1, a.index + 1); list.add(a1); } } diff --git a/src/asteroids/Ship.java b/src/asteroids/Ship.java index 36928bbcad02949f09761abb98438ecb2a644428..fdcd2d41b9fedccd864f5412f5b0314d4714854d 100644 --- a/src/asteroids/Ship.java +++ b/src/asteroids/Ship.java @@ -41,9 +41,9 @@ public class Ship extends GameObject { public Ship(GameState game, Vector2d s, Vector2d v, Vector2d d) { - super(new Vector2d(s), new Vector2d(v)); + super(new Vector2d(s, true), new Vector2d(v, true)); this.game = game; - this.d = new Vector2d(d); + this.d = new Vector2d(d, true); } public Ship copy() { @@ -110,7 +110,7 @@ public class Ship extends GameObject { // System.out.println("Trying a missile launch"); if (releaseVelocity > maxRelease) { releaseVelocity = Math.max(releaseVelocity, missileMinVelocity * 2); - Missile m = new Missile(s, new Vector2d(0, 0)); + Missile m = new Missile(s, new Vector2d(0, 0, true)); releaseVelocity = Math.min(releaseVelocity, maxRelease); m.v.add(d, releaseVelocity); // make it clear the ship diff --git a/src/asteroids/View.java b/src/asteroids/View.java index 39fda6ed3a8a573c8b59e45987a243b712f8e448..e08c3e7df96504a25cd7949ea5d37f6f09a750e4 100644 --- a/src/asteroids/View.java +++ b/src/asteroids/View.java @@ -29,7 +29,7 @@ public class View extends JComponent { public View(GameState game) { this.game = game; scale = size.width - 2 * offset; - ship = new Ship(null, new Vector2d(), new Vector2d(), new Vector2d()); + ship = new Ship(null, new Vector2d(true), new Vector2d(true), new Vector2d(true)); } public void paintComponent(Graphics gx) { diff --git a/src/battle/NeuroShip.java b/src/battle/NeuroShip.java index 37a38268252ee56cf2dd2bb19b74a7a2ed9f2cfc..54db61a4da1bdc5d15b7dde2468d0255b9cc6ac3 100644 --- a/src/battle/NeuroShip.java +++ b/src/battle/NeuroShip.java @@ -46,8 +46,8 @@ public class NeuroShip extends GameObject { public NeuroShip(Vector2d s, Vector2d v, Vector2d d, int playerID) { - super(new Vector2d(s), new Vector2d(v)); - this.d = new Vector2d(d); + super(new Vector2d(s, true), new Vector2d(v, true)); + this.d = new Vector2d(d, true); this.playerID = playerID; } @@ -124,7 +124,7 @@ public class NeuroShip extends GameObject { // System.out.println("Trying a missile launch"); if (releaseVelocity > maxRelease) { releaseVelocity = Math.max(releaseVelocity, missileMinVelocity * 2); - Missile m = new Missile(s, new Vector2d(0, 0)); + Missile m = new Missile(s, new Vector2d(0, 0, true)); releaseVelocity = Math.min(releaseVelocity, maxRelease); m.v.add(d, releaseVelocity); // make it clear the ship diff --git a/src/battle/SimpleBattle.java b/src/battle/SimpleBattle.java index 78e892680ed287f63db999ae026a75101fa0aa9b..7c7999595ff5a30837fd16315d5359f5b8507961 100644 --- a/src/battle/SimpleBattle.java +++ b/src/battle/SimpleBattle.java @@ -79,9 +79,9 @@ public class SimpleBattle { } protected NeuroShip buildShip(int x, int y, int playerID) { - Vector2d position = new Vector2d(x, y); - Vector2d speed = new Vector2d(); - Vector2d direction = new Vector2d(1, 0); + Vector2d position = new Vector2d(x, y, true); + Vector2d speed = new Vector2d(true); + Vector2d direction = new Vector2d(1, 0, true); return new NeuroShip(position, speed, direction, playerID ); } @@ -206,7 +206,7 @@ public class SimpleBattle { NeuroShip currentShip = playerId == 0 ? s1 : s2; PlayerStats stats = this.stats.get(playerId); if (stats.nMissiles < nMissiles) { - Missile m = new Missile(s, new Vector2d(0, 0)); + Missile m = new Missile(s, new Vector2d(0, 0, true)); m.v.add(d, releaseVelocity); // make it clear the ship m.s.add(m.v, (currentShip.r() + missileRadius) * 1.5 / m.v.mag()); diff --git a/src/battle/controllers/Memo/MemoControllerUtils.java b/src/battle/controllers/Memo/MemoControllerUtils.java index c9881a5bb4e0499cd113812c46bcd42ac0f2eaaa..5d50411cb605fb0930c80070f525a1abd777512d 100644 --- a/src/battle/controllers/Memo/MemoControllerUtils.java +++ b/src/battle/controllers/Memo/MemoControllerUtils.java @@ -10,7 +10,7 @@ public class MemoControllerUtils { // returns turn value (-1, 0, 1) static double lookAt(Vector2d s, Vector2d d, Vector2d lookat, double rot_threshold) { - Vector2d desired_rot_vec = new Vector2d(lookat); + Vector2d desired_rot_vec = new Vector2d(lookat, true); desired_rot_vec.add(s, -1);