package com.masseranolabs.snappyfrog;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.Batch;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.TimeUtils;
public class PowerBar extends Actor {
private Array<Sprite> frames;
private int currentFrame;
private long lastUpdateFrameTime;
private boolean activated;
private int holdCount;
public PowerBar(){
super();
activated = false;
frames = Game.getTextureAtlas().createSprites("gamescene/powerbar");
currentFrame = 0;
holdCount = 0;
lastUpdateFrameTime = 0;
}
public void activate(){
activated = true;
}
public int deactivate(){
activated = false;
return currentFrame;
}
private void updateFrame(){
// Limit frame update to every 1/20th of second
if (TimeUtils.nanoTime() - lastUpdateFrameTime > 25000000){
if (activated){
if (++currentFrame == frames.size){
if (holdCount++ != 4){
currentFrame = frames.size - 1;
}else{
currentFrame = 0;
holdCount = 0;
}
}
}else{
currentFrame = 0;
holdCount = 0;
}
lastUpdateFrameTime = TimeUtils.nanoTime();
}
}
@Override
public float getWidth() {
return frames.get(0).getWidth();
}
@Override
public float getHeight() {
return frames.get(0).getHeight();
}
@Override
public void act(float delta) {
super.act(delta);
updateFrame();
}
@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
Color color = getColor();
batch.setColor(color.r, color.g, color.b, color.a * parentAlpha);
batch.draw(frames.get(currentFrame), getX(), getY(), getOriginX(), getOriginY(),
getWidth(), getHeight(), getScaleX(), getScaleY(), getRotation());
}
}