From: Stefan F. <ste...@us...> - 2010-05-24 07:49:34
|
Update of /cvsroot/rails/18xx/rails/algorithms In directory sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv10363/rails/algorithms Modified Files: RevenueAdapter.java RevenueTrainRun.java RevenueBonus.java RevenueManager.java NetworkGraphBuilder.java Log Message: Activated 1851 Birmingam modifier and several minor beauty changes Index: RevenueBonus.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/algorithms/RevenueBonus.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** RevenueBonus.java 20 May 2010 19:57:01 -0000 1.3 --- RevenueBonus.java 24 May 2010 07:49:26 -0000 1.4 *************** *** 2,7 **** --- 2,9 ---- import java.util.Collection; + import java.util.HashMap; import java.util.List; import java.util.ArrayList; + import java.util.Map; import org.apache.log4j.Logger; *************** *** 172,175 **** --- 174,189 ---- } + public static Map<String, Integer> combineBonuses(Collection<RevenueBonus> bonuses){ + Map<String, Integer> combined = new HashMap<String, Integer>(); + for (RevenueBonus bonus:bonuses) { + String name = bonus.getName(); + if (combined.containsKey(name)) { + combined.put(name, combined.get(name) + bonus.getValue()); + } else { + combined.put(name, bonus.getValue()); + } + } + return combined; + } public static int getNumberNonSimpleBonuses(List<RevenueBonus> bonuses) { Index: RevenueTrainRun.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/algorithms/RevenueTrainRun.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** RevenueTrainRun.java 20 May 2010 23:13:21 -0000 1.5 --- RevenueTrainRun.java 24 May 2010 07:49:26 -0000 1.6 *************** *** 5,8 **** --- 5,9 ---- import java.util.ArrayList; import java.util.List; + import java.util.Map; import org.apache.log4j.Logger; *************** *** 121,132 **** // check revenueBonuses (complex) for (RevenueBonus bonus:revenueAdapter.getRevenueBonuses()) { if (bonus.checkComplexBonus(vertices, train.getRailsTrain(), revenueAdapter.getPhase())) { ! runPrettyPrint.append(" + "); ! runPrettyPrint.append(bonus.getName() + "(" + bonus.getValue() + ")"); ! multiple = prettyPrintNewLine(runPrettyPrint, multiple, initLength); } } ! runPrettyPrint.append("\n"); --- 122,137 ---- // check revenueBonuses (complex) + List<RevenueBonus> activeBonuses = new ArrayList<RevenueBonus>(); for (RevenueBonus bonus:revenueAdapter.getRevenueBonuses()) { if (bonus.checkComplexBonus(vertices, train.getRailsTrain(), revenueAdapter.getPhase())) { ! activeBonuses.add(bonus); } } ! Map<String,Integer> printBonuses = RevenueBonus.combineBonuses(activeBonuses); ! for (String bonusName:printBonuses.keySet()) { ! runPrettyPrint.append(" + "); ! runPrettyPrint.append(bonusName + "(" + printBonuses.get(bonusName) + ")"); ! multiple = prettyPrintNewLine(runPrettyPrint, multiple, initLength); ! } runPrettyPrint.append("\n"); Index: RevenueManager.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/algorithms/RevenueManager.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** RevenueManager.java 23 May 2010 18:10:44 -0000 1.4 --- RevenueManager.java 24 May 2010 07:49:26 -0000 1.5 *************** *** 58,62 **** Object modifier; try { ! modifier = (RevenueStaticModifier) Class.forName(className).newInstance(); } catch (Exception e) { throw new ConfigurationException(LocalText.getText( --- 58,62 ---- Object modifier; try { ! modifier = Class.forName(className).newInstance(); } catch (Exception e) { throw new ConfigurationException(LocalText.getText( Index: RevenueAdapter.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/algorithms/RevenueAdapter.java,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** RevenueAdapter.java 22 May 2010 18:42:26 -0000 1.20 --- RevenueAdapter.java 24 May 2010 07:49:26 -0000 1.21 *************** *** 82,88 **** public static RevenueAdapter createRevenueAdapter(GameManagerI gm, PublicCompanyI company, PhaseI phase) { ! MapManager mapManager = gm.getMapManager(); ! NetworkGraphBuilder nwGraph = new NetworkGraphBuilder(); ! nwGraph.generateGraph(mapManager.getHexesAsList()); RevenueAdapter ra = new RevenueAdapter(gm, nwGraph, company, phase); ra.populateFromRails(); --- 82,86 ---- public static RevenueAdapter createRevenueAdapter(GameManagerI gm, PublicCompanyI company, PhaseI phase) { ! NetworkGraphBuilder nwGraph = NetworkGraphBuilder.createMapGraph(gm); RevenueAdapter ra = new RevenueAdapter(gm, nwGraph, company, phase); ra.populateFromRails(); *************** *** 476,490 **** public int calculateRevenue(int startTrain, int finalTrain) { if (startTrain < 0 || finalTrain >= trains.size() || startTrain > finalTrain) { - optimalRun = null; return 0; } rc.initialPredictionRuns(startTrain, finalTrain); int value = rc.calculateRevenue(startTrain, finalTrain); - optimalRun = convertRcRun(rc.getOptimalRun()); return value; } public List<RevenueTrainRun> getOptimalRun() { return optimalRun; } --- 474,490 ---- public int calculateRevenue(int startTrain, int finalTrain) { + optimalRun = null; if (startTrain < 0 || finalTrain >= trains.size() || startTrain > finalTrain) { return 0; } rc.initialPredictionRuns(startTrain, finalTrain); int value = rc.calculateRevenue(startTrain, finalTrain); return value; } public List<RevenueTrainRun> getOptimalRun() { + if (optimalRun == null) { + optimalRun = convertRcRun(rc.getOptimalRun()); + } return optimalRun; } *************** *** 542,549 **** public String getOptimalRunPrettyPrint() { ! if (optimalRun == null) return "No Optimal Run"; StringBuffer runPrettyPrint = new StringBuffer(); ! for (RevenueTrainRun run:optimalRun) { runPrettyPrint.append(run.prettyPrint()); } --- 542,550 ---- public String getOptimalRunPrettyPrint() { ! List<RevenueTrainRun> listRuns = getOptimalRun(); ! if (listRuns== null) return "No Optimal Run"; StringBuffer runPrettyPrint = new StringBuffer(); ! for (RevenueTrainRun run:listRuns) { runPrettyPrint.append(run.prettyPrint()); } *************** *** 557,563 **** public void drawOptimalRunAsPath(HexMap map) { List<GeneralPath> pathList = new ArrayList<GeneralPath>(); ! if (optimalRun != null) { ! for (RevenueTrainRun run:optimalRun) { pathList.add(run.getAsPath(map)); } --- 558,566 ---- public void drawOptimalRunAsPath(HexMap map) { + List<RevenueTrainRun> listRuns = getOptimalRun(); + List<GeneralPath> pathList = new ArrayList<GeneralPath>(); ! if (listRuns != null) { ! for (RevenueTrainRun run:listRuns) { pathList.add(run.getAsPath(map)); } Index: NetworkGraphBuilder.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/algorithms/NetworkGraphBuilder.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** NetworkGraphBuilder.java 22 May 2010 18:42:26 -0000 1.12 --- NetworkGraphBuilder.java 24 May 2010 07:49:26 -0000 1.13 *************** *** 30,34 **** --- 30,36 ---- import rails.game.BaseToken; import rails.game.City; + import rails.game.GameManagerI; import rails.game.MapHex; + import rails.game.MapManager; import rails.game.PublicCompanyI; import rails.game.Station; *************** *** 43,62 **** Logger.getLogger(NetworkGraphBuilder.class.getPackage().getName()); ! private SimpleGraph<NetworkVertex, NetworkEdge> mapGraph; ! ! private Map<String, NetworkVertex> mapVertexes; private NetworkIterator iterator; ! public NetworkGraphBuilder() { ! this.mapGraph = null; ! } ! ! public void generateGraph(List<MapHex> mHexes ) { ! mapGraph = new SimpleGraph<NetworkVertex, NetworkEdge>(NetworkEdge.class); mapVertexes = new HashMap<String, NetworkVertex> (); ! for (MapHex hex:mHexes) { // get Tile TileI tile = hex.getCurrentTile(); --- 45,69 ---- Logger.getLogger(NetworkGraphBuilder.class.getPackage().getName()); ! private final SimpleGraph<NetworkVertex, NetworkEdge> mapGraph; ! ! private final Map<String, NetworkVertex> mapVertexes; private NetworkIterator iterator; ! private NetworkGraphBuilder() { mapGraph = new SimpleGraph<NetworkVertex, NetworkEdge>(NetworkEdge.class); mapVertexes = new HashMap<String, NetworkVertex> (); + } + + public static NetworkGraphBuilder createMapGraph(GameManagerI gameManager) { + NetworkGraphBuilder graphBuilder = new NetworkGraphBuilder(); + graphBuilder.generateGraph(gameManager.getMapManager(), gameManager.getRevenueManager()); + return graphBuilder; + } + + + public void generateGraph(MapManager mapManager, RevenueManager revenueManager) { ! for (MapHex hex:mapManager.getHexesAsList()) { // get Tile TileI tile = hex.getCurrentTile(); *************** *** 83,87 **** // loop over all maps and add tracks ! for (MapHex hex:mHexes) { // get Tile TileI tile = hex.getCurrentTile(); --- 90,94 ---- // loop over all maps and add tracks ! for (MapHex hex:mapManager.getHexesAsList()) { // get Tile TileI tile = hex.getCurrentTile(); *************** *** 146,149 **** --- 153,159 ---- } } + + // add graph modifiers + revenueManager.callGraphModifiers(this); } |