package games.strategy.engine.stats; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Iterator; import games.strategy.engine.data.GameData; import games.strategy.engine.data.PlayerID; import games.strategy.engine.data.Resource; import games.strategy.triplea.Constants; /** * Returns an intelligent formatter, and returns value for alliances * by summing our value for all players in the alliance. */ public abstract class AbstractStat implements IStat { protected static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("##0.##"); @Override public double getValue(final String alliance, final GameData data) { final Iterator<PlayerID> iter = data.getAllianceTracker().getPlayersInAlliance(alliance).iterator(); double rVal = 0; while (iter.hasNext()) { final PlayerID player = iter.next(); rVal += getValue(player, data); } return rVal; } @Override public NumberFormat getFormatter() { return DECIMAL_FORMAT; } protected static Resource getResourcePUs(final GameData data) { Resource pus = null; try { data.acquireReadLock(); pus = data.getResourceList().getResource(Constants.PUS); } finally { data.releaseReadLock(); } return pus; } }