From: Stefan F. <ste...@us...> - 2012-03-17 06:59:45
|
data/1851/Game.xml | 2 data/1880/Game.xml | 2 data/18EU/Game.xml | 2 rails/game/specific/_1851/OffBoardRevenueModifier.java | 54 ------- rails/game/specific/_1851/OffBoardRevenueModifier_1851.java | 54 +++++++ rails/game/specific/_1880/OffBoardRevenueModifier.java | 61 -------- rails/game/specific/_1880/OffBoardRevenueModifier_1880.java | 61 ++++++++ rails/game/specific/_1880/PublicCompany_1880.java | 16 +- rails/game/specific/_18EU/OffBoardRevenueModifier.java | 91 ------------ rails/game/specific/_18EU/OffBoardRevenueModifier_18EU.java | 91 ++++++++++++ 10 files changed, 218 insertions(+), 216 deletions(-) New commits: commit c04dd80f6970197d123f1493f4f3c0d5f602d560 Author: Stefan Frey <ste...@we...> Date: Sat Mar 17 07:58:42 2012 +0100 Added missing check for running company to 1880 public company modifier Changed OffBoardRevenueModifier names that the contain game name diff --git a/data/1851/Game.xml b/data/1851/Game.xml index b11fe1f..ea507f0 100644 --- a/data/1851/Game.xml +++ b/data/1851/Game.xml @@ -116,7 +116,7 @@ </Phase> </Component> <Component name="RevenueManager" class="rails.algorithms.RevenueManager"> - <Modifier class="rails.game.specific._1851.OffBoardRevenueModifier" /> + <Modifier class="rails.game.specific._1851.OffBoardRevenueModifier_1851" /> <Modifier class="rails.game.specific._1851.BirminghamTileModifier" /> </Component> </ComponentManager> \ No newline at end of file diff --git a/data/1880/Game.xml b/data/1880/Game.xml index 47f58c5..3e738ec 100644 --- a/data/1880/Game.xml +++ b/data/1880/Game.xml @@ -163,7 +163,7 @@ </Phase> </Component> <Component name="RevenueManager" class="rails.algorithms.RevenueManager"> - <Modifier class="rails.game.specific._1880.OffBoardRevenueModifier"/> + <Modifier class="rails.game.specific._1880.OffBoardRevenueModifier_1880"/> </Component> </ComponentManager> \ No newline at end of file diff --git a/data/18EU/Game.xml b/data/18EU/Game.xml index 01e39f5..4ac5fff 100644 --- a/data/18EU/Game.xml +++ b/data/18EU/Game.xml @@ -131,7 +131,7 @@ </Phase> </Component> <Component name="RevenueManager" class="rails.algorithms.RevenueManager"> - <Modifier class="rails.game.specific._18EU.OffBoardRevenueModifier"/> + <Modifier class="rails.game.specific._18EU.OffBoardRevenueModifier_18EU"/> <Modifier class="rails.game.specific._18EU.PullmanRevenueModifier"/> </Component> </ComponentManager> \ No newline at end of file diff --git a/rails/game/specific/_1851/OffBoardRevenueModifier.java b/rails/game/specific/_1851/OffBoardRevenueModifier.java deleted file mode 100644 index 6956f3c..0000000 --- a/rails/game/specific/_1851/OffBoardRevenueModifier.java +++ /dev/null @@ -1,54 +0,0 @@ -package rails.game.specific._1851; - -import java.util.HashSet; -import java.util.Set; - -import rails.algorithms.NetworkVertex; -import rails.algorithms.RevenueAdapter; -import rails.algorithms.RevenueBonus; -import rails.algorithms.RevenueStaticModifier; -import rails.game.Station; - -public class OffBoardRevenueModifier implements RevenueStaticModifier { - - private static final int BONUS_VALUE = 10; - - public boolean modifyCalculator(RevenueAdapter revenueAdapter) { - // 1. get all off-board type stations and all other stations - Set<NetworkVertex> offBoard = new HashSet<NetworkVertex>(); - Set<NetworkVertex> otherStations = new HashSet<NetworkVertex>(); - for (NetworkVertex vertex:revenueAdapter.getVertices()) { - if (vertex.isStation()) { - if (vertex.getStation().getType().equals(Station.OFF_MAP_AREA)){ - offBoard.add(vertex); - } else { - otherStations.add(vertex); - } - } - } - // 2. combine those to revenueBonuses - // always two offboard areas and one other - Set<NetworkVertex> destOffBoard = new HashSet<NetworkVertex>(offBoard); - RevenueBonus bonus; - for (NetworkVertex offA:offBoard) { - destOffBoard.remove(offA); - for (NetworkVertex offB:destOffBoard) { - bonus = new RevenueBonus(2*BONUS_VALUE, "Red-To-Red"); - bonus.addVertex(offA); bonus.addVertex(offB);; - revenueAdapter.addRevenueBonus(bonus); - for (NetworkVertex station:otherStations) { - bonus = new RevenueBonus(BONUS_VALUE, "Red-To-Red"); - bonus.addVertex(offA); bonus.addVertex(offB); bonus.addVertex(station); - revenueAdapter.addRevenueBonus(bonus); - } - } - } - // no additional text required - return false; - } - - public String prettyPrint(RevenueAdapter revenueAdapter) { - // nothing to print - return null; - } -} diff --git a/rails/game/specific/_1851/OffBoardRevenueModifier_1851.java b/rails/game/specific/_1851/OffBoardRevenueModifier_1851.java new file mode 100644 index 0000000..5b93edb --- /dev/null +++ b/rails/game/specific/_1851/OffBoardRevenueModifier_1851.java @@ -0,0 +1,54 @@ +package rails.game.specific._1851; + +import java.util.HashSet; +import java.util.Set; + +import rails.algorithms.NetworkVertex; +import rails.algorithms.RevenueAdapter; +import rails.algorithms.RevenueBonus; +import rails.algorithms.RevenueStaticModifier; +import rails.game.Station; + +public class OffBoardRevenueModifier_1851 implements RevenueStaticModifier { + + private static final int BONUS_VALUE = 10; + + public boolean modifyCalculator(RevenueAdapter revenueAdapter) { + // 1. get all off-board type stations and all other stations + Set<NetworkVertex> offBoard = new HashSet<NetworkVertex>(); + Set<NetworkVertex> otherStations = new HashSet<NetworkVertex>(); + for (NetworkVertex vertex:revenueAdapter.getVertices()) { + if (vertex.isStation()) { + if (vertex.getStation().getType().equals(Station.OFF_MAP_AREA)){ + offBoard.add(vertex); + } else { + otherStations.add(vertex); + } + } + } + // 2. combine those to revenueBonuses + // always two offboard areas and one other + Set<NetworkVertex> destOffBoard = new HashSet<NetworkVertex>(offBoard); + RevenueBonus bonus; + for (NetworkVertex offA:offBoard) { + destOffBoard.remove(offA); + for (NetworkVertex offB:destOffBoard) { + bonus = new RevenueBonus(2*BONUS_VALUE, "Red-To-Red"); + bonus.addVertex(offA); bonus.addVertex(offB);; + revenueAdapter.addRevenueBonus(bonus); + for (NetworkVertex station:otherStations) { + bonus = new RevenueBonus(BONUS_VALUE, "Red-To-Red"); + bonus.addVertex(offA); bonus.addVertex(offB); bonus.addVertex(station); + revenueAdapter.addRevenueBonus(bonus); + } + } + } + // no additional text required + return false; + } + + public String prettyPrint(RevenueAdapter revenueAdapter) { + // nothing to print + return null; + } +} diff --git a/rails/game/specific/_1880/OffBoardRevenueModifier.java b/rails/game/specific/_1880/OffBoardRevenueModifier.java deleted file mode 100644 index 28b34e8..0000000 --- a/rails/game/specific/_1880/OffBoardRevenueModifier.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * - */ -package rails.game.specific._1880; - -import java.util.HashSet; -import java.util.Set; - -import org.apache.log4j.Logger; - -import rails.algorithms.NetworkVertex; -import rails.algorithms.RevenueAdapter; -import rails.algorithms.RevenueBonus; -import rails.algorithms.RevenueStaticModifier; -import rails.game.Station; - -/** - * @author Martin - * - */ -public class OffBoardRevenueModifier implements RevenueStaticModifier { - - - protected static Logger log = - Logger.getLogger(OffBoardRevenueModifier.class.getPackage().getName()); - - public boolean modifyCalculator(RevenueAdapter revenueAdapter) { - - // 1. get the two off-board type stations (Russia and Wladiwostok) - Set<NetworkVertex> offBoard = new HashSet<NetworkVertex>(); - for (NetworkVertex vertex:revenueAdapter.getVertices()) { // We just need the two offboard Cities - if (vertex.isStation() && ((vertex.getStation().getName().equals("Russia") ||(vertex.getStation().getName().equals("Wladiwostok"))))) { - offBoard.add(vertex); - } - } - // 2. get all base tokens (=> start vertices) - Set<NetworkVertex> bases = revenueAdapter.getStartVertices(); - - // 3. combine those to revenueBonuses - // always two offboard areas and one base - Set<NetworkVertex> destOffBoard = new HashSet<NetworkVertex>(offBoard); - for (NetworkVertex offA:offBoard) { - destOffBoard.remove(offA); - for (NetworkVertex offB:destOffBoard) { - for (NetworkVertex base:bases) { - RevenueBonus bonus = new RevenueBonus(50, "Red-To-Red"); - bonus.addVertex(offA); bonus.addVertex(offB); bonus.addVertex(base); - revenueAdapter.addRevenueBonus(bonus); - } - } - } - - return false; - } - - public String prettyPrint(RevenueAdapter revenueAdapter) { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/rails/game/specific/_1880/OffBoardRevenueModifier_1880.java b/rails/game/specific/_1880/OffBoardRevenueModifier_1880.java new file mode 100644 index 0000000..7580a5c --- /dev/null +++ b/rails/game/specific/_1880/OffBoardRevenueModifier_1880.java @@ -0,0 +1,61 @@ +/** + * + */ +package rails.game.specific._1880; + +import java.util.HashSet; +import java.util.Set; + +import org.apache.log4j.Logger; + +import rails.algorithms.NetworkVertex; +import rails.algorithms.RevenueAdapter; +import rails.algorithms.RevenueBonus; +import rails.algorithms.RevenueStaticModifier; +import rails.game.Station; + +/** + * @author Martin + * + */ +public class OffBoardRevenueModifier_1880 implements RevenueStaticModifier { + + + protected static Logger log = + Logger.getLogger(OffBoardRevenueModifier_1880.class.getPackage().getName()); + + public boolean modifyCalculator(RevenueAdapter revenueAdapter) { + + // 1. get the two off-board type stations (Russia and Wladiwostok) + Set<NetworkVertex> offBoard = new HashSet<NetworkVertex>(); + for (NetworkVertex vertex:revenueAdapter.getVertices()) { // We just need the two offboard Cities + if (vertex.isStation() && ((vertex.getStation().getName().equals("Russia") ||(vertex.getStation().getName().equals("Wladiwostok"))))) { + offBoard.add(vertex); + } + } + // 2. get all base tokens (=> start vertices) + Set<NetworkVertex> bases = revenueAdapter.getStartVertices(); + + // 3. combine those to revenueBonuses + // always two offboard areas and one base + Set<NetworkVertex> destOffBoard = new HashSet<NetworkVertex>(offBoard); + for (NetworkVertex offA:offBoard) { + destOffBoard.remove(offA); + for (NetworkVertex offB:destOffBoard) { + for (NetworkVertex base:bases) { + RevenueBonus bonus = new RevenueBonus(50, "Red-To-Red"); + bonus.addVertex(offA); bonus.addVertex(offB); bonus.addVertex(base); + revenueAdapter.addRevenueBonus(bonus); + } + } + } + + return false; + } + + public String prettyPrint(RevenueAdapter revenueAdapter) { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/rails/game/specific/_1880/PublicCompany_1880.java b/rails/game/specific/_1880/PublicCompany_1880.java index 0b8e369..887d362 100644 --- a/rails/game/specific/_1880/PublicCompany_1880.java +++ b/rails/game/specific/_1880/PublicCompany_1880.java @@ -220,19 +220,21 @@ public class PublicCompany_1880 extends PublicCompany implements RevenueStaticMo } public boolean modifyCalculator(RevenueAdapter revenueAdapter) { - // check if the running company is a minor - if (revenueAdapter.getCompany().getTypeName().equals("Minor")) { - - // add the current Available train from the IPO and not the last train in Use - TrainManager trainManager=gameManager.getTrainManager(); - revenueAdapter.addTrainByString(trainManager.getAvailableNewTrains().get(0).getName()); + // check if running company is this company, otherwise quit + if (revenueAdapter.getCompany() != this) return false; + + // check if company is a minor + if (this.getTypeName().equals("Minor")) { + // add the current Available train from the IPO and not the last train in Use + TrainManager trainManager=gameManager.getTrainManager(); + revenueAdapter.addTrainByString(trainManager.getAvailableNewTrains().get(0).getName()); } else { int additionalStockRevenue = revenueAdapter.getCompany().getCurrentSpace().getType().hasAddRevenue()*10; RevenueBonus bonus = new RevenueBonus(additionalStockRevenue, "StockPosition"); revenueAdapter.addRevenueBonus(bonus); } + // no text needed return false; - } /* (non-Javadoc) diff --git a/rails/game/specific/_18EU/OffBoardRevenueModifier.java b/rails/game/specific/_18EU/OffBoardRevenueModifier.java deleted file mode 100644 index ce0d0ae..0000000 --- a/rails/game/specific/_18EU/OffBoardRevenueModifier.java +++ /dev/null @@ -1,91 +0,0 @@ -package rails.game.specific._18EU; - -import java.util.HashSet; -import java.util.Set; - -import org.apache.log4j.Logger; - -import rails.algorithms.NetworkVertex; -import rails.algorithms.RevenueAdapter; -import rails.algorithms.RevenueBonus; -import rails.algorithms.RevenueStaticModifier; -import rails.algorithms.RevenueAdapter.VertexVisit; -import rails.game.PhaseI; -import rails.game.Station; -import rails.game.Tile; - -public class OffBoardRevenueModifier implements RevenueStaticModifier { - - protected static Logger log = - Logger.getLogger(OffBoardRevenueModifier.class.getPackage().getName()); - - - public boolean modifyCalculator(RevenueAdapter revenueAdapter) { - - // 1. define value - PhaseI phase = revenueAdapter.getPhase(); - int bonusValue; - if (phase.isTileColourAllowed(Tile.GREY_COLOUR_NAME)) { - bonusValue = 30; - } else if (phase.isTileColourAllowed(Tile.BROWN_COLOUR_NAME)) { - bonusValue = 20; - } else if (phase.isTileColourAllowed(Tile.GREEN_COLOUR_NAME)) { - bonusValue = 10; - } else { - return false; - } - - log.info("OffBoardRevenueModifier: bonusValue = " + bonusValue); - - // 2. get all off-board type stations and Hamburg - Set<NetworkVertex> offBoard = new HashSet<NetworkVertex>(); - for (NetworkVertex vertex:revenueAdapter.getVertices()) { - if (vertex.isStation() && vertex.getStation().getType().equals(Station.OFF_MAP_AREA)){ - offBoard.add(vertex); - } - } - - // 3. get Hamburg ... - NetworkVertex hamburgCity = NetworkVertex.getVertexByIdentifier(revenueAdapter.getVertices(), "B7.-1"); - if (hamburgCity != null) { - // ... and duplicate the vertex - NetworkVertex hamburgTerminal = NetworkVertex.duplicateVertex(revenueAdapter.getGraph(), hamburgCity, "B7", true); - hamburgTerminal.setSink(true); - offBoard.add(hamburgTerminal); - - // vertexVisitSet for the two Hamburgs - VertexVisit hamburgSet = revenueAdapter.new VertexVisit(); - hamburgSet.set.add(hamburgCity); - hamburgSet.set.add(hamburgTerminal); - revenueAdapter.addVertexVisitSet(hamburgSet); - } - - log.info("OffBoardRevenueModifier: offBoard = " + offBoard); - - // 4. get all base tokens (=> start vertices) - Set<NetworkVertex> bases = revenueAdapter.getStartVertices(); - - - // 5. combine those to revenueBonuses - // always two offboard areas and one base - Set<NetworkVertex> destOffBoard = new HashSet<NetworkVertex>(offBoard); - for (NetworkVertex offA:offBoard) { - destOffBoard.remove(offA); - for (NetworkVertex offB:destOffBoard) { - for (NetworkVertex base:bases) { - RevenueBonus bonus = new RevenueBonus(bonusValue, "Red-To-Red"); - bonus.addVertex(offA); bonus.addVertex(offB); bonus.addVertex(base); - revenueAdapter.addRevenueBonus(bonus); - } - } - } - // no additional text required - return false; - } - - - public String prettyPrint(RevenueAdapter revenueAdapter) { - // nothing to do - return null; - } -} diff --git a/rails/game/specific/_18EU/OffBoardRevenueModifier_18EU.java b/rails/game/specific/_18EU/OffBoardRevenueModifier_18EU.java new file mode 100644 index 0000000..ae2e2d7 --- /dev/null +++ b/rails/game/specific/_18EU/OffBoardRevenueModifier_18EU.java @@ -0,0 +1,91 @@ +package rails.game.specific._18EU; + +import java.util.HashSet; +import java.util.Set; + +import org.apache.log4j.Logger; + +import rails.algorithms.NetworkVertex; +import rails.algorithms.RevenueAdapter; +import rails.algorithms.RevenueBonus; +import rails.algorithms.RevenueStaticModifier; +import rails.algorithms.RevenueAdapter.VertexVisit; +import rails.game.PhaseI; +import rails.game.Station; +import rails.game.Tile; + +public class OffBoardRevenueModifier_18EU implements RevenueStaticModifier { + + protected static Logger log = + Logger.getLogger(OffBoardRevenueModifier_18EU.class.getPackage().getName()); + + + public boolean modifyCalculator(RevenueAdapter revenueAdapter) { + + // 1. define value + PhaseI phase = revenueAdapter.getPhase(); + int bonusValue; + if (phase.isTileColourAllowed(Tile.GREY_COLOUR_NAME)) { + bonusValue = 30; + } else if (phase.isTileColourAllowed(Tile.BROWN_COLOUR_NAME)) { + bonusValue = 20; + } else if (phase.isTileColourAllowed(Tile.GREEN_COLOUR_NAME)) { + bonusValue = 10; + } else { + return false; + } + + log.info("OffBoardRevenueModifier: bonusValue = " + bonusValue); + + // 2. get all off-board type stations and Hamburg + Set<NetworkVertex> offBoard = new HashSet<NetworkVertex>(); + for (NetworkVertex vertex:revenueAdapter.getVertices()) { + if (vertex.isStation() && vertex.getStation().getType().equals(Station.OFF_MAP_AREA)){ + offBoard.add(vertex); + } + } + + // 3. get Hamburg ... + NetworkVertex hamburgCity = NetworkVertex.getVertexByIdentifier(revenueAdapter.getVertices(), "B7.-1"); + if (hamburgCity != null) { + // ... and duplicate the vertex + NetworkVertex hamburgTerminal = NetworkVertex.duplicateVertex(revenueAdapter.getGraph(), hamburgCity, "B7", true); + hamburgTerminal.setSink(true); + offBoard.add(hamburgTerminal); + + // vertexVisitSet for the two Hamburgs + VertexVisit hamburgSet = revenueAdapter.new VertexVisit(); + hamburgSet.set.add(hamburgCity); + hamburgSet.set.add(hamburgTerminal); + revenueAdapter.addVertexVisitSet(hamburgSet); + } + + log.info("OffBoardRevenueModifier: offBoard = " + offBoard); + + // 4. get all base tokens (=> start vertices) + Set<NetworkVertex> bases = revenueAdapter.getStartVertices(); + + + // 5. combine those to revenueBonuses + // always two offboard areas and one base + Set<NetworkVertex> destOffBoard = new HashSet<NetworkVertex>(offBoard); + for (NetworkVertex offA:offBoard) { + destOffBoard.remove(offA); + for (NetworkVertex offB:destOffBoard) { + for (NetworkVertex base:bases) { + RevenueBonus bonus = new RevenueBonus(bonusValue, "Red-To-Red"); + bonus.addVertex(offA); bonus.addVertex(offB); bonus.addVertex(base); + revenueAdapter.addRevenueBonus(bonus); + } + } + } + // no additional text required + return false; + } + + + public String prettyPrint(RevenueAdapter revenueAdapter) { + // nothing to do + return null; + } +} |