From: <ev...@us...> - 2011-06-24 14:23:35
|
Revision: 1583 http://rails.svn.sourceforge.net/rails/?rev=1583&view=rev Author: evos Date: 2011-06-24 14:23:29 +0000 (Fri, 24 Jun 2011) Log Message: ----------- 18GA: OSRR extra 2-train Modified Paths: -------------- trunk/18xx/LocalisedText.properties trunk/18xx/data/18GA/CompanyManager.xml trunk/18xx/data/18GA/Game.xml trunk/18xx/rails/game/OperatingRound.java trunk/18xx/rails/game/Train.java trunk/18xx/rails/game/TrainManager.java trunk/18xx/rails/game/action/StartCompany.java Added Paths: ----------- trunk/18xx/rails/game/specific/_18GA/ trunk/18xx/rails/game/specific/_18GA/OperatingRound_18GA.java Modified: trunk/18xx/LocalisedText.properties =================================================================== --- trunk/18xx/LocalisedText.properties 2011-06-22 11:56:55 UTC (rev 1582) +++ trunk/18xx/LocalisedText.properties 2011-06-24 14:23:29 UTC (rev 1583) @@ -295,6 +295,7 @@ GameSetupFailed=Game setup from file {0} failed GetShareForMinor={0} gets a {1}% share of {2} from {3} in exchange for {4} GetNoShareForMinor={0} does not get a share for Minor {1}, which closes +GetsExtraTrain={0} gets an extra {1}-train Has={0} has {1} HasFirstTurn={0} has the first turn HasMergedShares={0} has exchanged {1} old shares for {2} {3} shares Modified: trunk/18xx/data/18GA/CompanyManager.xml =================================================================== --- trunk/18xx/data/18GA/CompanyManager.xml 2011-06-22 11:56:55 UTC (rev 1582) +++ trunk/18xx/data/18GA/CompanyManager.xml 2011-06-24 14:23:29 UTC (rev 1583) @@ -48,6 +48,7 @@ </Company> <Company name="OSO" type="Private" basePrice="100" revenue="20" longname="Ocilla Southern Railroad"> + <!-- Note: name "OSO" is also used in OperatingRound_18GA --> <Blocking hex="G7"/> </Company> <Company name="M&B" type="Private" basePrice="150" revenue="25" Modified: trunk/18xx/data/18GA/Game.xml =================================================================== --- trunk/18xx/data/18GA/Game.xml 2011-06-22 11:56:55 UTC (rev 1582) +++ trunk/18xx/data/18GA/Game.xml 2011-06-24 14:23:29 UTC (rev 1583) @@ -11,6 +11,7 @@ <GameOption name="LeaveAuctionOnPass" type="toggle" default="no"/> <GameOption name="TwoPlayersCertLimit70Percent" type="toggle" default="yes"/> <GameParameters> + <OperatingRound class="rails.game.specific._18GA.OperatingRound_18GA"/> <PlayerShareLimit percentage="60"> <IfOption name="NumberOfPlayers" value="2"> <IfOption name="TwoPlayersCertLimit70Percent" value="yes"> Modified: trunk/18xx/rails/game/OperatingRound.java =================================================================== --- trunk/18xx/rails/game/OperatingRound.java 2011-06-22 11:56:55 UTC (rev 1582) +++ trunk/18xx/rails/game/OperatingRound.java 2011-06-24 14:23:29 UTC (rev 1583) @@ -1838,6 +1838,7 @@ train.setType(action.getType()); // Needed for dual trains bought from the Bank operatingCompany.get().buyTrain(train, price); + if (oldHolder == ipo) { train.getCertType().addToBoughtFromIPO(); trainManager.setAnyTrainBought(true); @@ -2772,7 +2773,7 @@ trains = pf.getUniqueTrains(); for (TrainI train : trains) { - if (train.isObsolete()) continue; + if (train.isObsolete() || !train.isTradeable()) continue; if (i != currentPlayerIndex //&& trainMgr.buyAtFaceValueBetweenDifferentPresidents() && getGameParameterAsBoolean(GameDef.Parm.FIXED_PRICE_TRAINS_BETWEEN_PRESIDENTS) @@ -2848,7 +2849,7 @@ } /** - * Can the company buy a train now? + * Can the operating company buy a train now? * Normally only calls isBelowTrainLimit() to get the result. * May be overridden if other considerations apply (such as * having a Pullmann in 18EU). Modified: trunk/18xx/rails/game/Train.java =================================================================== --- trunk/18xx/rails/game/Train.java 2011-06-22 11:56:55 UTC (rev 1582) +++ trunk/18xx/rails/game/Train.java 2011-06-24 14:23:29 UTC (rev 1583) @@ -123,7 +123,7 @@ } public CashHolder getOwner() { - return holder.getOwner(); + return holder != null ? holder.getOwner() : null; } public boolean isObsolete() { Modified: trunk/18xx/rails/game/TrainManager.java =================================================================== --- trunk/18xx/rails/game/TrainManager.java 2011-06-22 11:56:55 UTC (rev 1582) +++ trunk/18xx/rails/game/TrainManager.java 2011-06-24 14:23:29 UTC (rev 1583) @@ -202,7 +202,7 @@ // Train trading between different players at face value only (1851) gameManager.setGameParameter(GameDef.Parm.FIXED_PRICE_TRAINS_BETWEEN_PRESIDENTS, trainPriceAtFaceValueIfDifferentPresidents); -} + } /** Create train without throwing exceptions. * To be used <b>after</b> completing initialization, Modified: trunk/18xx/rails/game/action/StartCompany.java =================================================================== --- trunk/18xx/rails/game/action/StartCompany.java 2011-06-22 11:56:55 UTC (rev 1582) +++ trunk/18xx/rails/game/action/StartCompany.java 2011-06-24 14:23:29 UTC (rev 1583) @@ -47,8 +47,8 @@ @Override public String toString() { - StringBuffer text = new StringBuffer(); - text.append("StartCompany: ").append(company.getName()); + StringBuilder text = new StringBuilder(); + text.append("StartCompany: ").append(company != null ? company.getName() : null); if (price > 0) { text.append(" price=").append(Bank.format(price)); if (numberBought > 1) { Added: trunk/18xx/rails/game/specific/_18GA/OperatingRound_18GA.java =================================================================== --- trunk/18xx/rails/game/specific/_18GA/OperatingRound_18GA.java (rev 0) +++ trunk/18xx/rails/game/specific/_18GA/OperatingRound_18GA.java 2011-06-24 14:23:29 UTC (rev 1583) @@ -0,0 +1,40 @@ +package rails.game.specific._18GA; + +import rails.game.*; +import rails.game.action.BuyPrivate; +import rails.util.LocalText; + +public class OperatingRound_18GA extends OperatingRound { + + public final static String OS_NAME = "OSO"; + public final static String OS_EXTRA_TRAIN_TYPE = "2"; + + public OperatingRound_18GA (GameManagerI gameManager) { + super (gameManager); + } + + public boolean buyPrivate(BuyPrivate action) { + + boolean result = super.buyPrivate(action); + + // If the Ocilla Southern has been bought, the company gets an extra 2-train, if possible + if (result + && action.getPrivateCompany().getName().equalsIgnoreCase(OS_NAME) + && isBelowTrainLimit()) { + PublicCompanyI company = operatingCompany.get(); + TrainCertificateType certType = trainManager.getCertTypeByName(OS_EXTRA_TRAIN_TYPE); + if (!certType.hasRusted()) { // I.e. before phase "4" + TrainI train = trainManager.cloneTrain(certType); + company.getPortfolio().buyTrain(train, 0); + train.setTradeable(false); + ReportBuffer.add(LocalText.getText("GetsExtraTrain", + company.getName(), + OS_EXTRA_TRAIN_TYPE)); + company.getPortfolio().getTrainsModel().update(); + } + } + + return result; + } + +} Property changes on: trunk/18xx/rails/game/specific/_18GA/OperatingRound_18GA.java ___________________________________________________________________ Added: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |