package vooga.towerdefense.action.attack; import vooga.towerdefense.action.TargetedAction; import vooga.towerdefense.factories.elementfactories.GameElementFactory; import vooga.towerdefense.gameelements.GameElement; import vooga.towerdefense.model.GameMap; import util.Location; /** * Creates a projectile aimed at a target, target needs to be predefined by FindTarget action. * Projectile created continues the follow up actions. * * @author Matthew Roy * @author Zhen Gou * @author Xu Rui */ public class LaunchProjectile extends TargetedAction { private GameElementFactory myProjectileFactory; private Location myStart; private GameMap myMap; public LaunchProjectile (GameMap map, Location startLocation, GameElementFactory projectileFactory) { myProjectileFactory = projectileFactory; myStart = startLocation; myMap = map; } /** * Creates a projectile with action of shooting at targets. * * @param elapsedTime */ @Override public void executeAction (double elapsedTime) { for (GameElement target : getTargets()) { GameElement projectile = myProjectileFactory.createElement(myStart, target, true); myMap.addGameElement(projectile); } } }