package matteroverdrive.animation;
import matteroverdrive.util.math.MOMathHelper;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Simeon on 5/31/2015.
*/
public class AnimationTimeline <T extends AnimationSegment>
{
boolean loopable;
int time;
int duration;
List<T> segments;
int lastSegmentBegin;
public AnimationTimeline(boolean loopable,int duration)
{
segments = new ArrayList<>();
this.loopable = loopable;
this.duration = duration;
}
public double getPercent()
{
return (double)time / (double)duration;
}
public void addSegment(T segment)
{
segments.add(segment);
}
public void addSegmentSequential(T segment)
{
segment.begin = lastSegmentBegin;
lastSegmentBegin += segment.length;
segments.add(segment);
}
public T getCurrentSegment()
{
for (T segment : segments) {
if (MOMathHelper.animationInRange(time, segment.begin, segment.length)) {
return segment;
}
}
return null;
}
public void tick()
{
if (time < duration)
{
time++;
} else if (loopable)
{
time = 0;
}
}
public void setTime(int time)
{
this.time = time;
}
}