package icpc.challenge.link;
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.awt.geom.Point2D.Double;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class TextCoder
{
public static void encodeWorld(PrintStream paramPrintStream, World paramWorld)
{
Object localObject;
paramPrintStream.println(paramWorld.plist.size());
for (Iterator localIterator1 = paramWorld.plist.iterator(); localIterator1.hasNext(); ) { localObject = (Puck)localIterator1.next();
paramPrintStream.printf(" %.2f %.2f %.2f %.2f %d\n", new Object[] { Double.valueOf(((Puck)localObject).pos.getX()), Double.valueOf(((Puck)localObject).pos.getY()), Double.valueOf(((Puck)localObject).vel.getX()), Double.valueOf(((Puck)localObject).vel.getY()), Integer.valueOf(((Puck)localObject).color) });
}
paramPrintStream.println(paramWorld.blist.size());
for (localIterator1 = paramWorld.blist.iterator(); localIterator1.hasNext(); ) { localObject = (Bumper)localIterator1.next();
paramPrintStream.printf(" %.2f %.2f %.2f %.2f %d\n", new Object[] { Double.valueOf(((Bumper)localObject).pos.getX()), Double.valueOf(((Bumper)localObject).pos.getY()), Double.valueOf(((Bumper)localObject).vel.getX()), Double.valueOf(((Bumper)localObject).vel.getY()), Integer.valueOf(((Bumper)localObject).color) });
}
paramPrintStream.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);
paramPrintStream.printf(" %.2f %.2f %.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) });
paramPrintStream.printf(" %d", new Object[] { Integer.valueOf(localLinkedList.size()) });
for (Point2D localPoint2D : localLinkedList)
paramPrintStream.printf(" %.2f %.2f", new Object[] { Double.valueOf(localPoint2D.getX()), Double.valueOf(localPoint2D.getY()) });
paramPrintStream.printf("\n", new Object[0]);
}
}
public static void decodeWorld(Scanner paramScanner, World paramWorld)
throws IOException
{
Object localObject;
double d1;
double d3;
int i = paramScanner.nextInt();
paramWorld.plist.clear();
for (int j = 0; j < i; ++j) {
localObject = new Puck();
d1 = paramScanner.nextDouble();
d3 = paramScanner.nextDouble();
((Puck)localObject).pos.setLocation(d1, d3);
d1 = paramScanner.nextDouble();
d3 = paramScanner.nextDouble();
((Puck)localObject).vel.setLocation(d1, d3);
((Puck)localObject).color = paramScanner.nextInt();
paramWorld.plist.add(localObject);
}
i = paramScanner.nextInt();
paramWorld.blist.clear();
for (j = 0; j < i; ++j) {
localObject = new Bumper();
d1 = paramScanner.nextDouble();
d3 = paramScanner.nextDouble();
((Bumper)localObject).pos.setLocation(d1, d3);
d1 = paramScanner.nextDouble();
d3 = paramScanner.nextDouble();
((Bumper)localObject).vel.setLocation(d1, d3);
((Bumper)localObject).color = paramScanner.nextInt();
paramWorld.blist.add(localObject);
}
i = paramScanner.nextInt();
paramWorld.slist.clear();
paramWorld.trail.clear();
for (j = 0; j < i; ++j)
{
localObject = new Sled();
LinkedList localLinkedList = new LinkedList();
double d2 = paramScanner.nextDouble();
double d4 = paramScanner.nextDouble();
((Sled)localObject).pos.setLocation(d2, d4);
((Sled)localObject).setDir(paramScanner.nextDouble());
((Sled)localObject).color = paramScanner.nextInt();
paramWorld.slist.add(localObject);
int k = paramScanner.nextInt();
for (int l = 0; l < k; ++l) {
d2 = paramScanner.nextDouble();
d4 = paramScanner.nextDouble();
localLinkedList.add(new Point2D.Double(d2, d4));
}
paramWorld.trail.add(localLinkedList);
}
}
public static void encodeMove(PrintStream paramPrintStream, Move paramMove)
{
paramPrintStream.printf("%.2f %.2f %.2f %.2f %.2f\n", new Object[] { Double.valueOf(paramMove.accel0.getX()), Double.valueOf(paramMove.accel0.getY()), Double.valueOf(paramMove.accel1.getX()), Double.valueOf(paramMove.accel1.getY()), Double.valueOf(paramMove.dangle) });
}
public static void decodeMove(Scanner paramScanner, Move paramMove)
throws IOException
{
double d1 = paramScanner.nextDouble();
double d2 = paramScanner.nextDouble();
paramMove.accel0.setLocation(d1, d2);
d1 = paramScanner.nextDouble();
d2 = paramScanner.nextDouble();
paramMove.accel1.setLocation(d1, d2);
paramMove.dangle = paramScanner.nextDouble();
}
}