|
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 |