Enjoy. -- Martin
public class GraphicalDebugger
{
//:://////////////////////////////////////
//:: Static Methods
//:://////////////////////////////////////
public static void drawVehicleHitBox( StaticPosition center, Color color )
{
GraphicalDebugger.addRenderableSquareTurnScope( center, 18.0, color );
}
public static void drawMarker( StaticPosition center, Color color )
{
GraphicalDebugger.addRenderableSquareTurnScope( center, 2.0, color );
}
public static void drawRenderableLineSegment( Graphics2D console, RenderableLineSegment o )
{
console.setColor( o.color );
console.draw( new Line2D.Double( o.x1, o.y1, o.x2, o.y2 ) );
}
public static void drawRenderableRing( Graphics2D console, RenderableRing o )
{
console.setColor( o.color );
console.draw( new Ellipse2D.Double( o.x - o.radius, o.y - o.radius, o.radius + o.radius, o.radius + o.radius ) );
}
public static void drawRenderableSquare( Graphics2D console, RenderableSquare o )
{
console.setColor( o.color );
console.draw( new Rectangle2D.Double( o.x1, o.y1, o.x2 - o.x1, o.y2 - o.y1 ) );
new Rectangle2D.Double(o.x1, o.y1, o.x2, o.y2 );
}
public static void drawRenderableLineSegments( Graphics2D console, Queue<RenderableLineSegment> queue )
{
Iterator iterator = queue.iterator();
while( iterator.hasNext() )
{
GraphicalDebugger.drawRenderableLineSegment( console, (RenderableLineSegment)iterator.next() );
}
}
public static void drawRenderableRings( Graphics2D console, Queue<RenderableRing> queue )
{
Iterator iterator = queue.iterator();
while( iterator.hasNext() )
{
GraphicalDebugger.drawRenderableRing( console, (RenderableRing)iterator.next() );
}
}
public static void drawRenderableSquares( Graphics2D console, Queue<RenderableSquare> queue )
{
Iterator iterator = queue.iterator();
while( iterator.hasNext() )
{
GraphicalDebugger.drawRenderableSquare( console, (RenderableSquare)iterator.next() );
}
}
public static void traceVehicleMovement( SnapshotHistory history )
{
Snapshot previousSnapshot = history.getHistoricalSnapshot( 1 );
if( previousSnapshot != null )
{
if( history.getTime() - 1 == previousSnapshot.getTime() )
{
double distance = previousSnapshot.getDistance( history );
float heat = (float)(distance / Constraints.maxAbsVehicleVelocity);
GraphicalDebugger.addRenderableLineSegmentRoundScope( history, previousSnapshot, new Color( heat, heat, heat ) );
}
}
}
public static void traceBulletMovement( SnapshotHistory history )
{
Snapshot previousSnapshot = history.getHistoricalSnapshot( 1 );
if( previousSnapshot != null )
{
if( history.getTime() - 1 == previousSnapshot.getTime() )
{
double distance = previousSnapshot.getDistance( history );
float heat = (float)(distance / Constraints.maxBulletVelocity);
GraphicalDebugger.addRenderableLineSegmentRoundScope( history, previousSnapshot, new Color( (float)1.0, (float)0.0, heat ) );
}
}
}
public static void addRenderableLineSegmentBattleScope( StaticPosition a, StaticPosition b, Color c ) { renderableLineSegmentsBattle.add( new RenderableLineSegment( a, b, c ) ); }
public static void addRenderableLineSegmentRoundScope( StaticPosition a, StaticPosition b, Color c ) { renderableLineSegmentsRound.add( new RenderableLineSegment( a, b, c ) ); }
public static void addRenderableLineSegmentTurnScope( StaticPosition a, StaticPosition b, Color c ) { renderableLineSegmentsTurn.add( new RenderableLineSegment( a, b, c ) ); }
public static void addRenderableLineSegmentBattleScope( Line2D.Double line, Color c ) { renderableLineSegmentsBattle.add( new RenderableLineSegment( line, c ) ); }
public static void addRenderableLineSegmentRoundScope( Line2D.Double line, Color c ) { renderableLineSegmentsRound.add( new RenderableLineSegment( line, c ) ); }
public static void addRenderableLineSegmentTurnScope( Line2D.Double line, Color c ) { renderableLineSegmentsTurn.add( new RenderableLineSegment( line, c ) ); }
public static void addRenderableRingBattleScope( StaticPosition a, double b, Color c ) { renderableRingsBattle.add( new RenderableRing( a, b, c ) ); }
public static void addRenderableRingRoundScope( StaticPosition a, double b, Color c ) { renderableRingsRound.add( new RenderableRing( a, b, c ) ); }
public static void addRenderableRingTurnScope( StaticPosition a, double b, Color c ) { renderableRingsTurn.add( new RenderableRing( a, b, c ) ); }
public static void addRenderableSquareBattleScope( StaticPosition a, double b, Color c ) { renderableSquaresBattle.add( new RenderableSquare( a, b, c ) ); }
public static void addRenderableSquareRoundScope( StaticPosition a, double b, Color c ) { renderableSquaresRound.add( new RenderableSquare( a, b, c ) ); }
public static void addRenderableSquareTurnScope( StaticPosition a, double b, Color c ) { renderableSquaresTurn.add( new RenderableSquare( a, b, c ) ); }
public static void onRoundSetup()
{
renderableLineSegmentsRound.clear();
renderableRingsRound.clear();
renderableSquaresRound.clear();
}
public static void onTurnSetup()
{
renderableLineSegmentsTurn.clear();
renderableRingsTurn.clear();
renderableSquaresTurn.clear();
}
public static void onPaint( Graphics2D console )
{
GraphicalDebugger.drawRenderableLineSegments( console, renderableLineSegmentsBattle );
GraphicalDebugger.drawRenderableLineSegments( console, renderableLineSegmentsRound );
GraphicalDebugger.drawRenderableLineSegments( console, renderableLineSegmentsTurn );
GraphicalDebugger.drawRenderableRings( console, renderableRingsBattle );
GraphicalDebugger.drawRenderableRings( console, renderableRingsRound );
GraphicalDebugger.drawRenderableRings( console, renderableRingsTurn );
GraphicalDebugger.drawRenderableSquares( console, renderableSquaresBattle );
GraphicalDebugger.drawRenderableSquares( console, renderableSquaresRound );
GraphicalDebugger.drawRenderableSquares( console, renderableSquaresTurn );
}
//:://////////////////////////////////////
//:: Static Constants
//:://////////////////////////////////////
private static final Queue<RenderableLineSegment> renderableLineSegmentsBattle = new LinkedList<RenderableLineSegment>();
private static final Queue<RenderableLineSegment> renderableLineSegmentsRound = new LinkedList<RenderableLineSegment>();
private static final Queue<RenderableLineSegment> renderableLineSegmentsTurn = new LinkedList<RenderableLineSegment>();
private static final Queue<RenderableRing> renderableRingsBattle = new LinkedList<RenderableRing>();
private static final Queue<RenderableRing> renderableRingsRound = new LinkedList<RenderableRing>();
private static final Queue<RenderableRing> renderableRingsTurn = new LinkedList<RenderableRing>();
private static final Queue<RenderableSquare> renderableSquaresBattle = new LinkedList<RenderableSquare>();
private static final Queue<RenderableSquare> renderableSquaresRound = new LinkedList<RenderableSquare>();
private static final Queue<RenderableSquare> renderableSquaresTurn = new LinkedList<RenderableSquare>();
}