package icpc.challenge.view; import icpc.challenge.world.AbstractView; import icpc.challenge.world.Bumper; import icpc.challenge.world.Puck; import icpc.challenge.world.Sled; import icpc.challenge.world.World; import java.awt.geom.Point2D; import java.awt.geom.Point2D.Double; import java.io.FileInputStream; import java.io.InputStream; import java.io.PrintStream; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class TurnPlayer { private static void usage(String paramString) { if (paramString != null) System.err.println(paramString); System.err.println("usage: TurnPlayer"); System.err.println(" [-turns <turn file>]"); System.err.println(" [-speed <multiplier>]"); System.exit(-1); } public static boolean waitUntil(long paramLong, double paramDouble1, double paramDouble2) { long l1 = System.currentTimeMillis() - paramLong; int i = 0; while (paramDouble1 > paramDouble2 * l1) { try { long l2 = ()(paramDouble1 - paramDouble2 * l1); i = 1; Thread.sleep(l2); } catch (InterruptedException localInterruptedException) { } l1 = System.currentTimeMillis() - paramLong; } return i; } public static void main(String[] paramArrayOfString) { Object localObject1 = System.in; double d1 = 1.0D; try { int i = 0; while (i < paramArrayOfString.length) { int j = 0; if ((paramArrayOfString[i].equals("-turns")) && (i + 1 < paramArrayOfString.length)) { localObject1 = new FileInputStream(paramArrayOfString[(i + 1)]); j = 2; } if ((paramArrayOfString[i].equals("-speed")) && (i + 1 < paramArrayOfString.length)) { d1 = Double.valueOf(paramArrayOfString[(i + 1)]).doubleValue(); j = 2; } if (j == 0) usage(null); i += j; } } catch (Exception localException1) { System.err.println(localException1); usage(null); } SimpleView localSimpleView = new SimpleView(); try { Scanner localScanner = new Scanner((InputStream)localObject1); long l = System.currentTimeMillis(); int k = localScanner.nextInt(); while (k >= 0) { Object localObject2; double d2; double d4; World localWorld = new World(); int i1 = localScanner.nextInt(); localWorld.plist.clear(); for (int i2 = 0; i2 < i1; ++i2) { localObject2 = new Puck(); d2 = localScanner.nextDouble(); d4 = localScanner.nextDouble(); ((Puck)localObject2).pos.setLocation(d2, d4); localScanner.nextDouble(); localScanner.nextDouble(); ((Puck)localObject2).color = localScanner.nextInt(); localWorld.plist.add(localObject2); } i1 = localScanner.nextInt(); localWorld.blist.clear(); for (i2 = 0; i2 < i1; ++i2) { localObject2 = new Bumper(); d2 = localScanner.nextDouble(); d4 = localScanner.nextDouble(); ((Bumper)localObject2).pos.setLocation(d2, d4); localScanner.nextDouble(); localScanner.nextDouble(); ((Bumper)localObject2).color = (i2 / 2); localWorld.blist.add(localObject2); } i1 = localScanner.nextInt(); localWorld.slist.clear(); localWorld.trail.clear(); for (i2 = 0; i2 < i1; ++i2) { localObject2 = new Sled(); LinkedList localLinkedList = new LinkedList(); double d3 = localScanner.nextDouble(); double d5 = localScanner.nextDouble(); ((Sled)localObject2).pos.setLocation(d3, d5); ((Sled)localObject2).setDir(localScanner.nextDouble()); ((Sled)localObject2).color = i2; localWorld.slist.add(localObject2); int i3 = localScanner.nextInt(); for (int i4 = 0; i4 < i3; ++i4) { d3 = localScanner.nextDouble(); d5 = localScanner.nextDouble(); localLinkedList.add(new Point2D.Double(d3, d5)); } localWorld.trail.add(localLinkedList); } localScanner.next(); localScanner.nextDouble(); localScanner.nextDouble(); localScanner.nextDouble(); localScanner.nextDouble(); localScanner.nextDouble(); localScanner.next(); localScanner.nextDouble(); localScanner.nextDouble(); localScanner.nextDouble(); localScanner.nextDouble(); localScanner.nextDouble(); waitUntil(l, k * 100, d1); localSimpleView.snapshot(k * 100, localWorld); k = localScanner.nextInt(); } } catch (Exception localException2) { System.err.println(localException2); localException2.printStackTrace(System.out); } } }