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 ArrowRepresentation implements Representation {
private final float radius = 0.1f;
public Arrow arrow;
public Color color;
public ArrowRepresentation(Arrow arrow, Color color) {
this.arrow = arrow;
this.color = color;
}
public void render(Graphics g) {
g.setColor(color);
g.setLineWidth(2.0f);
float arc_start = this.arrow.getAngle().rad() + MathUtils.PI / 3;
float arc_end = this.arrow.getAngle().rad() - MathUtils.PI / 3;
g.drawArc(arrow.getTail().x - radius,
arrow.getTail().y - radius,
radius * 2f,
radius * 2f,
Trigonometry.radToDeg(arc_start),
Trigonometry.radToDeg(arc_end));
float tip_x = arrow.getTail().x + MathUtils.sqrt(2 * radius * radius)
* 1.5f;
float tip_y = arrow.getTail().y;
g.drawLine(arrow.getTail().x + MathUtils.cos(arc_start) * radius,
arrow.getTail().y + MathUtils.sin(arc_start) * radius,
tip_x,
tip_y);
g.drawLine(arrow.getTail().x + MathUtils.cos(arc_end) * radius,
arrow.getTail().y + MathUtils.sin(arc_end) * radius,
tip_x,
tip_y);
}
public int getPriority() {
return 0;
}
}