public TableauState (Tableau t) {
			dungeon = new Card[t.dungeon.length - 1];
			for (int i=0; i < dungeon.length; i++) {
				dungeon[i] = t.dungeon[i].top();
			}
			dungeonDeck = t.dungeon[t.dungeon.length - 1].size();
			for (CardPile p : t.heroes) {
				if (p == null)
					continue;
				if (p.size() == 0)
					continue;
				TreeMap<Integer, Integer> hero = new TreeMap<Integer, Integer>();
				for (Card c : p) {
					if (hero.containsKey(c.getLevel()))
						hero.put(c.getLevel(), 1 + hero.get(c.getLevel()));
					else
						hero.put(c.getLevel(), 1);
				}
				heroes.put(p.top(), hero);
			}
			for (CardPile p : t.village) 
				if (p != null && p.size() > 0)
					village.put(p.top(), p.size());

			trash = t.trash.size();
		}