|
From: Stefan F. <ste...@us...> - 2011-12-31 15:36:39
|
rails/common/parser/ComponentManager.java | 9 -
rails/common/parser/GameFileParser.java | 5
rails/game/Company.java | 6
rails/game/CompanyManager.java | 2
rails/game/Game.java | 6
rails/game/GameManager.java | 51 +++--
rails/game/OperatingRound.java | 38 ++--
rails/game/PrivateCompany.java | 4
rails/game/Round.java | 4
rails/game/ShareSellingRound.java | 4
rails/game/StartRound.java | 2
rails/game/StartRound_1830.java | 4
rails/game/StartRound_1835.java | 2
rails/game/StockRound.java | 12 -
rails/game/TreasuryShareRound.java | 6
rails/game/correct/CashCorrectionManager.java | 2
rails/game/correct/CorrectionManager.java | 2
rails/game/correct/MapCorrectionManager.java | 2
rails/game/model/AbstractModel.java | 14 -
rails/game/model/AbstractOwnable.java | 10 +
rails/game/model/CertificatesModel.java | 2
rails/game/model/DirectOwner.java | 28 +--
rails/game/model/Holder.java | 37 ----
rails/game/model/HolderModel.java | 86 ---------
rails/game/model/Model.java | 10 -
rails/game/model/Owner.java | 6
rails/game/model/Owners.java | 2
rails/game/model/Portfolio.java | 10 -
rails/game/model/PortfolioOwner.java | 13 -
rails/game/model/PrivatesModel.java | 2
rails/game/model/SingleOwner.java | 24 +-
rails/game/model/Storage.java | 37 ++++
rails/game/model/StorageModel.java | 86 +++++++++
rails/game/model/TrainsModel.java | 4
rails/game/specific/_1835/GameManager_1835.java | 5
rails/game/specific/_1835/OperatingRound_1835.java | 4
rails/game/specific/_1835/PrussianFormationRound.java | 13 -
rails/game/specific/_1856/CGRFormationRound.java | 9 -
rails/game/specific/_1856/GameManager_1856.java | 5
rails/game/specific/_1856/PublicCompany_CGR.java | 2
rails/game/specific/_1880/StartRound_1880.java | 4
rails/game/specific/_1889/OperatingRound_1889.java | 4
rails/game/specific/_18AL/OperatingRound_18AL.java | 2
rails/game/specific/_18EU/FinalMinorExchangeRound.java | 2
rails/game/specific/_18EU/GameManager_18EU.java | 5
rails/game/specific/_18EU/StartRound_18EU.java | 6
rails/game/specific/_18EU/StockRound_18EU.java | 9 -
rails/game/state/AbstractContext.java | 57 ++++--
rails/game/state/AbstractItem.java | 66 +++++--
rails/game/state/AbstractState.java | 82 ++++++---
rails/game/state/ActionChangeSet.java | 36 ++++
rails/game/state/ArrayListMultimapState.java | 5
rails/game/state/ArrayListState.java | 10 -
rails/game/state/AutoChangeSet.java | 31 +++
rails/game/state/BooleanState.java | 10 -
rails/game/state/ChangeSet.java | 30 +--
rails/game/state/ChangeStack.java | 143 +++++++++-------
rails/game/state/Context.java | 11 -
rails/game/state/GameContext.java | 52 +++++
rails/game/state/GameItem.java | 99 +++++++++++
rails/game/state/GenericState.java | 8
rails/game/state/HashMapState.java | 10 -
rails/game/state/HashMultimapState.java | 10 -
rails/game/state/HashSetState.java | 10 -
rails/game/state/IntegerState.java | 10 -
rails/game/state/Item.java | 30 +++
rails/game/state/State.java | 19 +-
rails/game/state/StateManager.java | 151 ++++++++++++-----
rails/game/state/StringState.java | 10 -
rails/util/Util.java | 2
70 files changed, 980 insertions(+), 514 deletions(-)
New commits:
commit 45e0cd79d366f99855e666ec701ff3a22d8b0122
Author: Stefan Frey <ste...@we...>
Date: Thu Dec 15 18:33:37 2011 +0100
improved context and item mechanisms
diff --git a/rails/common/parser/ComponentManager.java b/rails/common/parser/ComponentManager.java
index 0e48411..6c55bea 100644
--- a/rails/common/parser/ComponentManager.java
+++ b/rails/common/parser/ComponentManager.java
@@ -8,6 +8,7 @@ import org.apache.log4j.Logger;
import rails.common.LocalText;
import rails.common.parser.XMLTags;
+import rails.game.state.GameContext;
/**
* ComponentManage - an implementation of ComponentManagerI, which handles the
@@ -26,7 +27,7 @@ public class ComponentManager {
private Map<String, ConfigurableComponentI> mComponentMap =
new HashMap<String, ConfigurableComponentI>();
- public ComponentManager(String gameName, Tag tag, Map<String, String> gameOptions)
+ public ComponentManager(GameContext context, String gameName, Tag tag, Map<String, String> gameOptions)
throws ConfigurationException {
this.gameName = gameName;
@@ -34,12 +35,12 @@ public class ComponentManager {
for (Tag component : componentTags) {
String compName = component.getAttributeAsString("name");
log.debug("Found component " + compName);
- configureComponent(component);
+ configureComponent(context, component);
component.setGameOptions(gameOptions);
}
}
- private void configureComponent(Tag componentTag)
+ private void configureComponent(GameContext context, Tag componentTag)
throws ConfigurationException {
// Extract the attributes of the Component
@@ -69,7 +70,7 @@ public class ComponentManager {
Class.forName(clazz).asSubclass(
ConfigurableComponentI.class);
Constructor<? extends ConfigurableComponentI> compCons =
- compClass.getConstructor(new Class[0]);
+ compClass.getConstructor(new Class[0]);
component = compCons.newInstance(new Object[0]);
} catch (Exception ex) {
// There are MANY things that could go wrong here.
diff --git a/rails/common/parser/GameFileParser.java b/rails/common/parser/GameFileParser.java
index b1347f3..afc7e18 100644
--- a/rails/common/parser/GameFileParser.java
+++ b/rails/common/parser/GameFileParser.java
@@ -18,6 +18,7 @@ import rails.game.PlayerManager;
import rails.game.StockMarketI;
import rails.game.TileManager;
import rails.game.TrainManager;
+import rails.game.state.GameContext;
public class GameFileParser extends XMLParser {
private static String GAME_XML_FILE = "Game.xml";
@@ -36,7 +37,7 @@ public class GameFileParser extends XMLParser {
private RevenueManager revenueManager;
private Bank bank;
- public GameFileParser(String name, Map<String, String> gameOptions) {
+ public GameFileParser(GameContext context, String name, Map<String, String> gameOptions) {
directories.add("data/" + name);
@@ -45,7 +46,7 @@ public class GameFileParser extends XMLParser {
componentManagerTag.setGameOptions(gameOptions);
//XXX: Ultimately calls everyone's configureFromXML() methods.
- componentManager = new ComponentManager(name, componentManagerTag, gameOptions);
+ componentManager = new ComponentManager(context, name, componentManagerTag, gameOptions);
playerManager = (PlayerManager) componentManager.findComponent("PlayerManager");
bank = (Bank) componentManager.findComponent("Bank");
diff --git a/rails/game/Company.java b/rails/game/Company.java
index 588c73e..6483953 100644
--- a/rails/game/Company.java
+++ b/rails/game/Company.java
@@ -10,7 +10,7 @@ import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
import rails.game.model.DirectOwner;
-import rails.game.model.HolderModel;
+import rails.game.model.StorageModel;
import rails.game.model.Portfolio;
import rails.game.special.SpecialPropertyI;
import rails.game.state.BooleanState;
@@ -58,7 +58,7 @@ Cloneable, Comparable<Company> {
protected BooleanState closedObject;
// Moved here from PrivayeCOmpany on behalf of 1835
- protected HolderModel<SpecialPropertyI> specialProperties = null;
+ protected StorageModel<SpecialPropertyI> specialProperties = null;
protected static Logger log =
Logger.getLogger(Company.class.getPackage().getName());
@@ -94,7 +94,7 @@ Cloneable, Comparable<Company> {
System.exit(-1);
}
if (specialProperties == null) {
- specialProperties = HolderModel.create(this, SpecialPropertyI.class);
+ specialProperties = StorageModel.create(this, SpecialPropertyI.class);
}
sp.configureFromXML(spTag);
sp.moveTo(this);
diff --git a/rails/game/CompanyManager.java b/rails/game/CompanyManager.java
index 455f565..f6e6766 100644
--- a/rails/game/CompanyManager.java
+++ b/rails/game/CompanyManager.java
@@ -1 +1 @@
-package rails.game;
import java.util.*;
import org.apache.log4j.Logger;
import rails.common.LocalText;
import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
public class CompanyManager 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 GameManager gameManager;
/*
* NOTES: 1. we don't have a map over all companies, because some games have
* duplicate nam |