package vooga.towerdefense.action.actionlist;
import vooga.towerdefense.action.TargetedAction;
import vooga.towerdefense.attributes.Attribute;
/**
* Defines an action that executes periodically.
*
* @author Matthew Roy
* @author Zhen Gou
*
*/
public class PeriodicAction extends TargetedAction {
private Attribute myCoolDown;
private double myTimer;
public PeriodicAction(Attribute cd) {
myCoolDown = cd;
resetTimer();
}
public void update(double elapsedTime) {
if (isEnabled()) {
executeAction(elapsedTime);
}
}
/**
*
* @param elapsedTime
*/
@Override
public void executeAction(double elapsedTime) {
updateTimer(elapsedTime);
if (myTimer > myCoolDown.getValue()) {
updateFollowUpActions(elapsedTime);
resetTimer();
}
}
private void updateTimer(double elapsedTime) {
myTimer += elapsedTime;
}
private void resetTimer() {
myTimer = 0;
}
}