From: Erik V. <ev...@us...> - 2011-11-23 16:21:39
|
rails/game/specific/_1835/PrussianFormationRound.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) New commits: commit 7f688a6ee82a52d57e6909303f91103016a29b24 Author: Erik Vos <eri...@xs...> Date: Wed Nov 23 17:20:57 2011 +0100 Fixed PR train discarding bugs. PR did not discard excess trains after forced merge at first 5-train, and would (probably) never discard more than one train, even if having two or more excess trains. diff --git a/rails/game/specific/_1835/PrussianFormationRound.java b/rails/game/specific/_1835/PrussianFormationRound.java index aa9a3b0..d31cd9f 100644 --- a/rails/game/specific/_1835/PrussianFormationRound.java +++ b/rails/game/specific/_1835/PrussianFormationRound.java @@ -92,7 +92,13 @@ public class PrussianFormationRound extends StockRound { } } executeExchange (foldables, false, true); - finishRound(); + + // Check if the PR must discard any trains + if (prussian.getNumberOfTrains() > prussian.getCurrentTrainLimit()) { + step = Step.DISCARD_TRAINS; + } else { + finishRound(); + } } else { findNextMergingPlayer(false); } @@ -118,6 +124,7 @@ public class PrussianFormationRound extends StockRound { } else if (step == Step.DISCARD_TRAINS) { if (prussian.getNumberOfTrains() > prussian.getCurrentTrainLimit()) { + log.debug("+++ PR has "+prussian.getNumberOfTrains()+", limit is "+prussian.getCurrentTrainLimit()); possibleActions.add(new DiscardTrain(prussian, prussian.getPortfolio().getUniqueTrains(), true)); } @@ -425,8 +432,13 @@ public class PrussianFormationRound extends StockRound { company.getName(), train.getName() )); - // This always finished this type of round - finishRound(); + // We still might have another excess train + // TODO: would be better to have DiscardTrain discard multiple trains + if (prussian.getNumberOfTrains() > prussian.getCurrentTrainLimit()) { + step = Step.DISCARD_TRAINS; + } else { + finishRound(); + } return true; } |