package org.codecranachan.asteroidpush.content.visuals;
import org.codecranachan.asteroidpush.base.visuals.Representation;
import org.codecranachan.asteroidpush.utils.Arrow;
import org.codecranachan.asteroidpush.utils.Trigonometry;
import org.jbox2d.common.MathUtils;
import org.newdawn.slick.Color;
import org.newdawn.slick.Graphics;
public class SpinRepresentation implements Representation {
private final float radius = 0.2f;
public Arrow arrow;
public Color color;
public SpinRepresentation(Arrow arrow, Color color) {
this.arrow = arrow;
this.color = color;
}
public void render(Graphics g) {
g.setColor(color);
g.setLineWidth(2.0f);
drawArrow(g, MathUtils.PI / 4f, MathUtils.HALF_PI);
drawArrow(g, MathUtils.PI * 5f / 4f, MathUtils.HALF_PI);
}
private void drawArrow(Graphics g, float start, float arc_len) {
g.drawArc(arrow.getTail().x - radius,
arrow.getTail().y - radius,
radius * 2f,
radius * 2f,
Trigonometry.radToDeg(start),
Trigonometry.radToDeg(start + arc_len));
float tip_x = arrow.getTail().x + MathUtils.cos(start) * radius;
float tip_y = arrow.getTail().y + MathUtils.sin(start) * radius;
float tail_x_1 = arrow.getTail().x
+ MathUtils.cos(start + arc_len * 2f / 10f) * radius * 0.8f;
float tail_y_1 = arrow.getTail().y
+ MathUtils.sin(start + arc_len * 2f / 10f) * radius * 0.8f;
g.drawLine(tip_x, tip_y, tail_x_1, tail_y_1);
float tail_x_2 = arrow.getTail().x
+ MathUtils.cos(start + arc_len * 2f / 10f) * radius * 1.2f;
float tail_y_2 = arrow.getTail().y
+ MathUtils.sin(start + arc_len * 2f / 10f) * radius * 1.2f;
g.drawLine(tip_x, tip_y, tail_x_2, tail_y_2);
}
public int getPriority() {
return 0;
}
}