/** * Initialize this new projectile in a given world, at given position, with given propulsion, in * given direction, with given radius and with which weapon it is fired. * * @param position the position of the projectile * @param world the world the projectile is in * @param Propulsion the propulsion with what the projectile is launched * @param Direction the direction of the projectile * @param radius the radius of the projectile * @param weapon the weapon from which the projectile is fired * @post The yield of this new projectile equals the given propulsion | new.getYield() == * propulsion * @effect The weapon with which this new projectile will be fired equals the given weapon | * setWeapon(weapon) * @effect This new projectile is initialized as a moving object with given radius, given * direction, in given world and at the given position. | super(radius, position, world, * weapon.getMass(),Direction) */ public Projectile( Position position, World world, int Propulsion, double Direction, double radius, Weapon weapon) throws IllegalArgumentException, IllegalPositionException, IllegalWorldException { super(radius, position, world, weapon.getMass(), Direction); if (!isValidYield(Propulsion)) throw new IllegalArgumentException("not a valid yield"); this.setWeapon(weapon); this.yield = Propulsion; }
/** This method makes the worm select the next weapon. */ @Raw public void selectNextWeapon() { weapon.changeWeapon(); }
/** This method returns the name of the selected weapon. */ @Raw public String getSelectedWeapon() { return weapon.getName(); }
/** This method returns the mass of the projectile of the selected weapon. */ @Raw public int getMassProjectile() { return weapon.getMass(); }
/** * checks whether a weapon is a valid for this projectile. * * @param weapon the weapon to be checked * @return true if and only if the weapon is not null and the weapon is not terminated |result == * | (weapon != null && (!weapon.isTerminated())) */ @Raw public static boolean isValidWeapon(Weapon weapon) { return ((weapon != null) && (!weapon.isTerminated())); }