package minizoo.c.action;
import minizoo.c.Entity;
import java.util.ArrayList;
public class Sequence extends Finite {
public static Sequence c(Finite... actions) {
return new Sequence(actions);
}
public Sequence(Finite... actions) {
this.actions = new ArrayList<Finite>();
for (Finite action : actions) {
this.actions.add(action);
}
}
@Override
public void setTarget(Entity target) {
super.setTarget(target);
for (Action action : actions) {
action.setTarget(target);
}
}
@Override
public void clear() {
super.clear();
for (Finite action : actions) {
action.clear();
}
}
@Override
public float getDuration() {
float accDuration = 0f;
for (Finite action : actions) {
accDuration += action.getDuration();
}
return accDuration;
}
@Override
public void update(float elapsed) {
float prevTime = time;
super.update(elapsed);
float accDuration = 0f;
for (Finite action : actions) {
if (time > accDuration && prevTime < accDuration) {
action.clear();
}
if (time > accDuration && prevTime > accDuration) {
action.update(elapsed);
}
accDuration += action.getDuration();
}
}
@Override
public void sample(float t) { }
ArrayList<Finite> actions;
}