/*
* Copyright (c) 2012. HappyDroids LLC, All rights reserved.
*/
package com.happydroids.droidtowers.actions;
public abstract class TimeDelayedAction extends Action {
private float currentTime;
private float updateFrequency;
private boolean shouldRepeat;
private boolean hasRunBefore;
private boolean paused;
public TimeDelayedAction(float updateFrequency) {
this(updateFrequency, true);
}
public TimeDelayedAction(float updateFrequency, boolean shouldRepeat) {
this.updateFrequency = updateFrequency;
currentTime = 0;
this.shouldRepeat = shouldRepeat;
}
public void act(float deltaTime) {
if (hasRunBefore && !shouldRepeat) {
return;
} else if (paused) {
return;
}
currentTime += deltaTime;
if (currentTime >= updateFrequency) {
currentTime = 0.0f;
hasRunBefore = true;
run();
}
}
public void reset() {
currentTime = 0.0f;
hasRunBefore = false;
markedForRemoval = false;
}
public boolean isPaused() {
return paused;
}
public void pause() {
paused = true;
}
public void unpause() {
paused = false;
}
public abstract void run();
public void setFrequency(float frequency) {
this.updateFrequency = frequency;
}
protected void scheduleToRunIn(float delay) {
currentTime = updateFrequency - delay;
}
}