diff --git a/OGP1718-Worms/src/worms/model/Projectile.java b/OGP1718-Worms/src/worms/model/Projectile.java index 86aeecd..ef84032 100644 --- a/OGP1718-Worms/src/worms/model/Projectile.java +++ b/OGP1718-Worms/src/worms/model/Projectile.java @@ -69,12 +69,11 @@ public abstract class Projectile extends GameObject { public static final double FORCE_TIME = 0.5; public Coordinate getJumpStep(double elapsedTime) { - // TODO zie naar worm hoe dit moet, implementatie moet wel anders! if (Double.isNaN(elapsedTime) || elapsedTime > this.getJumpTime(elapsedTime) || elapsedTime < 0) throw new IllegalArgumentException(); double velocity = this.jumpVelocity(); - + return Coordinate.create(getLocation().getX() + velocity * cos(getOrientation()) * elapsedTime, getLocation().getY() + velocity * sin(getOrientation()) * elapsedTime - 0.5 * G * pow(elapsedTime, 2) ); } @@ -84,7 +83,6 @@ public abstract class Projectile extends GameObject { } private double getJumpTime(double jumpTimeStep) { - // TODO zie naar worm hoe dit moet, implementatie moet wel anders! double v = jumpVelocity(); double time = jumpTimeStep; double a = getOrientation(); @@ -122,7 +120,6 @@ public abstract class Projectile extends GameObject { } public void jump(double jumpTimeStep) throws IllegalStateException { - // TODO zie naar worm hoe dit moet, implementatie moet wel anders! if (!canJump()) throw new IllegalStateException(); @@ -132,10 +129,9 @@ public abstract class Projectile extends GameObject { Coordinate newLocation; - //TODO extra parameter if: als de worm die wil schieten tegen een andere worm staat - // - //In case the initial position of a projectile already hits impassable terrain or a worm, the projectile will - //jump over a distance of 0.0 m. + //TODO extra parameter if: als de worm die wil schieten tegen een andere worm staat: + //TODO In case the initial position of a projectile already hits impassable terrain or a worm, the projectile will + //TODO jump over a distance of 0.0 m. if (getWorld().isAdjacent(getLocation(),getRadius())) { newLocation = Coordinate.create(getLocation().getX(), getLocation().getY()); } @@ -156,4 +152,13 @@ public abstract class Projectile extends GameObject { return Coordinate.create(wormLocation.getX() + cos(wormOrientation) * (wormRadius + radius), wormLocation.getY() + sin(wormOrientation) * (wormRadius + radius)); } + + //TODO hit impassable terrain (adjacent, partly or complete): projectile stays at that position + public void hit(Worm... worm){ + for (Worm wormA : worm){ + //TODO bazooka: hitpoints multiplied with force? + wormA.decreaseHitPoints(getHitPoints()); + } + terminate(); + } } \ No newline at end of file diff --git a/OGP1718-Worms/src/worms/model/Worm.java b/OGP1718-Worms/src/worms/model/Worm.java index bee43d4..9ccf998 100644 --- a/OGP1718-Worms/src/worms/model/Worm.java +++ b/OGP1718-Worms/src/worms/model/Worm.java @@ -1212,14 +1212,12 @@ public class Worm extends GameObject { // region firing and projectiles //=================================================================================== - private double[] locationProj; - private double massProj; - private long hitpointsProj; - private double forceProj; - public Projectile fire() { if (canFire()) { + //TODO location overlaps with 1 or more projectiles => firing worm is hit by one overlapping projectile + //TODO => method returns null + int random = ThreadLocalRandom.current().nextInt(2); if (random == 0) { @@ -1240,17 +1238,6 @@ public class Worm extends GameObject { return getActionPoints() >= 30 && getWorld() != null; } -// public void hitByRifle() { -// decreaseHitPoints(hitpointsProj); -// } -// -// public void hitByBazooka() { -// decreaseHitPoints(hitpointsProj * (long) forceProj); -// } - - // TODO We gaan maar 1 hit function gebruiken - - // =================================================================================== // endregion