package chu.engine.anim; import org.newdawn.slick.opengl.Texture; import chu.engine.Game; public class Animation { private Texture texture; private int width; private int height; private int rows; private int columns; private int currentFrame; private float counter; private int length; private int offsetX; private int offsetY; protected Sprite sprite; protected float speed; //Time for each frame in seconds public Animation(Texture t) { texture = t; width = t.getImageWidth(); height = t.getImageHeight(); length = 1; rows = 1; columns = 1; speed = 0; currentFrame = 0; counter = 0; } public Animation(Texture t, int width, int height, int length, int columns, float speed) { this(t); this.width = width; this.height = height; this.columns = columns; this.rows = (length/columns)+1; this.length = length; this.speed = speed; this.offsetX = 0; this.offsetY = 0; this.currentFrame = 0; counter = 0; } public Animation(Texture t, int width, int height, int length, int columns, int offsetX, int offsetY, float speed) { this(t); this.width = width; this.height = height; this.columns = columns; this.rows = (length/columns)+1; this.length = length; this.speed = speed; this.offsetX = offsetX; this.offsetY = offsetY; this.currentFrame = 0; counter = 0; } public int getLength() { return length; } public int getFrame() { return currentFrame; } public int getWidth() { return width; } public int getHeight() { return height; } public int getRows() { return rows; } public int getColumns() { return columns; } public int getImageHeight() { return texture.getImageHeight(); } public int getImageWidth() { return texture.getImageWidth(); } public Texture getTexture() { return texture; } public void update() { if(speed != 0) counter += Game.getDeltaSeconds(); if(speed != 0 && counter > Math.abs(speed)) { increment(); counter = 0; } } public void increment() { if(speed > 0) { currentFrame += 1; if(currentFrame >= length) done(); } else { currentFrame -= 1; if(currentFrame < 0) done(); } } public void done() { if(speed > 0) currentFrame = 0; else currentFrame = columns-1; } public void setFrame(int i) { this.currentFrame = i; } public void setSpeed(float newSpeed) { speed = newSpeed; } public void setSprite(Sprite sprite2) { sprite = sprite2; } public Sprite getSprite() { return sprite; } public int getOffsetX() { return offsetX; } public int getOffsetY() { return offsetY; } public float getSpeed() { return speed; } }