package vooga.towerdefense.factories.waveactionfactories; import java.util.Map; import vooga.towerdefense.action.Action; import vooga.towerdefense.action.waveactions.WaveAction; import vooga.towerdefense.factories.ActionAnnotation; import vooga.towerdefense.factories.actionfactories.ActionFactory; import vooga.towerdefense.factories.elementfactories.GameElementFactory; import vooga.towerdefense.gameelements.GameElement; /** * This action factory builds a wave action. * * @author Zhen Gou * */ public class WaveActionFactory extends ActionFactory { private int myNumUnits; private int myCooldown; private GameElementFactory myFactory; public static Map<String, GameElementFactory> ourGEFactories; public WaveActionFactory(@ActionAnnotation(name = "number of units", value = "int") String numUnits, @ActionAnnotation(name = "cooldown", value = "int") String cooldown, @ActionAnnotation(name = "unit to spawn", value = "name of unit") String factory) { myNumUnits = Integer.parseInt(numUnits); myCooldown = Integer.parseInt(cooldown); myFactory = ourGEFactories.get(factory); } @Override protected Action buildAction(GameElement e) { return new WaveAction(myNumUnits, myCooldown, myFactory, getMap()); } }