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 |