package com.pogs.runpogsrun.util;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
import com.brashmonkey.spriter.draw.AbstractDrawer;
import com.brashmonkey.spriter.draw.DrawInstruction;
import com.brashmonkey.spriter.file.FileLoader;
/**
* A drawer class which draws Spriter animations in a proper way inside LibGDX.
* @author Trixt0r
*/
public class SpriterDrawer extends AbstractDrawer<Sprite> {
public SpriteBatch batch;
public ShapeRenderer renderer;
public boolean drawNormals = false;
public SpriterDrawer(SpriteBatch batch){
this(null, batch);
}
public SpriterDrawer(FileLoader<Sprite> loader, SpriteBatch batch) {
super(loader);
this.batch = batch;
}
@SuppressWarnings("unchecked")
@Override
public void draw(DrawInstruction instruction) {
this.loader = instruction.loader;
draw(getFile(instruction.getRef()), instruction.getX(), instruction.getY(), instruction.getPivotX(),
instruction.getPivotY(), instruction.getScaleX(), instruction.getScaleY(), instruction.getAngle(),
instruction.getAlpha());
}
private void draw(Sprite sprite, float x, float y, float pivotX, float pivotY, float scaleX, float scaleY,
float angle, float alpha) {
if(sprite == null) return;
float newPivotX = (sprite.getWidth() * (pivotX));
float newX = x - newPivotX;
float newPivotY = (sprite.getHeight() * (pivotY));
float newY = y - newPivotY;
sprite.setX(newX);
sprite.setY(newY);
sprite.setOrigin(newPivotX, newPivotY);
sprite.setRotation(angle);
sprite.setColor(1f, 1f, 1f, alpha);
sprite.setScale(scaleX, scaleY);
sprite.draw(batch);
}
@Override
protected void drawLine(float x1, float y1, float x2, float y2) {
this.renderer.line(x1, y1, x2, y2);
}
@Override
protected void drawRectangle(float x, float y, float width, float height) {
this.renderer.rect(x, y, width, height);
}
@Override
protected void setDrawColor(float r, float g, float b, float a) {
this.renderer.setColor(r, g, b, a);
}
}