package org.codecranachan.asteroidpush.content.visuals; import org.codecranachan.asteroidpush.base.visuals.Representation; import org.codecranachan.asteroidpush.utils.Angle; import org.codecranachan.asteroidpush.utils.Arrow; import org.newdawn.slick.Color; import org.newdawn.slick.Graphics; public class ExhaustRepresentation implements Representation { public Arrow offset; private final float radius = 0.75f; public ExhaustRepresentation(Arrow arrow) { this.offset = arrow; } public void render(Graphics g) { g.setColor(Color.red); g.setLineWidth(1.0f); drawExhaust(g, 3f / 3f); g.setColor(Color.orange); g.setLineWidth(1.5f); drawExhaust(g, 2f / 3f); g.setColor(Color.yellow); g.setLineWidth(2.0f); drawExhaust(g, 1f / 3f); } private void drawExhaust(Graphics g, float size) { Angle rot = offset.getAngle(); Angle arc_start = rot.add(Angle.PI.mul(3f / 4f)); Angle arc_end = rot.sub(Angle.PI.mul(3f / 4f)); g.drawArc(offset.getTail().x - radius * size, offset.getTail().y - radius * size, radius * 2f * size, radius * 2f * size, arc_start.deg(), arc_end.deg()); } public int getPriority() { return 10; } }