public void paint(Graphics g2) {
        Controls.setTile(getTile());
        Graphics2D g = (Graphics2D) g2;
        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        if (map != null) {
            g.scale(scale, scale);
            g.drawImage(map, mapLoc.x, mapLoc.y, null);
            getTile().draw(g, mapLoc, Color.white);

            g.scale(1 / scale, 1 / scale);
            if (areaSelected) {
                g.setColor(Color.white);
                g.setComposite(AlphaComposite.getInstance(
                        AlphaComposite.SRC_OVER, 0.5f));
                Polygon area = new Polygon();
                if (TILES.size() == 2) {
                    int x1 = TILES.get(0).getScaledGX(mapLoc, scale);
                    int y1 = TILES.get(0).getScaledGY(mapLoc, scale);
                    int x2 = TILES.get(1).getScaledGX(mapLoc, scale);
                    int y2 = TILES.get(1).getScaledGY(mapLoc, scale);
                    area.addPoint(x1, y1);
                    area.addPoint(x2, y1);
                    area.addPoint(x2, y2);
                    area.addPoint(x1, y2);
                } else {
                    for (MapTile t : TILES) {
                        area.addPoint(t.getScaledGX(mapLoc, scale), t.getScaledGY(mapLoc, scale));
                    }
                }
                g.fill(area);
                g.setColor(Color.black);
                g.setComposite(AlphaComposite.getInstance(
                        AlphaComposite.SRC_OVER, 1.0f));
            } else {
                for (int i = 1; i < TILES.size(); i++) {
                    MapTile.drawLineBetween(g, mapLoc, scale, TILES.get(i - 1), TILES.get(i));
                }
            }
            for (MapTile t : TILES) {
                t.drawInScale(g, mapLoc, Color.red, scale);
            }
        }
    }