package icpc.challenge.world; import java.awt.geom.Point2D; import java.io.Serializable; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; public class World implements Serializable { public static final double SIZE = 800.0D; public static final double TRAIL_LIMIT = 600.0D; public static final double BUMPER_SPEED_LIMIT = 24.0D; public static final double BUMPER_ACCEL_LIMIT = 8.0D; public static final double SLED_TURN_LIMIT = 0.5D; public static final double SLED_SPEED = 15.0D; public static final double PUCK_FRICTION = 1.0D; public static final int RED = 0; public static final int BLUE = 1; public static final int GREY = 2; public List<Puck> plist; public List<Bumper> blist; public List<Sled> slist; public ArrayList<LinkedList<Point2D>> trail; public World() { this.plist = new ArrayList(); this.blist = new ArrayList(); this.slist = new ArrayList(); this.trail = new ArrayList(); } public World duplicate() { Object localObject; World localWorld = new World(); for (Iterator localIterator = this.plist.iterator(); localIterator.hasNext(); ) { localObject = (Puck)localIterator.next(); localWorld.plist.add((Puck)((Puck)localObject).clone()); } for (localIterator = this.blist.iterator(); localIterator.hasNext(); ) { localObject = (Bumper)localIterator.next(); localWorld.blist.add((Bumper)((Bumper)localObject).clone()); } for (localIterator = this.slist.iterator(); localIterator.hasNext(); ) { localObject = (Sled)localIterator.next(); localWorld.slist.add((Sled)((Sled)localObject).clone()); } for (int i = 0; i < this.trail.size(); ++i) { localWorld.trail.add(new LinkedList()); localObject = ((LinkedList)this.trail.get(i)).listIterator(); while (((ListIterator)localObject).hasNext()) ((LinkedList)localWorld.trail.get(i)).add((Point2D)((Point2D)((ListIterator)localObject).next()).clone()); } return ((World)localWorld); } }