private static mCard[] getNeededCards() {
        //read all card names and urls
        //mCard[] cardPlay = readFile(CARD_PICTURES);
        //mCard[] cardTokenLQ = readFile(CARD_PICTURES_TOKEN_LQ);

        ArrayList<mCard> CList = new ArrayList<mCard>();

        for (Card c : AllZone.getCardFactory()) {
            String url = c.getSVar("Picture");
            String[] URLs = url.split("\\\\");

            String iName = GuiDisplayUtil.cleanString(c.getImageName());
            CList.add(new mCard(iName + ".jpg", URLs[0]));
            //Log.error(iName + ".jpg" + "\t" + URLs[0]);

            if (URLs.length > 1)
                for (int j = 1; j < URLs.length; j++)
                    CList.add(new mCard(iName + j + ".jpg", URLs[j]));
        }

        ArrayList<mCard> list = new ArrayList<mCard>();
        File file;

        File base = ForgeProps.getFile(IMAGE_BASE);
        mCard[] a = {new mCard("", "")};
        mCard[] cardPlay = CList.toArray(a);
        //check to see which cards we already have
        for (int i = 0; i < cardPlay.length; i++) {
            file = new File(base, cardPlay[i].name);
            if (!file.exists())
                list.add(cardPlay[i]);
        }
//        base = ForgeProps.getFile(IMAGE_TOKEN);
//        for (int i = 0; i < cardTokenLQ.length; i++) {
//            file = new File(base, cardTokenLQ[i].name.substring(3, cardTokenLQ[i].name.length()));
//            if (!file.exists()) list.add(cardTokenLQ[i]);
//        }

        //return all card names and urls that are needed
        mCard[] out = new mCard[list.size()];
        list.toArray(out);

//    for(int i = 0; i < out.length; i++)
//      System.out.println(out[i].name +" " +out[i].url);
        return out;
    }//getNeededCards()