From: Stefan F. <ste...@us...> - 2012-02-17 19:12:42
|
rails/algorithms/RevenueManager.java | 4 rails/common/GuiHints.java | 4 rails/game/Bank.java | 118 +-- rails/game/BaseToken.java | 1 rails/game/Certificate.java | 14 rails/game/Company.java | 24 rails/game/CompanyManager.java | 2 rails/game/Game.java | 3 rails/game/GameManager.java | 68 - rails/game/MapHex.java | 10 rails/game/MapManager.java | 4 rails/game/OperatingRound.java | 48 - rails/game/PhaseManager.java | 4 rails/game/Player.java | 175 +++- rails/game/PlayerManager.java | 13 rails/game/PrivateCompany.java | 33 rails/game/PublicCertificate.java | 39 - rails/game/PublicCompany.java | 45 - rails/game/Round.java | 28 rails/game/ShareSellingRound.java | 6 rails/game/StartItem.java | 14 rails/game/StartRound.java | 6 rails/game/StartRoundI.java | 2 rails/game/StockMarket.java | 4 rails/game/StockRound.java | 28 rails/game/StockSpace.java | 2 rails/game/Tile.java | 6 rails/game/TileManager.java | 2 rails/game/Token.java | 23 rails/game/Train.java | 35 rails/game/TrainCertificateType.java | 4 rails/game/TrainManager.java | 4 rails/game/TreasuryShareRound.java | 12 rails/game/action/BuyCertificate.java | 10 rails/game/action/BuyTrain.java | 12 rails/game/correct/CashCorrectionManager.java | 8 rails/game/correct/CorrectionManager.java | 4 rails/game/model/AbstractOwnable.java | 46 - rails/game/model/BaseTokensModel.java | 31 rails/game/model/BonusModel.java | 24 rails/game/model/CalculatedMoneyModel.java | 86 -- rails/game/model/CashModel.java | 85 -- rails/game/model/CashMoneyModel.java | 68 + rails/game/model/CashOwner.java | 8 rails/game/model/CertificateCountModel.java | 32 rails/game/model/CertificatesModel.java | 80 -- rails/game/model/DirectCashOwner.java | 33 rails/game/model/DirectOwner.java | 45 - rails/game/model/Model.java | 47 - rails/game/model/MoneyModel.java | 168 ++-- rails/game/model/Ownable.java | 19 rails/game/model/Owner.java | 28 rails/game/model/Owners.java | 75 -- rails/game/model/Portfolio.java | 648 ------------------ rails/game/model/PortfolioCashOwner.java | 28 rails/game/model/PortfolioModel.java | 629 +++++++++++++++++ rails/game/model/PortfolioOwner.java | 39 - rails/game/model/PresidentModel.java | 16 rails/game/model/PriceModel.java | 15 rails/game/model/PrivatesModel.java | 41 + rails/game/model/SingleOwner.java | 63 - rails/game/model/Storage.java | 37 - rails/game/model/StorageModel.java | 109 --- rails/game/model/TrainsModel.java | 50 - rails/game/special/SpecialProperty.java | 4 rails/game/special/SpecialPropertyI.java | 3 rails/game/specific/_1825/StockRound_1825.java | 6 rails/game/specific/_1835/OperatingRound_1835.java | 6 rails/game/specific/_1835/PrussianFormationRound.java | 6 rails/game/specific/_1835/StockRound_1835.java | 4 rails/game/specific/_1856/CGRFormationRound.java | 13 rails/game/specific/_1856/OperatingRound_1856.java | 8 rails/game/specific/_1856/StockRound_1856.java | 4 rails/game/specific/_1880/StartRound_1880.java | 2 rails/game/specific/_1889/OperatingRound_1889.java | 2 rails/game/specific/_18AL/OperatingRound_18AL.java | 4 rails/game/specific/_18EU/GameManager_18EU.java | 7 rails/game/specific/_18EU/OperatingRound_18EU.java | 10 rails/game/specific/_18EU/StockRound_18EU.java | 16 rails/game/state/AbstractItem.java | 76 ++ rails/game/state/ArrayListMultimapState.java | 25 rails/game/state/ArrayListState.java | 30 rails/game/state/BooleanState.java | 28 rails/game/state/ChangeStack.java | 22 rails/game/state/Context.java | 180 ++--- rails/game/state/CountableItem.java | 6 rails/game/state/GameItem.java | 73 -- rails/game/state/GenericState.java | 29 rails/game/state/HashMapState.java | 36 - rails/game/state/HashMultimapState.java | 28 rails/game/state/HashSetState.java | 47 - rails/game/state/IntegerState.java | 35 rails/game/state/Item.java | 25 rails/game/state/ItemType.java | 5 rails/game/state/Model.java | 42 + rails/game/state/MultimapState.java | 4 rails/game/state/Observable.java | 26 rails/game/state/OwnableItem.java | 13 rails/game/state/Portfolio.java | 55 + rails/game/state/PortfolioChange.java | 8 rails/game/state/PortfolioList.java | 71 + rails/game/state/PortfolioManager.java | 20 rails/game/state/PortfolioMap.java | 100 ++ rails/game/state/PortfolioNG.java | 117 --- rails/game/state/Root.java | 88 ++ rails/game/state/State.java | 73 -- rails/game/state/StateManager.java | 53 - rails/game/state/StringState.java | 30 rails/game/state/Wallet.java | 29 rails/game/state/WalletManager.java | 15 rails/ui/swing/GameStatus.java | 6 rails/ui/swing/GridPanel.java | 2 rails/ui/swing/ORUIManager.java | 6 rails/ui/swing/RemainingTilesWindow.java | 2 rails/ui/swing/elements/GUIStockSpace.java | 2 rails/ui/swing/hexmap/GUIHex.java | 2 116 files changed, 2151 insertions(+), 2722 deletions(-) New commits: commit 0a640b489db8e119f3567e6eb4e5267772562fee Author: Stefan Frey <ste...@we...> Date: Mon Feb 13 18:52:12 2012 +0100 Updated Item and Context mechanisms Removing the previous storage and owner mechanism Refactored StateManager and ChangeStack mechanisms Refactored MoneyModel, CashModel and CalculatedMoneyModel Refactored Player, Bank diff --git a/rails/algorithms/RevenueManager.java b/rails/algorithms/RevenueManager.java index 06c506f..bfba854 100644 --- a/rails/algorithms/RevenueManager.java +++ b/rails/algorithms/RevenueManager.java @@ -12,7 +12,7 @@ import rails.common.parser.ConfigurableComponentI; import rails.common.parser.ConfigurationException; import rails.common.parser.Tag; import rails.game.GameManager; -import rails.game.state.GameItem; +import rails.game.state.AbstractItem; import rails.game.state.ArrayListState; /** @@ -25,7 +25,7 @@ import rails.game.state.ArrayListState; * */ -public final class RevenueManager extends GameItem implements ConfigurableComponentI { +public final class RevenueManager extends AbstractItem implements ConfigurableComponentI { protected static Logger log = Logger.getLogger(RevenueManager.class.getPackage().getName()); diff --git a/rails/common/GuiHints.java b/rails/common/GuiHints.java index 64d8dde..b386bc8 100644 --- a/rails/common/GuiHints.java +++ b/rails/common/GuiHints.java @@ -5,7 +5,7 @@ import java.util.ArrayList; import java.util.List; import rails.game.RoundI; -import rails.game.state.GameItem; +import rails.game.state.AbstractItem; import rails.game.state.GenericState; /** @@ -16,7 +16,7 @@ import rails.game.state.GenericState; * @author VosE * */ -public class GuiHints extends GameItem implements Serializable{ +public class GuiHints extends AbstractItem implements Serializable{ public static final long serialVersionUID = 1L; diff --git a/rails/game/Bank.java b/rails/game/Bank.java index e35d100..5bf426a 100644 --- a/rails/game/Bank.java +++ b/rails/game/Bank.java @@ -9,14 +9,18 @@ import rails.common.parser.Config; import rails.common.parser.ConfigurableComponentI; import rails.common.parser.ConfigurationException; import rails.common.parser.Tag; -import rails.game.model.CashModel; +import rails.game.model.CashMoneyModel; import rails.game.model.CashOwner; +import rails.game.model.MoneyModel; import rails.game.model.PortfolioModel; -import rails.game.state.GameItem; +import rails.game.state.AbstractItem; import rails.game.state.BooleanState; +import rails.game.state.Item; import rails.util.*; -public class Bank extends GameItem implements CashOwner, ConfigurableComponentI { +public class Bank extends AbstractItem implements CashOwner, ConfigurableComponentI { + + private static Bank instance = null; /** Specific portfolio names */ public static final String IPO_NAME = "IPO"; @@ -29,21 +33,19 @@ public class Bank extends GameItem implements CashOwner, ConfigurableComponentI private static final String DEFAULT_MONEY_FORMAT = "$@"; /** The Bank's amount of cash */ - private CashModel money; + private final CashMoneyModel cash; /** The IPO */ - private PortfolioModel ipo = null; + private final PortfolioModel ipo; /** The Bank Pool */ - private PortfolioModel pool = null; + private final PortfolioModel pool; /** Collection of items that will (may) become available in the future */ - private PortfolioModel unavailable = null; + private final PortfolioModel unavailable; /** Collection of items that have been discarded (but are kept to allow Undo) */ - private PortfolioModel scrapHeap = null; - - private static Bank instance = null; + private final PortfolioModel scrapHeap; - /** Is the bank broken (remains true once set) */ - private BooleanState broken = BooleanState.create(this, "Bank.broken", false); + /** Is the bank broken */ + private final BooleanState broken; /** * The money format template. '@' is replaced by the numeric amount, the @@ -55,22 +57,40 @@ public class Bank extends GameItem implements CashOwner, ConfigurableComponentI Logger.getLogger(Bank.class.getPackage().getName()); public Bank() { + super(Bank.class.getSimpleName()); instance = this; - money = CashModel.create(this); + cash = MoneyModel.createCash("cash"); + // Create the IPO and the Bank Pool. - ipo = new PortfolioModel(ipo, IPO_NAME); - pool = new PortfolioModel(pool, POOL_NAME); - unavailable = new PortfolioModel(unavailable, UNAVAILABLE_NAME); - scrapHeap = new PortfolioModel(scrapHeap, SCRAPHEAP_NAME); + ipo = PortfolioModel.create(IPO_NAME); + pool = PortfolioModel.create(POOL_NAME); + unavailable = PortfolioModel.create(UNAVAILABLE_NAME); + scrapHeap = PortfolioModel.create(SCRAPHEAP_NAME); + broken = BooleanState.create("broken"); + String configFormat = Config.get("money_format"); if (Util.hasValue(configFormat) && configFormat.matches(".*@.*")) { moneyFormat = configFormat; } } + @Override + public Bank init(Item parent) { + super.init(parent); + + cash.init(this); + ipo.init(this); + pool.init(this); + unavailable.init(this); + scrapHeap.init(this); + broken.init(this); + + return this; + } + /** * @see rails.common.parser.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element) */ @@ -94,7 +114,7 @@ public class Bank extends GameItem implements CashOwner, ConfigurableComponentI Tag bankTag = tag.getChild("Bank"); if (bankTag != null) { - money.set(bankTag.getAttributeAsInteger("amount", + cash.set(bankTag.getAttributeAsInteger("amount", DEFAULT_BANK_AMOUNT)); } @@ -103,7 +123,7 @@ public class Bank extends GameItem implements CashOwner, ConfigurableComponentI public void finishConfiguration (GameManager gameManager) { ReportBuffer.add(LocalText.getText("BankSizeIs", - format(money.value()))); + format(cash.value()))); // Add privates List<PrivateCompany> privates = @@ -118,9 +138,9 @@ public class Bank extends GameItem implements CashOwner, ConfigurableComponentI for (PublicCompany comp : companies) { for (PublicCertificate cert : comp.getCertificates()) { if (cert.isInitiallyAvailable()) { - cert.moveTo(ipo); + ipo.moveInto(cert); } else { - cert.moveTo(unavailable); + unavailable.moveInto(cert); } } } @@ -137,30 +157,15 @@ public class Bank extends GameItem implements CashOwner, ConfigurableComponentI return scrapHeap; } - /** - * @return Bank's current cash level - */ - public int getCashValue() { - return money.value(); - } - - /** - * Adds cash back to the bank - */ - public void addCash(int amount) { - - money.add(amount); - - /* + /* FIXME: Add broken check somewhere * Check if the bank has broken. In some games <0 could apply, so this * will become configurable. - */ - if (money.value() <= 0 && !broken.booleanValue()) { + if (cash.value() <= 0 && !broken.booleanValue()) { broken.set(true); - money.setText(LocalText.getText("BROKEN")); + cash.setText(LocalText.getText("BROKEN")); GameManager.getInstance().registerBrokenBank(); } - } + */ /** * @return Portfolio of stock in Bank Pool @@ -176,19 +181,13 @@ public class Bank extends GameItem implements CashOwner, ConfigurableComponentI return unavailable; } - /** - * @param Set Bank's cash. - */ - public void setCash(int i) { - money.set(i); - } - public String getId() { return LocalText.getText("BANK"); } - public String getFormattedCash() { - return money.getText(); + // CashOwner interface + public CashMoneyModel getCash() { + return cash; } public static String format(int amount) { @@ -198,7 +197,7 @@ public class Bank extends GameItem implements CashOwner, ConfigurableComponentI if (amount < 0) result = result.replaceFirst("(.+)-", "-$1"); return result; } - // start sfy 1889 for integerarrays + public static String formatIntegerArray(int[] amountList) { StringBuilder result = new StringBuilder(); for (int i = 0; i < amountList.length;++i) { @@ -207,14 +206,5 @@ public class Bank extends GameItem implements CashOwner, ConfigurableComponentI } return result.toString(); } - // end sfy 1889 - - public int getCash() { - return money.value(); - } - - public CashModel getCashModel() { - return money; - } } diff --git a/rails/game/BaseToken.java b/rails/game/BaseToken.java index bba6edd..2c879b1 100644 --- a/rails/game/BaseToken.java +++ b/rails/game/BaseToken.java @@ -24,6 +24,7 @@ public class BaseToken extends Token { this.company = company; /* Initially. a BaseToken is always owned by a company. */ + company.getBaseTokensModel(). this.moveTo(company); } diff --git a/rails/game/Company.java b/rails/game/Company.java index b9175b4..2156e53 100644 --- a/rails/game/Company.java +++ b/rails/game/Company.java @@ -14,11 +14,11 @@ import rails.game.model.StorageModel; import rails.game.model.PortfolioModel; import rails.game.special.SpecialPropertyI; import rails.game.state.BooleanState; -import rails.game.state.GameItem; +import rails.game.state.AbstractItem; import rails.game.state.OwnableItem; import rails.util.Util; -public abstract class Company extends GameItem implements ConfigurableComponentI, +public abstract class Company extends AbstractItem implements ConfigurableComponentI, Cloneable, Comparable<Company> { /** The name of the XML tag used to configure a company. */ diff --git a/rails/game/CompanyManager.java b/rails/game/CompanyManager.java index 25f946a..5a00ee5 100644 --- a/rails/game/CompanyManager.java +++ b/rails/game/CompanyManager.java @@ -1 +1 @@ -package rails.game; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.log4j.Logger; import rails.common.LocalText; import rails.common.parser.ConfigurableComponentI; import rails.common.parser.ConfigurationException; import rails.common.parser.Tag; import rails.game.state.GameItem; public class CompanyManager extends GameItem implements CompanyManagerI, ConfigurableComponentI { /** A List with all private companies */ private List<PrivateCompany> lPrivateCompanies = new ArrayList<PrivateCompany>(); /** A List with all public companies */ private List<PublicCompany> lPublicCompanies = new ArrayList<PublicCompany>(); /** A map with all private companies by name */ private Map<String, PrivateCompany> mPrivateCompanies = new HashMap<String, PrivateCompany>(); /** A map with all public (i.e. non-private) companies by name */ private Map<String, PublicCompany> mPublicCompanies = new HashMap<String, PublicCompany>(); /** A map of all type names to maps of companies of that type by name */ // TODO Redundant, current usage can be replaced. private Map<String, Map<String, Company>> mCompaniesByTypeAndName = new HashMap<String, Map<String, Company>>(); /** A list of all company types */ private List<CompanyTypeI> lCompanyTypes = new ArrayList<CompanyTypeI>(); /** A list of all start packets (usually one) */ private List<StartPacket> startPackets = new ArrayList<StartPacket>(); /** A map of all start packets, keyed by name. Default name is "Initial" */ private Map<String, StartPacket> startPacketMap = new HashMap<String, StartPacket>(); /** A map to enable translating aliases to names */ protected Map<String, String> aliases = null; private int numberOfPublicCompanies = 0; protected static Logger log = Logger.getLogger(CompanyManager.class.getPackage().getName()); protected Game |