package vooga.towerdefense.factories.actionfactories; import vooga.towerdefense.action.Action; import vooga.towerdefense.action.movement.TrackTarget; import vooga.towerdefense.factories.ActionAnnotation; import vooga.towerdefense.gameelements.GameElement; /** * Factory that creates a MoveToTarget action, constructor needs a String * referencing which attribute to be used as move speed. * Also set boolean to indicate whether projectile should follow target upon hit, * or just move in a straight line in general direction. * * @author Xu Rui * */ public class TrackTargetFactory extends ActionFactory { private String myMoveSpeedReference; private int isTargetTracking; public TrackTargetFactory( @ActionAnnotation(name = "move speed", value = "attribute") String moveSpeedReference, @ActionAnnotation(name = "move speed", value = "attribute") String targetTracking) { super(); myMoveSpeedReference = moveSpeedReference; isTargetTracking = Integer.parseInt(targetTracking); } @Override protected Action buildAction(GameElement e) { return new TrackTarget(e.getCenter(), e.getCenter(), e .getAttributeManager().getAttribute(myMoveSpeedReference), (isTargetTracking == 1)); } }