/** * Constructs a new game. * * @param web <code>true</code> if this game is meant to be an applet (which can be played * online), and <code>false</code> otherwise. Note: this doesn't work yet. */ public Game() { Game.applet = false; canvas = new Canvas(this); solidShapes = Collections.newSetFromMap(new ConcurrentHashMap<Shape, Boolean>()); allShapes = Collections.newSetFromMap(new ConcurrentHashMap<Shape, Boolean>()); // TODO: sort out which data structures actually have to support concurrency layerContents = new ConcurrentHashMap<Integer, java.util.List<Shape>>(); layers = new CopyOnWriteArrayList<Integer>(); layerOf = new ConcurrentHashMap<Shape, Integer>(); counters = new ArrayList<Counter>(); Mouse mouse = new Mouse(); if (applet) { addMouseMotionListener(mouse); addMouseListener(mouse); addKeyListener(new Keyboard()); } else { frame = new JFrame(); frame.addMouseMotionListener(mouse); frame.addMouseListener(mouse); frame.addKeyListener(new Keyboard()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } setDefaults(); }