package icpc.challenge.view; import icpc.challenge.world.AbstractView; import icpc.challenge.world.Bumper; import icpc.challenge.world.Move; import icpc.challenge.world.Puck; import icpc.challenge.world.Sled; import icpc.challenge.world.World; import java.awt.geom.Point2D; import java.io.IOException; import java.io.PrintStream; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class TraceWriter implements AbstractView { private PrintStream output; public TraceWriter(String paramString) throws IOException { this.output = new PrintStream(paramString); } public void snapshot(double paramDouble, World paramWorld) { Object localObject; this.output.println("snapshot " + paramDouble); this.output.println(paramWorld.plist.size()); for (Iterator localIterator1 = paramWorld.plist.iterator(); localIterator1.hasNext(); ) { localObject = (Puck)localIterator1.next(); this.output.printf(" %.1f %.1f %d\n", new Object[] { Double.valueOf(((Puck)localObject).pos.getX()), Double.valueOf(((Puck)localObject).pos.getY()), Integer.valueOf(((Puck)localObject).color) }); } this.output.println(paramWorld.blist.size()); for (localIterator1 = paramWorld.blist.iterator(); localIterator1.hasNext(); ) { localObject = (Bumper)localIterator1.next(); this.output.printf(" %.1f %.1f %d\n", new Object[] { Double.valueOf(((Bumper)localObject).pos.getX()), Double.valueOf(((Bumper)localObject).pos.getY()), Integer.valueOf(((Bumper)localObject).color) }); } this.output.println(paramWorld.slist.size()); for (int i = 0; i < paramWorld.slist.size(); ++i) { localObject = (Sled)paramWorld.slist.get(i); LinkedList localLinkedList = (LinkedList)paramWorld.trail.get(i); this.output.printf(" %.1f %.1f %.2f %d\n", new Object[] { Double.valueOf(((Sled)localObject).pos.getX()), Double.valueOf(((Sled)localObject).pos.getY()), Double.valueOf(((Sled)localObject).getDir()), Integer.valueOf(((Sled)localObject).color) }); this.output.printf(" %d", new Object[] { Integer.valueOf(localLinkedList.size()) }); for (Point2D localPoint2D : localLinkedList) this.output.printf(" %.1f %.1f", new Object[] { Double.valueOf(localPoint2D.getX()), Double.valueOf(localPoint2D.getY()) }); this.output.printf("\n", new Object[0]); } } public void moveReport(double paramDouble, Move paramMove1, Move paramMove2) { } public void hitWall(double paramDouble1, int paramInt1, int paramInt2, double paramDouble2, double paramDouble3) { this.output.printf("hitWall %.3f %d %d %.3f %.3f\n", new Object[] { Double.valueOf(paramDouble1), Integer.valueOf(paramInt1), Integer.valueOf(paramInt2), Double.valueOf(paramDouble2), Double.valueOf(paramDouble3) }); } public void sledWrap(double paramDouble1, int paramInt1, int paramInt2, double paramDouble2) { this.output.printf("sledWrap %.3f %d %d %.3f\n", new Object[] { Double.valueOf(paramDouble1), Integer.valueOf(paramInt1), Integer.valueOf(paramInt2), Double.valueOf(paramDouble2) }); } public void sledLoop(double paramDouble, int paramInt, ArrayList<ArrayList<Point2D>> paramArrayList) { this.output.printf("sledLoop %.3f %d %d\n", new Object[] { Double.valueOf(paramDouble), Integer.valueOf(paramInt), Integer.valueOf(paramArrayList.size()) }); for (int i = 0; i < paramArrayList.size(); ++i) { this.output.printf("%d", new Object[] { Integer.valueOf(((ArrayList)paramArrayList.get(i)).size()) }); for (int j = 0; j < ((ArrayList)paramArrayList.get(i)).size(); ++j) { this.output.printf(" %.1f %.1f", new Object[] { Double.valueOf(((Point2D)((ArrayList)paramArrayList.get(i)).get(j)).getX()), Double.valueOf(((Point2D)((ArrayList)paramArrayList.get(i)).get(j)).getY()) }); } this.output.printf("\n", new Object[0]); } } public void collision(double paramDouble, int paramInt1, int paramInt2) { this.output.printf("collision %.3f %d %d\n", new Object[] { Double.valueOf(paramDouble), Integer.valueOf(paramInt1), Integer.valueOf(paramInt2) }); } public void ready() { } public void shutdown() { this.output.printf("end\n", new Object[0]); this.output.close(); } public void finished() { } }