|
From: <wak...@us...> - 2011-07-04 22:27:26
|
Revision: 1602
http://rails.svn.sourceforge.net/rails/?rev=1602&view=rev
Author: wakko666
Date: 2011-07-04 22:27:18 +0000 (Mon, 04 Jul 2011)
Log Message:
-----------
- Move ComponentManager to rails.common.parser.
- Refactor ComponentManager to be less of a static singleton.
- Move DisplayBuffer from rails.game to rails.common.
Modified Paths:
--------------
trunk/18xx/rails/algorithms/RevenueBonusTemplate.java
trunk/18xx/rails/algorithms/RevenueManager.java
trunk/18xx/rails/common/parser/GameInfoParser.java
trunk/18xx/rails/common/parser/XMLTags.java
trunk/18xx/rails/game/Bank.java
trunk/18xx/rails/game/BonusToken.java
trunk/18xx/rails/game/Company.java
trunk/18xx/rails/game/CompanyI.java
trunk/18xx/rails/game/CompanyManager.java
trunk/18xx/rails/game/CompanyManagerI.java
trunk/18xx/rails/game/CompanyType.java
trunk/18xx/rails/game/CompanyTypeI.java
trunk/18xx/rails/game/Game.java
trunk/18xx/rails/game/GameManager.java
trunk/18xx/rails/game/GameManagerI.java
trunk/18xx/rails/game/MapHex.java
trunk/18xx/rails/game/MapManager.java
trunk/18xx/rails/game/OperatingRound.java
trunk/18xx/rails/game/PhaseI.java
trunk/18xx/rails/game/PhaseManager.java
trunk/18xx/rails/game/PlayerManager.java
trunk/18xx/rails/game/PrivateCompany.java
trunk/18xx/rails/game/Round.java
trunk/18xx/rails/game/ShareSellingRound.java
trunk/18xx/rails/game/StartRound.java
trunk/18xx/rails/game/StartRound_1830.java
trunk/18xx/rails/game/StartRound_1835.java
trunk/18xx/rails/game/StockMarket.java
trunk/18xx/rails/game/StockMarketI.java
trunk/18xx/rails/game/StockRound.java
trunk/18xx/rails/game/TileManager.java
trunk/18xx/rails/game/Token.java
trunk/18xx/rails/game/TrainManager.java
trunk/18xx/rails/game/TrainType.java
trunk/18xx/rails/game/TreasuryShareRound.java
trunk/18xx/rails/game/correct/CashCorrectionManager.java
trunk/18xx/rails/game/correct/CorrectionManager.java
trunk/18xx/rails/game/correct/MapCorrectionManager.java
trunk/18xx/rails/game/special/SpecialProperty.java
trunk/18xx/rails/game/special/SpecialPropertyI.java
trunk/18xx/rails/game/specific/_1825/StartRound_1825.java
trunk/18xx/rails/game/specific/_1835/OperatingRound_1835.java
trunk/18xx/rails/game/specific/_1835/PrussianFormationRound.java
trunk/18xx/rails/game/specific/_1851/StartRound_1851.java
trunk/18xx/rails/game/specific/_1856/CGRFormationRound.java
trunk/18xx/rails/game/specific/_1856/OperatingRound_1856.java
trunk/18xx/rails/game/specific/_1856/StockRound_1856.java
trunk/18xx/rails/game/specific/_1880/StartRound_1880.java
trunk/18xx/rails/game/specific/_1889/OperatingRound_1889.java
trunk/18xx/rails/game/specific/_18AL/NamedTrainRevenueModifier.java
trunk/18xx/rails/game/specific/_18AL/NamedTrainToken.java
trunk/18xx/rails/game/specific/_18EU/StartRound_18EU.java
trunk/18xx/rails/game/specific/_18EU/StockRound_18EU.java
trunk/18xx/rails/game/specific/_18Kaas/RuhrRevenueModifier.java
trunk/18xx/rails/ui/swing/GameSetupWindow.java
trunk/18xx/rails/ui/swing/GameUIManager.java
trunk/18xx/rails/ui/swing/gamespecific/_1856/StatusWindow_1856.java
trunk/18xx/rails/util/ListAndFixSavedFiles.java
Added Paths:
-----------
trunk/18xx/rails/common/DisplayBuffer.java
trunk/18xx/rails/common/parser/ComponentManager.java
trunk/18xx/rails/common/parser/ConfigurableComponentI.java
trunk/18xx/rails/common/parser/GameFileParser.java
Removed Paths:
-------------
trunk/18xx/rails/game/ComponentManager.java
trunk/18xx/rails/game/ConfigurableComponentI.java
trunk/18xx/rails/game/DisplayBuffer.java
Modified: trunk/18xx/rails/algorithms/RevenueBonusTemplate.java
===================================================================
--- trunk/18xx/rails/algorithms/RevenueBonusTemplate.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/algorithms/RevenueBonusTemplate.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -5,9 +5,9 @@
import org.apache.log4j.Logger;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
-import rails.game.ConfigurableComponentI;
import rails.game.GameManagerI;
import rails.game.MapHex;
import rails.game.PhaseI;
Modified: trunk/18xx/rails/algorithms/RevenueManager.java
===================================================================
--- trunk/18xx/rails/algorithms/RevenueManager.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/algorithms/RevenueManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -8,9 +8,9 @@
import rails.common.LocalText;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
-import rails.game.ConfigurableComponentI;
import rails.game.GameManagerI;
import rails.game.state.ArrayListState;
Copied: trunk/18xx/rails/common/DisplayBuffer.java (from rev 1601, trunk/18xx/rails/game/DisplayBuffer.java)
===================================================================
--- trunk/18xx/rails/common/DisplayBuffer.java (rev 0)
+++ trunk/18xx/rails/common/DisplayBuffer.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -0,0 +1,118 @@
+/* $Header: /Users/blentz/rails_rcs/cvs/18xx/rails/game/DisplayBuffer.java,v 1.9 2010/01/31 22:22:28 macfreek Exp $ */
+package rails.common;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.log4j.Logger;
+
+import rails.game.GameManager;
+import rails.game.GameManagerI;
+import rails.util.Util;
+
+/**
+ * Class to write a log, and also to maintain a log message stack for writing to
+ * the UI.
+ */
+public final class DisplayBuffer {
+
+ /** List to catch messages before the buffer is instantiated,
+ * based on the supposition that never 2 games will be initialised simultaneously...
+ */
+ protected static List<String> initialQueue = new ArrayList<String>();
+
+ protected static Logger log =
+ Logger.getLogger(DisplayBuffer.class.getPackage().getName());
+
+ public DisplayBuffer() {
+ if (!initialQueue.isEmpty()) {
+ for (String s : initialQueue) {
+ addMessage (s, true);
+ }
+ initialQueue.clear();
+ }
+ }
+
+ /**
+ * A buffer for displaying messages in a popup window after any user action.
+ * These include error messages and other notifications of immediate
+ * interest to players.
+ */
+ private List<String> displayBuffer = new ArrayList<String>();
+
+ private boolean autoDisplay = true;
+
+ /**
+ * Add a message to the message (display) buffer (and display it on the
+ * console)
+ */
+ public static void add(String message) {
+ add (message, true);
+ }
+
+ public static void add(String message, boolean autoDisplay) {
+ GameManagerI gm = GameManager.getInstance();
+ DisplayBuffer instance = null;
+ if (gm != null) instance = gm.getDisplayBuffer();
+ if (gm == null || instance == null) {
+ // Queue in a static buffer until the instance is created
+ initialQueue.add(message);
+ } else {
+ instance.addMessage(message, autoDisplay);
+ }
+ }
+
+ private void addMessage (String message, boolean autoDisplay) {
+ DisplayBuffer instance = getInstance();
+ instance.autoDisplay = autoDisplay;
+ if (Util.hasValue(message)) {
+ instance.displayBuffer.add(message);
+ /* Also log the message (don't remove this,
+ * otherwise the message will not be logged during a reload,
+ * which may hinder troubleshooting) */
+ log.debug("To display: " + message);
+ }
+ }
+
+ private static DisplayBuffer getInstance() {
+ GameManagerI gm = GameManager.getInstance();
+ if (gm == null) {
+ return null;
+ } else {
+ return gm.getDisplayBuffer();
+ }
+ }
+
+ /** Get the current message buffer, and clear it */
+ public static String[] get() {
+ DisplayBuffer instance = getInstance();
+ if (instance == null) {
+ if (initialQueue.isEmpty()) {
+ return null;
+ } else {
+ String[] message = initialQueue.toArray(new String[0]);
+ initialQueue.clear();
+ return message;
+ }
+ } else if (instance.displayBuffer.size() > 0) {
+ String[] message = instance.displayBuffer.toArray(new String[0]);
+ instance.displayBuffer.clear();
+ return message;
+ } else {
+ return null;
+ }
+ }
+
+ public static int getSize() {
+ return getInstance().displayBuffer.size();
+ }
+
+ public static boolean getAutoDisplay () {
+ return getInstance().autoDisplay;
+ }
+
+ public static void clear() {
+ getInstance().displayBuffer.clear();
+ }
+
+}
Copied: trunk/18xx/rails/common/parser/ComponentManager.java (from rev 1601, trunk/18xx/rails/game/ComponentManager.java)
===================================================================
--- trunk/18xx/rails/common/parser/ComponentManager.java (rev 0)
+++ trunk/18xx/rails/common/parser/ComponentManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -0,0 +1,115 @@
+/* $Header: /Users/blentz/rails_rcs/cvs/18xx/rails/game/ComponentManager.java,v 1.19 2010/05/18 04:12:23 stefanfrey Exp $ */
+package rails.common.parser;
+
+import java.lang.reflect.Constructor;
+import java.util.*;
+
+import org.apache.log4j.Logger;
+
+import rails.common.LocalText;
+import rails.common.parser.XMLTags;
+
+/**
+ * ComponentManage - an implementation of ComponentManagerI, which handles the
+ * creation and configuration of rails.game components, and acts as a discovery
+ * point for other components to find them.
+ */
+public class ComponentManager {
+
+ private String gameName;
+
+ private List<Tag> componentTags;
+
+ protected Logger log = Logger.getLogger(ComponentManager.class.getPackage().getName());
+ protected List<String> directories = new ArrayList<String>();
+
+ public ComponentManager(String gameName, Tag tag, Map<String, String> gameOptions)
+ throws ConfigurationException {
+ this.gameName = gameName;
+
+ componentTags = tag.getChildren(XMLTags.COMPONENT_ELEMENT_ID);
+ for (Tag component : componentTags) {
+ String compName = component.getAttributeAsString("name");
+ log.debug("Found component " + compName);
+ configureComponent(component);
+ component.setGameOptions(gameOptions);
+ }
+ }
+
+ private void configureComponent(Tag componentTag)
+ throws ConfigurationException {
+
+ // Extract the attributes of the Component
+ String name = componentTag.getAttributeAsString(XMLTags.NAME_ATTR);
+ if (name == null) {
+ throw new ConfigurationException(
+ LocalText.getText("UnnamedComponent"));
+ }
+ String clazz = componentTag.getAttributeAsString(XMLTags.CLASS_ATTR);
+ if (clazz == null) {
+ throw new ConfigurationException(LocalText.getText(
+ "ComponentHasNoClass", name));
+ }
+ String file = componentTag.getAttributeAsString(XMLTags.FILE_ATTR);
+
+ // Only one component per name.
+ if (mComponentMap.get(name) != null) {
+ throw new ConfigurationException(LocalText.getText(
+ "ComponentConfiguredTwice", name));
+ }
+
+ // Now construct the component
+ ConfigurableComponentI component;
+ try {
+ Class<? extends ConfigurableComponentI> compClass;
+ compClass =
+ Class.forName(clazz).asSubclass(
+ ConfigurableComponentI.class);
+ Constructor<? extends ConfigurableComponentI> compCons =
+ compClass.getConstructor(new Class[0]);
+ component = compCons.newInstance(new Object[0]);
+ } catch (Exception ex) {
+ // There are MANY things that could go wrong here.
+ // They all just mean that the configuration and code
+ // do not combine to make a well-formed system.
+ // Debugging aided by chaining the caught exception.
+ throw new ConfigurationException(LocalText.getText(
+ "ComponentHasNoClass", clazz), ex);
+
+ }
+
+ // Configure the component, from a file, or the embedded XML.
+ Tag configElement = componentTag;
+ if (file != null) {
+ directories.add("data/" + gameName);
+ configElement = Tag.findTopTagInFile(file, directories, name);
+ configElement.setGameOptions(componentTag.getGameOptions());
+ }
+
+ try {
+ component.configureFromXML(configElement);
+ } catch (ConfigurationException e) {
+ // Temporarily allow components to be incompletely configured.
+ log.warn(LocalText.getText("AcceptingConfigFailure"), e);
+ }
+
+ // Add it to the map of known components.
+ mComponentMap.put(name, component);
+ log.debug(LocalText.getText("ComponentInitAs", name, clazz ));
+
+ }
+
+ /**
+ * Returns the configured parameter with the given name.
+ *
+ * @param componentName the of the component sought.
+ * @return the component sought, or null if it has not been configured.
+ */
+ public ConfigurableComponentI findComponent(String componentName) {
+ return mComponentMap.get(componentName);
+ }
+
+ private Map<String, ConfigurableComponentI> mComponentMap =
+ new HashMap<String, ConfigurableComponentI>();
+
+}
Copied: trunk/18xx/rails/common/parser/ConfigurableComponentI.java (from rev 1601, trunk/18xx/rails/game/ConfigurableComponentI.java)
===================================================================
--- trunk/18xx/rails/common/parser/ConfigurableComponentI.java (rev 0)
+++ trunk/18xx/rails/common/parser/ConfigurableComponentI.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -0,0 +1,37 @@
+/* $Header: /Users/blentz/rails_rcs/cvs/18xx/rails/game/ConfigurableComponentI.java,v 1.7 2009/10/31 17:08:26 evos Exp $ */
+package rails.common.parser;
+
+import rails.game.GameManagerI;
+
+/**
+ * Interface for rails.game components which can be configured from an XML
+ * element.
+ */
+public interface ConfigurableComponentI {
+
+ /**
+ * Instructs the component to configure itself from the provided XML
+ * element.
+ *
+ * @param element the XML element containing the configuration
+ * @throws ConfigurationException
+ */
+ void configureFromXML(Tag tag) throws ConfigurationException;
+
+ /**
+ * This method is intended to be called for each configurable
+ * component, to perforn any initialisation activities that
+ * require any other components to be initialised first.
+ * This includes creating any required relationships to other
+ * configured components and objects.
+ * <p>This method should be called where necessary after all
+ * XML file parsing has completed, so that all objects that
+ * need to be related to do exist.
+ * @param parent The 'parent' configurable component is passed to allow
+ * the 'child' to access any other object without the need to resort to
+ * static calls where possible.
+ */
+ void finishConfiguration (GameManagerI parent)
+ throws ConfigurationException;
+
+}
Added: trunk/18xx/rails/common/parser/GameFileParser.java
===================================================================
--- trunk/18xx/rails/common/parser/GameFileParser.java (rev 0)
+++ trunk/18xx/rails/common/parser/GameFileParser.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -0,0 +1,12 @@
+package rails.common.parser;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public class GameFileParser extends XMLParser {
+
+}
Modified: trunk/18xx/rails/common/parser/GameInfoParser.java
===================================================================
--- trunk/18xx/rails/common/parser/GameInfoParser.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/common/parser/GameInfoParser.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -1,6 +1,8 @@
package rails.common.parser;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
Modified: trunk/18xx/rails/common/parser/XMLTags.java
===================================================================
--- trunk/18xx/rails/common/parser/XMLTags.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/common/parser/XMLTags.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -9,7 +9,7 @@
public static final String OPTION_TAG = "Option";
public static final String GAMES_LIST_TAG = "GamesList";
public static final String NOTE_TAG = "Note";
-
+
/* ATTRIBUTES */
public static final String NAME_ATTR = "name";
public static final String COMPLETE_ATTR = "complete";
@@ -20,6 +20,12 @@
public static final String TYPE_ATTR = "type";
public static final String DEFAULT_ATTR = "default";
public static final String VALUES_ATTR = "values";
+ public static final String CLASS_ATTR = "class";
+ public static final String FILE_ATTR = "file";
+
+ public static final String VALUES_DELIM = ",";
- public static final String VALUES_DELIM = ",";
+ /* Used by ComponentManager. */
+ public static final String COMPONENT_MANAGER_ELEMENT_ID = "ComponentManager";
+ public static final String COMPONENT_ELEMENT_ID = "Component";
}
Modified: trunk/18xx/rails/game/Bank.java
===================================================================
--- trunk/18xx/rails/game/Bank.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/Bank.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -6,6 +6,7 @@
import rails.common.LocalText;
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;
@@ -63,7 +64,7 @@
}
/**
- * @see rails.game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
+ * @see rails.common.parser.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
*/
public void configureFromXML(Tag tag) throws ConfigurationException {
Modified: trunk/18xx/rails/game/BonusToken.java
===================================================================
--- trunk/18xx/rails/game/BonusToken.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/BonusToken.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -5,6 +5,7 @@
*/
package rails.game;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
import rails.game.move.ObjectMove;
Modified: trunk/18xx/rails/game/Company.java
===================================================================
--- trunk/18xx/rails/game/Company.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/Company.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -6,6 +6,7 @@
import org.apache.log4j.Logger;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
import rails.game.move.MoveableHolder;
Modified: trunk/18xx/rails/game/CompanyI.java
===================================================================
--- trunk/18xx/rails/game/CompanyI.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/CompanyI.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -3,6 +3,7 @@
import java.util.List;
+import rails.common.parser.ConfigurableComponentI;
import rails.game.move.MoveableHolder;
import rails.game.special.SpecialPropertyI;
Modified: trunk/18xx/rails/game/CompanyManager.java
===================================================================
--- trunk/18xx/rails/game/CompanyManager.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/CompanyManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -6,6 +6,7 @@
import org.apache.log4j.Logger;
import rails.common.LocalText;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
@@ -65,7 +66,7 @@
}
/**
- * @see rails.game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
+ * @see rails.common.parser.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
*/
public void configureFromXML(Tag tag) throws ConfigurationException {
Modified: trunk/18xx/rails/game/CompanyManagerI.java
===================================================================
--- trunk/18xx/rails/game/CompanyManagerI.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/CompanyManagerI.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -3,6 +3,8 @@
import java.util.List;
+import rails.common.parser.ConfigurableComponentI;
+
/**
* Interface for CompanyManager objects. A company manager is a factory which
* vends Company objects.
Modified: trunk/18xx/rails/game/CompanyType.java
===================================================================
--- trunk/18xx/rails/game/CompanyType.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/CompanyType.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -42,7 +42,7 @@
}
/**
- * @see rails.game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
+ * @see rails.common.parser.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
*/
public void configureFromXML(Tag tag) throws ConfigurationException {
//No longer needed.
Modified: trunk/18xx/rails/game/CompanyTypeI.java
===================================================================
--- trunk/18xx/rails/game/CompanyTypeI.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/CompanyTypeI.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -3,6 +3,7 @@
import java.util.List;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
Deleted: trunk/18xx/rails/game/ComponentManager.java
===================================================================
--- trunk/18xx/rails/game/ComponentManager.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/ComponentManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -1,157 +0,0 @@
-/* $Header: /Users/blentz/rails_rcs/cvs/18xx/rails/game/ComponentManager.java,v 1.19 2010/05/18 04:12:23 stefanfrey Exp $ */
-package rails.game;
-
-import java.lang.reflect.Constructor;
-import java.util.*;
-
-import org.apache.log4j.Logger;
-
-import rails.common.LocalText;
-import rails.common.parser.ConfigurationException;
-import rails.common.parser.Tag;
-
-/**
- * ComponentManage - an implementation of ComponentManagerI, which handles the
- * creation and configuration of rails.game components, and acts as a discovery
- * point for other components to find them.
- */
-public class ComponentManager {
-
- private String gameName;
-
- /** The name of the XML tag used to configure the ComponentManager. */
- public static final String ELEMENT_ID = "ComponentManager";
-
- /** The name of the XML tag used to configure a component. */
- public static final String COMPONENT_ELEMENT_ID = "Component";
-
- /** The name of the XML attribute for the component's name. */
- public static final String COMPONENT_NAME_TAG = "name";
-
- /** The name of the XML attribute for the component's class. */
- public static final String COMPONENT_CLASS_TAG = "class";
-
- /** The name of the XML attribute for the component's configuration file. */
- public static final String COMPONENT_FILE_TAG = "file";
-
- private List<Tag> componentTags;
- private Map<String, String> gameOptions;
-
- protected static Logger log =
- Logger.getLogger(ComponentManager.class.getPackage().getName());
-// protected static List<String> directories = new ArrayList<String>();
- protected List<String> directories = new ArrayList<String>();
-
- public static synchronized ComponentManager configureInstance(String gameName, Tag tag,
- Map<String, String> gameOptions)
- throws ConfigurationException {
- return new ComponentManager(gameName, tag, gameOptions);
- }
-
- private ComponentManager(String gameName, Tag tag, Map<String, String> gameOptions)
- throws ConfigurationException {
-
- this.gameOptions = gameOptions;
- this.gameName = gameName;
-
- componentTags = tag.getChildren(COMPONENT_ELEMENT_ID);
- for (Tag component : componentTags) {
- String compName = component.getAttributeAsString("name");
- log.debug("Found component " + compName);
- if (compName.equalsIgnoreCase(GameManager.GM_NAME)) {
- configureComponent(component);
- break;
- }
- }
- }
-
- public synchronized void finishPreparation() throws ConfigurationException {
-
- for (Tag componentTag : componentTags) {
- componentTag.setGameOptions(gameOptions);
- String compName = componentTag.getAttributeAsString("name");
- if (compName.equalsIgnoreCase(GameManager.GM_NAME)) continue;
- log.debug("Found component " + compName);
- configureComponent(componentTag);
- }
- }
-
- private void configureComponent(Tag componentTag)
- throws ConfigurationException {
-
- // Extract the attributes of the Component
- String name = componentTag.getAttributeAsString(COMPONENT_NAME_TAG);
- if (name == null) {
- throw new ConfigurationException(
- LocalText.getText("UnnamedComponent"));
- }
- String clazz = componentTag.getAttributeAsString(COMPONENT_CLASS_TAG);
- if (clazz == null) {
- throw new ConfigurationException(LocalText.getText(
- "ComponentHasNoClass", name));
- }
- String file = componentTag.getAttributeAsString(COMPONENT_FILE_TAG);
-
- // Only one component per name.
- if (mComponentMap.get(name) != null) {
- throw new ConfigurationException(LocalText.getText(
- "ComponentConfiguredTwice", name));
- }
-
- // Now construct the component
- ConfigurableComponentI component;
- try {
- Class<? extends ConfigurableComponentI> compClass;
- compClass =
- Class.forName(clazz).asSubclass(
- ConfigurableComponentI.class);
- Constructor<? extends ConfigurableComponentI> compCons =
- compClass.getConstructor(new Class[0]);
- component = compCons.newInstance(new Object[0]);
- } catch (Exception ex) {
- // Not great to catch Exception, but there are MANY things that
- // could go wrong
- // here, and they all just mean that the configuration and code
- // do not between
- // them make a well-formed system. Debugging aided by chaining
- // the caught exception.
- throw new ConfigurationException(LocalText.getText(
- "ComponentHasNoClass", clazz), ex);
-
- }
-
- // Configure the component, from a file, or the embedded XML.
- Tag configElement = componentTag;
- if (file != null) {
- directories.add("data/" + gameName);
- configElement = Tag.findTopTagInFile(file, directories, name);
- configElement.setGameOptions(componentTag.getGameOptions());
- }
-
- try {
- component.configureFromXML(configElement);
- } catch (ConfigurationException e) {
- // Temporarily allow components to be incompletely configured.
- log.warn(LocalText.getText("AcceptingConfigFailure"), e);
- }
-
- // Add it to the map of known components.
- mComponentMap.put(name, component);
- log.debug(LocalText.getText("ComponentInitAs", name, clazz ));
-
- }
-
- /**
- * Returns the configured parameter with the given name.
- *
- * @param componentName the of the component sought.
- * @return the component sought, or null if it has not been configured.
- */
- public ConfigurableComponentI findComponent(String componentName) {
- return mComponentMap.get(componentName);
- }
-
- private Map<String, ConfigurableComponentI> mComponentMap =
- new HashMap<String, ConfigurableComponentI>();
-
-}
Deleted: trunk/18xx/rails/game/ConfigurableComponentI.java
===================================================================
--- trunk/18xx/rails/game/ConfigurableComponentI.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/ConfigurableComponentI.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -1,38 +0,0 @@
-/* $Header: /Users/blentz/rails_rcs/cvs/18xx/rails/game/ConfigurableComponentI.java,v 1.7 2009/10/31 17:08:26 evos Exp $ */
-package rails.game;
-
-import rails.common.parser.ConfigurationException;
-import rails.common.parser.Tag;
-
-/**
- * Interface for rails.game components which can be configured from an XML
- * element.
- */
-public interface ConfigurableComponentI {
-
- /**
- * Instructs the component to configure itself from the provided XML
- * element.
- *
- * @param element the XML element containing the configuration
- * @throws ConfigurationException
- */
- void configureFromXML(Tag tag) throws ConfigurationException;
-
- /**
- * This method is intended to be called for each configurable
- * component, to perforn any initialisation activities that
- * require any other components to be initialised first.
- * This includes creating any required relationships to other
- * configured components and objects.
- * <p>This method should be called where necessary after all
- * XML file parsing has completed, so that all objects that
- * need to be related to do exist.
- * @param parent The 'parent' configurable component is passed to allow
- * the 'child' to access any other object without the need to resort to
- * static calls where possible.
- */
- void finishConfiguration (GameManagerI parent)
- throws ConfigurationException;
-
-}
Deleted: trunk/18xx/rails/game/DisplayBuffer.java
===================================================================
--- trunk/18xx/rails/game/DisplayBuffer.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/DisplayBuffer.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -1,116 +0,0 @@
-/* $Header: /Users/blentz/rails_rcs/cvs/18xx/rails/game/DisplayBuffer.java,v 1.9 2010/01/31 22:22:28 macfreek Exp $ */
-package rails.game;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.log4j.Logger;
-
-import rails.util.Util;
-
-/**
- * Class to write a log, and also to maintain a log message stack for writing to
- * the UI.
- */
-public final class DisplayBuffer {
-
- /** List to catch messages before the buffer is instantiated,
- * based on the supposition that never 2 games will be initialised simultaneously...
- */
- protected static List<String> initialQueue = new ArrayList<String>();
-
- protected static Logger log =
- Logger.getLogger(DisplayBuffer.class.getPackage().getName());
-
- public DisplayBuffer() {
- if (!initialQueue.isEmpty()) {
- for (String s : initialQueue) {
- addMessage (s, true);
- }
- initialQueue.clear();
- }
- }
-
- /**
- * A buffer for displaying messages in a popup window after any user action.
- * These include error messages and other notifications of immediate
- * interest to players.
- */
- private List<String> displayBuffer = new ArrayList<String>();
-
- private boolean autoDisplay = true;
-
- /**
- * Add a message to the message (display) buffer (and display it on the
- * console)
- */
- public static void add(String message) {
- add (message, true);
- }
-
- public static void add(String message, boolean autoDisplay) {
- GameManagerI gm = GameManager.getInstance();
- DisplayBuffer instance = null;
- if (gm != null) instance = gm.getDisplayBuffer();
- if (gm == null || instance == null) {
- // Queue in a static buffer until the instance is created
- initialQueue.add(message);
- } else {
- instance.addMessage(message, autoDisplay);
- }
- }
-
- private void addMessage (String message, boolean autoDisplay) {
- DisplayBuffer instance = getInstance();
- instance.autoDisplay = autoDisplay;
- if (Util.hasValue(message)) {
- instance.displayBuffer.add(message);
- /* Also log the message (don't remove this,
- * otherwise the message will not be logged during a reload,
- * which may hinder troubleshooting) */
- log.debug("To display: " + message);
- }
- }
-
- private static DisplayBuffer getInstance() {
- GameManagerI gm = GameManager.getInstance();
- if (gm == null) {
- return null;
- } else {
- return gm.getDisplayBuffer();
- }
- }
-
- /** Get the current message buffer, and clear it */
- public static String[] get() {
- DisplayBuffer instance = getInstance();
- if (instance == null) {
- if (initialQueue.isEmpty()) {
- return null;
- } else {
- String[] message = initialQueue.toArray(new String[0]);
- initialQueue.clear();
- return message;
- }
- } else if (instance.displayBuffer.size() > 0) {
- String[] message = instance.displayBuffer.toArray(new String[0]);
- instance.displayBuffer.clear();
- return message;
- } else {
- return null;
- }
- }
-
- public static int getSize() {
- return getInstance().displayBuffer.size();
- }
-
- public static boolean getAutoDisplay () {
- return getInstance().autoDisplay;
- }
-
- public static void clear() {
- getInstance().displayBuffer.clear();
- }
-
-}
Modified: trunk/18xx/rails/game/Game.java
===================================================================
--- trunk/18xx/rails/game/Game.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/Game.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -7,10 +7,13 @@
import org.apache.log4j.Logger;
import rails.algorithms.RevenueManager;
+import rails.common.DisplayBuffer;
import rails.common.LocalText;
+import rails.common.parser.ComponentManager;
import rails.common.parser.ConfigurationException;
import rails.common.parser.GameOption;
import rails.common.parser.Tag;
+import rails.common.parser.XMLTags;
import rails.game.action.PossibleAction;
import rails.game.special.SpecialProperty;
@@ -79,27 +82,22 @@
try {
componentManagerTag =
Tag.findTopTagInFile(GAME_XML_FILE, directories,
- ComponentManager.ELEMENT_ID);
+ XMLTags.COMPONENT_MANAGER_ELEMENT_ID);
if (componentManagerTag == null) {
throw new ConfigurationException(
"No Game XML element found in file " + GAME_XML_FILE);
}
componentManagerTag.setGameOptions(gameOptions);
- componentManager =
- ComponentManager.configureInstance(name, componentManagerTag, gameOptions);
+
+ // Have the ComponentManager work through the other rails.game files
+ //XXX: Ultimately calls everyone's configureFromXML() methods.
+ componentManager = new ComponentManager(name, componentManagerTag, gameOptions);
log.info("========== Start of rails.game " + name + " ==========");
log.info("Rails version "+version);
ReportBuffer.add(LocalText.getText("GameIs", name));
- // set special properties and token static variables
- SpecialProperty.init();
- Token.init();
-
- // Have the ComponentManager work through the other rails.game files
- componentManager.finishPreparation();
-
playerManager = (PlayerManager) componentManager.findComponent("PlayerManager");
if (playerManager == null) {
throw new ConfigurationException(
Modified: trunk/18xx/rails/game/GameManager.java
===================================================================
--- trunk/18xx/rails/game/GameManager.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/GameManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -10,10 +10,12 @@
import org.apache.log4j.NDC;
import rails.algorithms.RevenueManager;
+import rails.common.DisplayBuffer;
import rails.common.GuiDef;
import rails.common.GuiHints;
import rails.common.LocalText;
import rails.common.parser.Config;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.GameOption;
import rails.common.parser.Tag;
@@ -102,9 +104,6 @@
protected EnumMap<GameDef.Parm, Object> gameParameters
= new EnumMap<GameDef.Parm, Object>(GameDef.Parm.class);
- // protected EnumSet<CorrectionType> activeCorrections
- // = EnumSet.noneOf(CorrectionType.class);
-
/**
* Current round should not be set here but from within the Round classes.
* This is because in some cases the round has already changed to another
Modified: trunk/18xx/rails/game/GameManagerI.java
===================================================================
--- trunk/18xx/rails/game/GameManagerI.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/GameManagerI.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -4,8 +4,10 @@
import java.util.Map;
import rails.algorithms.RevenueManager;
+import rails.common.DisplayBuffer;
import rails.common.GuiDef;
import rails.common.GuiHints;
+import rails.common.parser.ConfigurableComponentI;
import rails.game.action.PossibleAction;
import rails.game.correct.CorrectionManagerI;
import rails.game.correct.CorrectionType;
@@ -17,7 +19,7 @@
public interface GameManagerI extends MoveableHolder, ConfigurableComponentI {
/**
- * @see rails.game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
+ * @see rails.common.parser.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
*/
public abstract void init(String gameName, PlayerManager playerManager,
CompanyManagerI companyManager, PhaseManager phaseManager,
Modified: trunk/18xx/rails/game/MapHex.java
===================================================================
--- trunk/18xx/rails/game/MapHex.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/MapHex.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -9,6 +9,7 @@
import rails.algorithms.RevenueBonusTemplate;
import rails.common.LocalText;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
import rails.game.action.LayTile;
@@ -156,7 +157,7 @@
}
/**
- * @see rails.game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
+ * @see rails.common.parser.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
*/
public void configureFromXML(Tag tag) throws ConfigurationException {
Pattern namePattern = Pattern.compile("(\\D+?)(-?\\d+)");
Modified: trunk/18xx/rails/game/MapManager.java
===================================================================
--- trunk/18xx/rails/game/MapManager.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/MapManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -6,6 +6,7 @@
import org.apache.log4j.Logger;
import rails.common.parser.Config;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
import tools.Util;
@@ -58,7 +59,7 @@
}
/**
- * @see rails.game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
+ * @see rails.common.parser.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
*/
public void configureFromXML(Tag tag) throws ConfigurationException {
String attr = tag.getAttributeAsString("tileOrientation");
Modified: trunk/18xx/rails/game/OperatingRound.java
===================================================================
--- trunk/18xx/rails/game/OperatingRound.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/OperatingRound.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -3,6 +3,7 @@
import java.util.*;
+import rails.common.DisplayBuffer;
import rails.common.GuiDef;
import rails.common.LocalText;
import rails.common.parser.GameOption;
Modified: trunk/18xx/rails/game/PhaseI.java
===================================================================
--- trunk/18xx/rails/game/PhaseI.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/PhaseI.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -3,6 +3,8 @@
import java.util.Map;
+import rails.common.parser.ConfigurableComponentI;
+
public interface PhaseI extends ConfigurableComponentI {
public boolean isTileColourAllowed(String tileColour);
Modified: trunk/18xx/rails/game/PhaseManager.java
===================================================================
--- trunk/18xx/rails/game/PhaseManager.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/PhaseManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -5,6 +5,7 @@
import org.apache.log4j.Logger;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
import rails.game.model.ModelObject;
Modified: trunk/18xx/rails/game/PlayerManager.java
===================================================================
--- trunk/18xx/rails/game/PlayerManager.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/PlayerManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -4,6 +4,7 @@
import java.util.*;
import rails.common.LocalText;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
Modified: trunk/18xx/rails/game/PrivateCompany.java
===================================================================
--- trunk/18xx/rails/game/PrivateCompany.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/PrivateCompany.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -64,7 +64,7 @@
}
/**
- * @see rails.game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
+ * @see rails.common.parser.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
*/
@Override
public void configureFromXML(Tag tag) throws ConfigurationException {
Modified: trunk/18xx/rails/game/Round.java
===================================================================
--- trunk/18xx/rails/game/Round.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/Round.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -9,6 +9,7 @@
import org.apache.log4j.Logger;
+import rails.common.DisplayBuffer;
import rails.common.GuiHints;
import rails.common.LocalText;
import rails.game.action.*;
Modified: trunk/18xx/rails/game/ShareSellingRound.java
===================================================================
--- trunk/18xx/rails/game/ShareSellingRound.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/ShareSellingRound.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -7,6 +7,7 @@
import java.util.*;
+import rails.common.DisplayBuffer;
import rails.common.GuiDef;
import rails.common.LocalText;
import rails.common.parser.GameOption;
Modified: trunk/18xx/rails/game/StartRound.java
===================================================================
--- trunk/18xx/rails/game/StartRound.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/StartRound.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -3,6 +3,7 @@
import java.util.ArrayList;
import java.util.List;
+import rails.common.DisplayBuffer;
import rails.common.GuiDef;
import rails.common.LocalText;
import rails.common.parser.GameOption;
Modified: trunk/18xx/rails/game/StartRound_1830.java
===================================================================
--- trunk/18xx/rails/game/StartRound_1830.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/StartRound_1830.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -1,6 +1,7 @@
/* $Header: /Users/blentz/rails_rcs/cvs/18xx/rails/game/StartRound_1830.java,v 1.33 2010/06/21 22:57:53 stefanfrey Exp $ */
package rails.game;
+import rails.common.DisplayBuffer;
import rails.common.LocalText;
import rails.common.parser.GameOption;
import rails.game.action.*;
Modified: trunk/18xx/rails/game/StartRound_1835.java
===================================================================
--- trunk/18xx/rails/game/StartRound_1835.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/StartRound_1835.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -4,6 +4,7 @@
import java.util.ArrayList;
import java.util.List;
+import rails.common.DisplayBuffer;
import rails.common.LocalText;
import rails.game.action.*;
import rails.game.state.IntegerState;
Modified: trunk/18xx/rails/game/StockMarket.java
===================================================================
--- trunk/18xx/rails/game/StockMarket.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/StockMarket.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -4,6 +4,7 @@
import java.util.*;
import rails.common.LocalText;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
import rails.game.move.PriceTokenMove;
@@ -44,7 +45,7 @@
}
/**
- * @see rails.game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
+ * @see rails.common.parser.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
*/
public void configureFromXML(Tag tag) throws ConfigurationException {
Modified: trunk/18xx/rails/game/StockMarketI.java
===================================================================
--- trunk/18xx/rails/game/StockMarketI.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/StockMarketI.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -3,6 +3,8 @@
import java.util.List;
+import rails.common.parser.ConfigurableComponentI;
+
public interface StockMarketI extends ConfigurableComponentI {
/**
Modified: trunk/18xx/rails/game/StockRound.java
===================================================================
--- trunk/18xx/rails/game/StockRound.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/StockRound.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -2,6 +2,7 @@
import java.util.*;
+import rails.common.DisplayBuffer;
import rails.common.GuiDef;
import rails.common.LocalText;
import rails.common.parser.GameOption;
Modified: trunk/18xx/rails/game/TileManager.java
===================================================================
--- trunk/18xx/rails/game/TileManager.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/TileManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -6,6 +6,7 @@
import org.apache.log4j.Logger;
import rails.common.LocalText;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
@@ -27,7 +28,7 @@
}
/**
- * @see rails.game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
+ * @see rails.common.parser.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
*/
public void configureFromXML(Tag tileSetTop) throws ConfigurationException {
/*
Modified: trunk/18xx/rails/game/Token.java
===================================================================
--- trunk/18xx/rails/game/Token.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/Token.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -29,18 +29,10 @@
Logger.getLogger(Token.class.getPackage().getName());
public Token() {
-
uniqueId = "Token_" + (index++);
tokenMap.put(uniqueId, this);
}
- // initialize the special properties static variables
- public static void init() {
- tokenMap = new HashMap<String, TokenI>();
- index = 0;
- log.debug("Init token static variables");
- }
-
public static TokenI getByUniqueId(String id) {
return tokenMap.get(id);
}
Modified: trunk/18xx/rails/game/TrainManager.java
===================================================================
--- trunk/18xx/rails/game/TrainManager.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/TrainManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -6,6 +6,7 @@
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.move.ObjectMove;
@@ -72,7 +73,7 @@
}
/**
- * @see rails.game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
+ * @see rails.common.parser.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
*/
public void configureFromXML(Tag tag) throws ConfigurationException {
Modified: trunk/18xx/rails/game/TrainType.java
===================================================================
--- trunk/18xx/rails/game/TrainType.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/TrainType.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -54,7 +54,7 @@
}
/**
- * @see rails.game.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
+ * @see rails.common.parser.ConfigurableComponentI#configureFromXML(org.w3c.dom.Element)
*/
public void configureFromXML(Tag tag) throws ConfigurationException {
Modified: trunk/18xx/rails/game/TreasuryShareRound.java
===================================================================
--- trunk/18xx/rails/game/TreasuryShareRound.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/TreasuryShareRound.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -7,6 +7,7 @@
import java.util.*;
+import rails.common.DisplayBuffer;
import rails.common.GuiDef;
import rails.common.LocalText;
import rails.game.action.*;
Modified: trunk/18xx/rails/game/correct/CashCorrectionManager.java
===================================================================
--- trunk/18xx/rails/game/correct/CashCorrectionManager.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/correct/CashCorrectionManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -1,5 +1,6 @@
package rails.game.correct;
+import rails.common.DisplayBuffer;
import rails.common.LocalText;
import rails.game.*;
import rails.game.move.CashMove;
Modified: trunk/18xx/rails/game/correct/CorrectionManager.java
===================================================================
--- trunk/18xx/rails/game/correct/CorrectionManager.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/correct/CorrectionManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -5,8 +5,8 @@
import org.apache.log4j.Logger;
+import rails.common.DisplayBuffer;
import rails.common.LocalText;
-import rails.game.DisplayBuffer;
import rails.game.GameManager;
import rails.game.ReportBuffer;
import rails.game.move.StateChange;
Modified: trunk/18xx/rails/game/correct/MapCorrectionManager.java
===================================================================
--- trunk/18xx/rails/game/correct/MapCorrectionManager.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/correct/MapCorrectionManager.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -4,10 +4,10 @@
import java.util.HashMap;
import java.util.List;
+import rails.common.DisplayBuffer;
import rails.common.LocalText;
import rails.game.BaseToken;
import rails.game.City;
-import rails.game.DisplayBuffer;
import rails.game.GameManager;
import rails.game.MapHex;
import rails.game.ReportBuffer;
Modified: trunk/18xx/rails/game/special/SpecialProperty.java
===================================================================
--- trunk/18xx/rails/game/special/SpecialProperty.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/special/SpecialProperty.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -54,20 +54,13 @@
/** To give subclasses access to the various 'managers' */
protected GameManagerI gameManager;
- protected static Map<Integer, SpecialPropertyI> spMap =
- new HashMap<Integer, SpecialPropertyI>();
+ protected static Map<Integer, SpecialPropertyI> spMap = new HashMap<Integer, SpecialPropertyI>();
+
protected static int lastIndex = 0;
protected static Logger log =
Logger.getLogger(SpecialProperty.class.getPackage().getName());
- // initialize the special properties static variables
- public static void init() {
- spMap = new HashMap<Integer, SpecialPropertyI>();
- lastIndex = 0;
- log.debug("Init special property static variables");
- }
-
public SpecialProperty() {
uniqueId = ++lastIndex;
spMap.put(uniqueId, this);
Modified: trunk/18xx/rails/game/special/SpecialPropertyI.java
===================================================================
--- trunk/18xx/rails/game/special/SpecialPropertyI.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/special/SpecialPropertyI.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -1,6 +1,7 @@
/* $Header: /Users/blentz/rails_rcs/cvs/18xx/rails/game/special/SpecialPropertyI.java,v 1.12 2010/03/16 21:21:59 evos Exp $ */
package rails.game.special;
+import rails.common.parser.ConfigurableComponentI;
import rails.game.*;
import rails.game.move.Moveable;
import rails.game.move.MoveableHolder;
Modified: trunk/18xx/rails/game/specific/_1825/StartRound_1825.java
===================================================================
--- trunk/18xx/rails/game/specific/_1825/StartRound_1825.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/specific/_1825/StartRound_1825.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -2,6 +2,7 @@
import java.util.List;
+import rails.common.DisplayBuffer;
import rails.common.LocalText;
import rails.game.*;
import rails.game.action.*;
Modified: trunk/18xx/rails/game/specific/_1835/OperatingRound_1835.java
===================================================================
--- trunk/18xx/rails/game/specific/_1835/OperatingRound_1835.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/specific/_1835/OperatingRound_1835.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -2,6 +2,7 @@
import java.util.*;
+import rails.common.DisplayBuffer;
import rails.common.LocalText;
import rails.common.parser.GameOption;
import rails.game.*;
Modified: trunk/18xx/rails/game/specific/_1835/PrussianFormationRound.java
===================================================================
--- trunk/18xx/rails/game/specific/_1835/PrussianFormationRound.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/specific/_1835/PrussianFormationRound.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -2,6 +2,7 @@
import java.util.*;
+import rails.common.DisplayBuffer;
import rails.common.GuiDef;
import rails.common.LocalText;
import rails.game.*;
Modified: trunk/18xx/rails/game/specific/_1851/StartRound_1851.java
===================================================================
--- trunk/18xx/rails/game/specific/_1851/StartRound_1851.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/specific/_1851/StartRound_1851.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -3,6 +3,7 @@
import java.util.List;
+import rails.common.DisplayBuffer;
import rails.common.LocalText;
import rails.game.*;
import rails.game.action.*;
Modified: trunk/18xx/rails/game/specific/_1856/CGRFormationRound.java
===================================================================
--- trunk/18xx/rails/game/specific/_1856/CGRFormationRound.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/specific/_1856/CGRFormationRound.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -2,6 +2,7 @@
import java.util.*;
+import rails.common.DisplayBuffer;
import rails.common.GuiDef;
import rails.common.LocalText;
import rails.game.*;
Modified: trunk/18xx/rails/game/specific/_1856/OperatingRound_1856.java
===================================================================
--- trunk/18xx/rails/game/specific/_1856/OperatingRound_1856.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/specific/_1856/OperatingRound_1856.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -3,6 +3,7 @@
import java.util.ArrayList;
import java.util.List;
+import rails.common.DisplayBuffer;
import rails.common.GuiDef;
import rails.common.LocalText;
import rails.game.*;
Modified: trunk/18xx/rails/game/specific/_1856/StockRound_1856.java
===================================================================
--- trunk/18xx/rails/game/specific/_1856/StockRound_1856.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/specific/_1856/StockRound_1856.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -1,5 +1,6 @@
package rails.game.specific._1856;
+import rails.common.DisplayBuffer;
import rails.common.LocalText;
import rails.game.*;
import rails.game.action.BuyCertificate;
Modified: trunk/18xx/rails/game/specific/_1880/StartRound_1880.java
===================================================================
--- trunk/18xx/rails/game/specific/_1880/StartRound_1880.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/specific/_1880/StartRound_1880.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -3,6 +3,7 @@
*/
package rails.game.specific._1880;
+import rails.common.DisplayBuffer;
import rails.common.LocalText;
import rails.game.*;
import rails.game.action.*;
Modified: trunk/18xx/rails/game/specific/_1889/OperatingRound_1889.java
===================================================================
--- trunk/18xx/rails/game/specific/_1889/OperatingRound_1889.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/specific/_1889/OperatingRound_1889.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -1,6 +1,7 @@
/* $Header: /Users/blentz/rails_rcs/cvs/18xx/rails/game/specific/_1889/OperatingRound_1889.java,v 1.1 2010/02/23 22:21:40 stefanfrey Exp $ */
package rails.game.specific._1889;
+import rails.common.DisplayBuffer;
import rails.common.LocalText;
import rails.common.parser.GameOption;
import rails.game.*;
Modified: trunk/18xx/rails/game/specific/_18AL/NamedTrainRevenueModifier.java
===================================================================
--- trunk/18xx/rails/game/specific/_18AL/NamedTrainRevenueModifier.java 2011-07-04 16:31:43 UTC (rev 1601)
+++ trunk/18xx/rails/game/specific/_18AL/NamedTrainRevenueModifier.java 2011-07-04 22:27:18 UTC (rev 1602)
@@ -10,9 +10,9 @@
import rails.algorithms.RevenueDynamicModifier;
import rails.algorithms.RevenueStaticModifier;
import rails.algorithms.RevenueTrainRun;
+import rails.common.parser.ConfigurableComponentI;
import rails.common.parser.ConfigurationException;
import rails.common.parser.Tag;
-import rails.game.ConfigurableComponentI;
import rails.game.GameManagerI;
import rails.game.MapHex;
import rails.game.TrainI;
Modified: trunk/18xx/rails/game/specific/_18AL/NamedTrainToken.java
===================================================================
--- trunk/18xx/rails/game/specific/_18AL/Name...
[truncated message content] |