From: Erik V. <ev...@us...> - 2010-03-21 17:43:58
|
Update of /cvsroot/rails/18xx/rails/game/specific/_1835 In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv28644/rails/game/specific/_1835 Modified Files: PrussianFormationRound.java Log Message: 1835 Prussian formation & some consequential changes Index: PrussianFormationRound.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/game/specific/_1835/PrussianFormationRound.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** PrussianFormationRound.java 5 Mar 2010 22:38:31 -0000 1.5 --- PrussianFormationRound.java 21 Mar 2010 17:43:50 -0000 1.6 *************** *** 2,5 **** --- 2,6 ---- import java.util.ArrayList; + import java.util.Arrays; import java.util.HashMap; import java.util.List; *************** *** 20,23 **** --- 21,25 ---- private PublicCompanyI prussian; + private PublicCompanyI m2; private PhaseI phase; *************** *** 51,57 **** phase = getCurrentPhase(); startPr = !prussian.hasStarted(); ! forcedStart = phase.getName().equals("4+4"); mergePr = !prussianIsComplete(gameManager); - forcedMerge = phase.getName().equals("5"); ReportBuffer.add(LocalText.getText("StartFormationRound", PR_ID)); --- 53,59 ---- phase = getCurrentPhase(); startPr = !prussian.hasStarted(); ! forcedMerge = phase.getName().equals("5"); ! forcedStart = phase.getName().equals("4+4") || forcedMerge; mergePr = !prussianIsComplete(gameManager); ReportBuffer.add(LocalText.getText("StartFormationRound", PR_ID)); *************** *** 60,67 **** step = startPr ? Step.START : Step.MERGE; if (step == Step.MERGE) { ! startingPlayer ! = ((GameManager_1835)gameManager).getPrussianFormationStartingPlayer(); ! setCurrentPlayer(startingPlayer); } } --- 62,99 ---- step = startPr ? Step.START : Step.MERGE; + + if (step == Step.START) { + m2 = companyManager.getCompanyByName(M2_ID); + setCurrentPlayer(m2.getPresident()); + ((GameManager_1835)gameManager).setPrussianFormationStartingPlayer(currentPlayer); + if (forcedStart) { + executeStartPrussian(true); + step = Step.MERGE; + } + } + if (step == Step.MERGE) { ! startingPlayer ! = ((GameManager_1835)gameManager).getPrussianFormationStartingPlayer(); ! setCurrentPlayer(startingPlayer); ! if (forcedMerge) { ! List<SpecialPropertyI> sps; ! List<CompanyI> foldables = new ArrayList<CompanyI> (); ! for (PrivateCompanyI company : gameManager.getAllPrivateCompanies()) { ! sps = company.getSpecialProperties(); ! if (sps != null && !sps.isEmpty() && sps.get(0) instanceof ExchangeForShare) { ! foldables.add(company); ! } ! } ! for (PublicCompanyI company : gameManager.getAllPublicCompanies()) { ! if (company.isClosed()) continue; ! sps = company.getSpecialProperties(); ! if (sps != null && !sps.isEmpty() && sps.get(0) instanceof ExchangeForShare) { ! foldables.add(company); ! } ! } ! executeExchange (foldables, false, true); ! finishRound(); ! } } } *************** *** 71,75 **** if (step == Step.START) { - PublicCompanyI m2 = companyManager.getCompanyByName(M2_ID); Player m2Owner = m2.getPresident(); startingPlayer = m2Owner; --- 103,106 ---- *************** *** 129,133 **** if (step == Step.START) { ! if (folded.isEmpty() || !startPrussian(a)) { finishRound(); } else { --- 160,164 ---- if (step == Step.START) { ! if (folded == null || folded.isEmpty() || !startPrussian(a)) { finishRound(); } else { *************** *** 175,181 **** moveStack.start(false); ! // Execute prussian.start(); - ((GameManager_1835)gameManager).setPrussianFormationStartingPlayer(currentPlayer); String message = LocalText.getText("START_MERGED_COMPANY", PR_ID, --- 206,217 ---- moveStack.start(false); ! executeStartPrussian(false); ! ! return true; ! } ! ! private void executeStartPrussian (boolean display) { ! prussian.start(); String message = LocalText.getText("START_MERGED_COMPANY", PR_ID, *************** *** 183,194 **** prussian.getStartSpace()); ReportBuffer.add(message); ! executeExchange (action.getFoldedCompanies(), true); prussian.setFloated(); - - return true; } ! private boolean mergeIntoPrussian (FoldIntoPrussian action) { // Validate --- 219,229 ---- prussian.getStartSpace()); ReportBuffer.add(message); + if (display) DisplayBuffer.add(message); ! executeExchange (Arrays.asList(new CompanyI[]{m2}), true, false); prussian.setFloated(); } ! private boolean mergeIntoPrussian (FoldIntoPrussian action) { // Validate *************** *** 210,231 **** // Execute ! executeExchange (action.getFoldedCompanies(), false); return true; } ! private void executeExchange (List<CompanyI> companies, boolean president) { ExchangeForShare efs; PublicCertificateI cert; for (CompanyI company : companies) { // Shortcut, sp should be checked efs = (ExchangeForShare) company.getSpecialProperties().get(0); cert = unavailable.findCertificate(prussian, efs.getShare()/prussian.getShareUnit(), president); ! cert.moveTo(currentPlayer.getPortfolio()); //company.setClosed(); ! ReportBuffer.add(LocalText.getText("MERGE_MINOR_LOG", ! currentPlayer.getName(), company.getName(), PR_ID, --- 245,274 ---- // Execute ! executeExchange (action.getFoldedCompanies(), false, false); return true; } ! private void executeExchange (List<CompanyI> companies, boolean president, ! boolean display) { ExchangeForShare efs; PublicCertificateI cert; + Player player; for (CompanyI company : companies) { + log.debug("Merging company "+company.getName()); + if (company instanceof PrivateCompanyI) { + player = (Player)((PrivateCompanyI)company).getPortfolio().getOwner(); + } else { + player = ((PublicCompanyI)company).getPresident(); + } // Shortcut, sp should be checked efs = (ExchangeForShare) company.getSpecialProperties().get(0); cert = unavailable.findCertificate(prussian, efs.getShare()/prussian.getShareUnit(), president); ! cert.moveTo(player.getPortfolio()); //company.setClosed(); ! String message = LocalText.getText("MERGE_MINOR_LOG", ! player.getName(), company.getName(), PR_ID, *************** *** 233,244 **** : Bank.format(((PublicCompanyI)company).getCash()), company instanceof PrivateCompanyI ? "no" ! : ((PublicCompanyI)company).getPortfolio().getTrainList().size())); ! ReportBuffer.add(LocalText.getText("GetShareForMinor", ! currentPlayer.getName(), cert.getShare(), PR_ID, ipo.getName(), ! company.getName() )); ! if (company instanceof PublicCompanyI) { --- 276,290 ---- : Bank.format(((PublicCompanyI)company).getCash()), company instanceof PrivateCompanyI ? "no" ! : ((PublicCompanyI)company).getPortfolio().getTrainList().size()); ! ReportBuffer.add(message); ! if (display) DisplayBuffer.add (message); ! message = LocalText.getText("GetShareForMinor", ! player.getName(), cert.getShare(), PR_ID, ipo.getName(), ! company.getName()); ! ReportBuffer.add(message); ! if (display) DisplayBuffer.add (message); if (company instanceof PublicCompanyI) { *************** *** 253,259 **** if (!hex.hasTokenOfCompany(prussian) && hex.layBaseToken(prussian, city.getNumber())) { /* TODO: the false return value must be impossible. */ ! ReportBuffer.add(LocalText.getText("ExchangesBaseToken", PR_ID, minor.getName(), ! city.getName())); prussian.layBaseToken(hex, 0); --- 299,307 ---- if (!hex.hasTokenOfCompany(prussian) && hex.layBaseToken(prussian, city.getNumber())) { /* TODO: the false return value must be impossible. */ ! message =LocalText.getText("ExchangesBaseToken", PR_ID, minor.getName(), ! city.getName()); ! ReportBuffer.add(message); ! if (display) DisplayBuffer.add (message); prussian.layBaseToken(hex, 0); |