From: <ev...@us...> - 2010-09-19 19:30:41
|
Revision: 1428 http://rails.svn.sourceforge.net/rails/?rev=1428&view=rev Author: evos Date: 2010-09-19 19:30:35 +0000 (Sun, 19 Sep 2010) Log Message: ----------- Bugfix: company closure after withholding crashed the game. Modified Paths: -------------- trunk/18xx/rails/game/OperatingRound.java trunk/18xx/rails/game/StockMarket.java Modified: trunk/18xx/rails/game/OperatingRound.java =================================================================== --- trunk/18xx/rails/game/OperatingRound.java 2010-09-18 15:20:17 UTC (rev 1427) +++ trunk/18xx/rails/game/OperatingRound.java 2010-09-19 19:30:35 UTC (rev 1428) @@ -984,7 +984,7 @@ Bank.format(part), shares, operatingCompany.get().getShareUnit())); - new CashMove(bank, recipient, part); + pay (bank, recipient, part); } // Move the token @@ -1031,9 +1031,26 @@ * @param The revenue amount. */ public void withhold(int amount) { - if (amount > 0) new CashMove(bank, operatingCompany.get(), amount); + + PublicCompanyI company = operatingCompany.get(); + + // Payout revenue to company + pay (bank, company, amount); + // Move the token - operatingCompany.get().withhold(amount); + company.withhold(amount); + + // Check if company has entered a closing area + StockSpaceI newSpace = company.getCurrentSpace(); + if (newSpace.closesCompany() && company.canClose()) { + company.setClosed(); + ReportBuffer.add(LocalText.getText("CompanyClosesAt", + company.getName(), + newSpace.getName())); + finishTurn(); + return; + } + } /** Split a dividend. TODO Optional rounding down the payout @@ -1048,7 +1065,7 @@ int numberOfShares = operatingCompany.get().getNumberOfShares(); int withheld = (amount / (2 * numberOfShares)) * numberOfShares; - new CashMove(bank, operatingCompany.get(), withheld); + pay (bank, operatingCompany.get(), withheld); ReportBuffer.add(operatingCompany.get().getName() + " receives " + Bank.format(withheld)); // Payout the remainder Modified: trunk/18xx/rails/game/StockMarket.java =================================================================== --- trunk/18xx/rails/game/StockMarket.java 2010-09-18 15:20:17 UTC (rev 1427) +++ trunk/18xx/rails/game/StockMarket.java 2010-09-19 19:30:35 UTC (rev 1428) @@ -248,17 +248,6 @@ if (newrow > row) { newsquare = getStockSpace(newrow, col); } - /* - if (newsquare != oldsquare && newsquare.closesCompany()) { - company.setClosed(); - oldsquare.removeToken(company); - ReportBuffer.add(LocalText.getText("CompanyClosesAt", - company.getName(), - newsquare.getName())); - } else { - prepareMove(company, oldsquare, newsquare); - } - */ if (newsquare != oldsquare) { prepareMove(company, oldsquare, newsquare); } @@ -288,16 +277,7 @@ else { newsquare = oldsquare; } - if (newsquare.closesCompany()) { - if (!company.canClose()) return; // E.g. 1856 CGR - company.setClosed(); - oldsquare.removeToken(company); - ReportBuffer.add(LocalText.getText("CompanyClosesAt", - company.getName(), - newsquare.getName())); - } else { - prepareMove(company, oldsquare, newsquare); - } + prepareMove(company, oldsquare, newsquare); } protected void prepareMove(PublicCompanyI company, StockSpaceI from, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |