package com.uwsoft.editor.view.ui.widget.actors;
import com.badlogic.gdx.graphics.g2d.Animation;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.uwsoft.editor.renderer.resources.IResourceRetriever;
/**
* Created by CyberJoe on 6/18/2015.
*/
public class SpriteAnimationActor extends Actor {
private String animationName;
private IResourceRetriever rm;
private Animation animation;
private float stateTime = 0;
private int fps;
private boolean paused = false;
public SpriteAnimationActor(String animationName, IResourceRetriever rm) {
this.animationName = animationName;
this.rm = rm;
animation = new Animation(1/24f, rm.getSpriteAnimation(animationName).getRegions());
animation.setPlayMode(Animation.PlayMode.LOOP);
TextureRegion region = animation.getKeyFrame(stateTime);
setWidth(region.getRegionWidth());
setHeight(region.getRegionHeight());
}
@Override
public void draw(Batch batch, float parentAlpha) {
TextureRegion region = animation.getKeyFrame(stateTime);
setWidth(region.getRegionWidth());
setHeight(region.getRegionHeight());
batch.setColor(getColor());
batch.draw(region, getX(), getY(), getOriginX(), getOriginY(), getWidth(), getHeight(), getScaleX(), getScaleY(), getRotation());
}
@Override
public void act(float delta) {
if(paused) return;
stateTime+=delta;
}
public void setFPS(int fps) {
this.fps = fps;
animation.setFrameDuration(1f/fps);
}
public int getFPS() {
return fps;
}
public boolean isPaused() {
return paused;
}
public void setPaused(boolean paused) {
this.paused = paused;
}
}