From: Stefan F. <ste...@us...> - 2012-04-03 09:37:31
|
data/1835/Game.xml | 3 + rails/game/specific/_1835/ElsasModifier.java | 41 +++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) New commits: commit b9e3d4c14a6ef9b2ac3fb50641bb1e4ed38d1b6c Author: Stefan Frey <ste...@we...> Date: Tue Apr 3 11:37:01 2012 +0200 added 1835 modifier for elsas to fix wrong revenue calculation reported by jdg diff --git a/data/1835/Game.xml b/data/1835/Game.xml index 2f26bbf..d9f62a8 100644 --- a/data/1835/Game.xml +++ b/data/1835/Game.xml @@ -114,4 +114,7 @@ <Trains rusted="3+3"/> </Phase> </Component> + <Component name="RevenueManager" class="rails.algorithms.RevenueManager"> + <Modifier class="rails.game.specific._1835.ElsasModifier" /> + </Component> </ComponentManager> diff --git a/rails/game/specific/_1835/ElsasModifier.java b/rails/game/specific/_1835/ElsasModifier.java new file mode 100644 index 0000000..cce0b74 --- /dev/null +++ b/rails/game/specific/_1835/ElsasModifier.java @@ -0,0 +1,41 @@ +package rails.game.specific._1835; + +import java.util.Set; + +import org.apache.log4j.Logger; +import org.jgrapht.graph.SimpleGraph; + +import rails.algorithms.NetworkEdge; +import rails.algorithms.NetworkGraphBuilder; +import rails.algorithms.NetworkGraphModifier; +import rails.algorithms.NetworkVertex; +import rails.game.GameManager; +import rails.game.GameManagerI; +import rails.game.MapHex; + +/** + * Analogue to the BirminghamTileModifier in 1851 + * Removes Elsas from the map if value is equal to zero + * @author freystef + */ + +public class ElsasModifier implements NetworkGraphModifier { + + protected static Logger log = + Logger.getLogger(ElsasModifier.class.getPackage().getName()); + + public void modifyGraph(NetworkGraphBuilder graphBuilder) { + + GameManagerI gm = GameManager.getInstance(); + SimpleGraph<NetworkVertex, NetworkEdge> graph = graphBuilder.getMapGraph(); + + // Check if elsasHex has zero value ... + MapHex elsasHex = gm.getMapManager().getHex("M5"); + if (elsasHex.getCurrentValueForPhase(gm.getCurrentPhase()) == 0) { + // .. then remove + Set<NetworkVertex> elsasVertices = NetworkVertex.getVerticesByHex(graph.vertexSet(), elsasHex); + graph.removeAllVertices(elsasVertices); + log.debug("Elsas is inactive"); + } + } +} |