|
From: Stefan F. <ste...@us...> - 2012-08-19 20:21:51
|
junit/rails/game/state/ActionChangeSetTest.java | 82 -----
junit/rails/game/state/AutoChangeSetTest.java | 68 ----
junit/rails/game/state/BlockingChangeSetTest.java | 71 +++++
junit/rails/game/state/BooleanStateTest.java | 4
junit/rails/game/state/ChangeStackTest.java | 66 ++--
junit/rails/game/state/GameChangeSetTest.java | 68 ++++
junit/rails/game/state/GenericStateTest.java | 4
junit/rails/game/state/HashMapStateTest.java | 12
junit/rails/game/state/IntegerStateTest.java | 2
junit/rails/game/state/StateTestUtils.java | 2
junit/rails/game/state/StringStateTest.java | 8
src/rails/common/parser/ComponentManager.java | 8
src/rails/common/parser/GameFileParser.java | 71 ++---
src/rails/game/ActionChangeSet.java | 31 ++
src/rails/game/Game.java | 297 ---------------------
src/rails/game/GameRoot.java | 306 ++++++++++++++++++++++
src/rails/game/PlayerManager.java | 4
src/rails/game/state/AbstractItem.java | 10
src/rails/game/state/ActionChangeSet.java | 36 --
src/rails/game/state/AutoChangeSet.java | 26 -
src/rails/game/state/ChangeSet.java | 93 ++++--
src/rails/game/state/ChangeStack.java | 171 ++++++------
src/rails/game/state/Context.java | 23 -
src/rails/game/state/GameRoot.java | 23 +
src/rails/game/state/Item.java | 2
src/rails/game/state/Manager.java | 10
src/rails/game/state/Observable.java | 10
src/rails/game/state/Root.java | 7
src/rails/game/state/StateManager.java | 7
src/rails/ui/swing/GameSetupWindow.java | 8
src/rails/util/GameFileIO.java | 14 -
src/rails/util/RunGame.java | 6
src/test/TestGame.java | 4
src/test/TestGameBuilder.java | 6
34 files changed, 771 insertions(+), 789 deletions(-)
New commits:
commit 0485c9f83aa5a2a1e32be447657e15020f15c088
Author: Stefan Frey <ste...@we...>
Date: Tue Jul 31 19:14:04 2012 +0200
Added StateManagerTest and ModelTest
Refactored StateManager topological sorting
Refactored ChangeSets
Started Rewriting Managers etc.
diff --git a/junit/rails/game/state/ActionChangeSetTest.java b/junit/rails/game/state/ActionChangeSetTest.java
deleted file mode 100644
index dd388ec..0000000
--- a/junit/rails/game/state/ActionChangeSetTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package rails.game.state;
-
-import static org.fest.assertions.api.Assertions.assertThat;
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
-
-import org.junit.*;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-
-import rails.game.Player;
-import rails.game.action.PossibleAction;
-
-@RunWith(MockitoJUnitRunner.class)
-public class ActionChangeSetTest {
-
- private final static String STATE_ID = "State";
-
- private Root root;
- private BooleanState state;
- @Mock Model model;
- private ChangeStack changeStack;
- @Mock Player player;
- @Mock PossibleAction action;
- private ActionChangeSet changeSet;
-
-
- @Before
- public void setUp() {
- root = Root.create();
- state = BooleanState.create(root, STATE_ID);
- state.addModel(model);
- changeStack = root.getStateManager().getChangeStack();
- changeSet = changeStack.startActionChangeSet(player, action);
- }
-
- @Test
- public void testActionChangeSet() {
- assertNotNull(changeSet);
- }
-
- @Test
- public void testGetPlayer() {
- assertSame(player, changeSet.getPlayer());
- }
-
- @Test
- public void testGetAction() {
- assertSame(action, changeSet.getAction());
- }
-
- @Test
- public void testAddChange() {
- assertTrue(changeSet.isEmpty());
- state.set(true);
- assertFalse(changeSet.isEmpty());
- verify(model).update();
- }
-
- @Test
- public void testClose() {
- assertFalse(changeSet.isClosed());
- state.set(true);
- changeSet.close();
- assertTrue(changeSet.isClosed());
- assertThat(changeSet.getStates()).contains(state);
- }
-
- @Test
- public void testUnAndReexecute() {
- assertFalse(state.value());
- state.set(true);
- assertTrue(state.value());
- changeSet.close();
- changeSet.unexecute();
- assertFalse(state.value());
- changeSet.reexecute();
- assertTrue(state.value());
- }
-
-}
diff --git a/junit/rails/game/state/AutoChangeSetTest.java b/junit/rails/game/state/AutoChangeSetTest.java
deleted file mode 100644
index 83aee84..0000000
--- a/junit/rails/game/state/AutoChangeSetTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package rails.game.state;
-
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
-import static org.fest.assertions.api.Assertions.assertThat;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-
-@RunWith(MockitoJUnitRunner.class)
-public class AutoChangeSetTest {
-
- private final static String STATE_ID = "State";
-
- private Root root;
- private BooleanState state;
- @Mock Model model;
- private ChangeStack changeStack;
- private AutoChangeSet changeSet;
-
-
- @Before
- public void setUp() {
- root = Root.create();
- state = BooleanState.create(root, STATE_ID);
- state.addModel(model);
- changeStack = root.getStateManager().getChangeStack();
- changeSet = changeStack.closeCurrentChangeSet();
- }
-
- @Test
- public void testAutoChangeSet() {
- assertNotNull(changeSet);
- }
-
- @Test
- public void testAddChange() {
- assertTrue(changeSet.isEmpty());
- state.set(true);
- assertFalse(changeSet.isEmpty());
- verify(model).update();
- }
-
- @Test
- public void testClose() {
- assertFalse(changeSet.isClosed());
- state.set(true);
- changeSet.close();
- assertTrue(changeSet.isClosed());
- assertThat(changeSet.getStates()).contains(state);
- }
-
- @Test
- public void testUnAndReexecute() {
- assertFalse(state.value());
- state.set(true);
- assertTrue(state.value());
- changeSet.close();
- changeSet.unexecute();
- assertFalse(state.value());
- changeSet.reexecute();
- assertTrue(state.value());
- }
-}
diff --git a/junit/rails/game/state/BlockingChangeSetTest.java b/junit/rails/game/state/BlockingChangeSetTest.java
new file mode 100644
index 0000000..4c7bc51
--- /dev/null
+++ b/junit/rails/game/state/BlockingChangeSetTest.java
@@ -0,0 +1,71 @@
+package rails.game.state;
+
+import static org.fest.assertions.api.Assertions.assertThat;
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import org.junit.*;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+
+import rails.game.state.BooleanState;
+import rails.game.state.ChangeStack;
+import rails.game.state.Model;
+import rails.game.state.Root;
+
+@RunWith(MockitoJUnitRunner.class)
+public class BlockingChangeSetTest {
+
+ private final static String STATE_ID = "State";
+
+ private Root root;
+ private BooleanState state;
+ @Mock Model model;
+ private ChangeStack changeStack;
+ private ChangeSet changeSet;
+
+ @Before
+ public void setUp() {
+ root = Root.create();
+ state = BooleanState.create(root, STATE_ID);
+ state.addModel(model);
+ changeStack = root.getStateManager().getChangeStack();
+ changeSet = changeStack.startChangeSet(new ChangeSet(true, false));
+ }
+
+ @Test
+ public void testActionChangeSet() {
+ assertNotNull(changeSet);
+ }
+
+ @Test
+ public void testAddChange() {
+ assertTrue(changeSet.isEmpty());
+ state.set(true);
+ assertFalse(changeSet.isEmpty());
+ verify(model).update();
+ }
+
+ @Test
+ public void testClose() {
+ assertFalse(changeSet.isClosed());
+ state.set(true);
+ changeSet.close();
+ assertTrue(changeSet.isClosed());
+ assertThat(changeSet.getObservableStates()).contains(state);
+ }
+
+ @Test
+ public void testUnAndReexecute() {
+ assertFalse(state.value());
+ state.set(true);
+ assertTrue(state.value());
+ changeSet.close();
+ changeSet.unexecute();
+ assertFalse(state.value());
+ changeSet.reexecute();
+ assertTrue(state.value());
+ }
+
+}
diff --git a/junit/rails/game/state/BooleanStateTest.java b/junit/rails/game/state/BooleanStateTest.java
index d531aa8..7eb25ed 100644
--- a/junit/rails/game/state/BooleanStateTest.java
+++ b/junit/rails/game/state/BooleanStateTest.java
@@ -43,7 +43,7 @@ public class BooleanStateTest {
stateDefault.set(false);
stateInit.set(true);
StateTestUtils.close(root);
- assertThat(StateTestUtils.getLastClosedChangeSet(root).getStates()).doesNotContain(stateDefault, stateInit);
+ assertThat(StateTestUtils.getLastClosedChangeSet(root).getObservableStates()).doesNotContain(stateDefault, stateInit);
}
@Test
@@ -52,7 +52,7 @@ public class BooleanStateTest {
stateDefault.set(true);
assertTrue(stateDefault.value());
StateTestUtils.close(root);
- assertThat(StateTestUtils.getLastClosedChangeSet(root).getStates()).contains(stateDefault);
+ assertThat(StateTestUtils.getLastClosedChangeSet(root).getObservableStates()).contains(stateDefault);
StateTestUtils.undo(root);
assertFalse(stateDefault.value());
StateTestUtils.redo(root);
diff --git a/junit/rails/game/state/ChangeStackTest.java b/junit/rails/game/state/ChangeStackTest.java
index 3b24122..fbd2663 100644
--- a/junit/rails/game/state/ChangeStackTest.java
+++ b/junit/rails/game/state/ChangeStackTest.java
@@ -1,17 +1,14 @@
package rails.game.state;
-import static org.junit.Assert.*;
+import static org.fest.assertions.api.Fail.failBecauseExceptionWasNotThrown;
import static org.fest.assertions.api.Assertions.assertThat;
+import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
-import rails.game.Player;
-import rails.game.action.PossibleAction;
-
@RunWith(MockitoJUnitRunner.class)
public class ChangeStackTest {
@@ -21,24 +18,26 @@ public class ChangeStackTest {
private BooleanState state;
private ChangeStack changeStack;
- private AutoChangeSet auto_1, auto_2, auto_3;
- private ActionChangeSet action_1, action_2, action_3;
- @Mock Player player;
- @Mock PossibleAction action;
+ private ChangeSet auto_1, auto_2, auto_3;
+ private ChangeSet action_1, action_2, action_3;
+ private ChangeSet startActionChangeSet() {
+ return changeStack.startChangeSet(new ChangeSet(true, false));
+ }
+
@Before
public void setUp() {
root = Root.create();
state = BooleanState.create(root, STATE_ID);
changeStack = root.getStateManager().getChangeStack();
- auto_1 = (AutoChangeSet)changeStack.getCurrentChangeSet();
- action_1 = changeStack.startActionChangeSet(player, action);
+ auto_1 = changeStack.getCurrentChangeSet();
+ action_1 = startActionChangeSet();
auto_2 = changeStack.closeCurrentChangeSet();
state.set(true);
auto_3 = changeStack.closeCurrentChangeSet();
- action_2 = changeStack.startActionChangeSet(player, action);
+ action_2 = startActionChangeSet();
state.set(false);
- action_3 = changeStack.startActionChangeSet(player, action);
+ action_3 = startActionChangeSet();
}
@Test
@@ -61,28 +60,33 @@ public class ChangeStackTest {
public void testUndo() {
assertFalse(state.value());
// undo action 3
- assertTrue(changeStack.undo());
+ changeStack.undo();
assertEquals(4, changeStack.sizeUndoStack());
assertSame(action_2, changeStack.getLastClosedChangeSet());
- assertThat(changeStack.getCurrentChangeSet()).isInstanceOf(AutoChangeSet.class);
+ assertFalse(changeStack.getCurrentChangeSet().isBlocking());
assertFalse(state.value());
// undo action 2
- assertTrue(changeStack.undo());
+ changeStack.undo();
assertEquals(3, changeStack.sizeUndoStack());
assertSame(auto_2, changeStack.getLastClosedChangeSet());
- assertThat(changeStack.getCurrentChangeSet()).isInstanceOf(AutoChangeSet.class);
+ assertFalse(changeStack.getCurrentChangeSet().isBlocking());
assertTrue(state.value());
// undo auto_2 and action 1
- assertTrue(changeStack.undo());
+ changeStack.undo();
assertEquals(1, changeStack.sizeUndoStack());
assertSame(auto_1, changeStack.getLastClosedChangeSet());
- assertThat(changeStack.getCurrentChangeSet()).isInstanceOf(AutoChangeSet.class);
+ assertFalse(changeStack.getCurrentChangeSet().isBlocking());
assertFalse(state.value());
- // undo should not do anything now
- assertFalse(changeStack.undo());
+ // undo should fail now
+ try{
+ changeStack.undo();
+ failBecauseExceptionWasNotThrown(IllegalStateException.class);
+ } catch (Exception e){
+ assertThat(e).isInstanceOf(IllegalStateException.class);
+ }
assertEquals(1, changeStack.sizeUndoStack());
assertSame(auto_1, changeStack.getLastClosedChangeSet());
- assertThat(changeStack.getCurrentChangeSet()).isInstanceOf(AutoChangeSet.class);
+ assertFalse(changeStack.getCurrentChangeSet().isBlocking());
assertFalse(state.value());
}
@@ -92,30 +96,30 @@ public class ChangeStackTest {
changeStack.undo();
changeStack.undo();
changeStack.undo();
- // the state unitl now was checked in testUndo
+ // the state until now was checked in testUndo
// now redo action_1 and auto_2
- assertTrue(changeStack.redo());
+ changeStack.redo();
assertEquals(3, changeStack.sizeUndoStack());
assertSame(auto_2, changeStack.getLastClosedChangeSet());
- assertThat(changeStack.getCurrentChangeSet()).isInstanceOf(AutoChangeSet.class);
+ assertFalse(changeStack.getCurrentChangeSet().isBlocking());
assertTrue(state.value());
// redo action_2
- assertTrue(changeStack.redo());
+ changeStack.redo();
assertEquals(4, changeStack.sizeUndoStack());
assertSame(action_2, changeStack.getLastClosedChangeSet());
- assertThat(changeStack.getCurrentChangeSet()).isInstanceOf(AutoChangeSet.class);
+ assertFalse(changeStack.getCurrentChangeSet().isBlocking());
assertFalse(state.value());
// redo action_3
- assertTrue(changeStack.redo());
+ changeStack.redo();
assertEquals(5, changeStack.sizeUndoStack());
assertSame(action_3, changeStack.getLastClosedChangeSet());
- assertThat(changeStack.getCurrentChangeSet()).isInstanceOf(AutoChangeSet.class);
+ assertFalse(changeStack.getCurrentChangeSet().isBlocking());
assertFalse(state.value());
// then it should do anything
- assertFalse(changeStack.redo());
+ changeStack.redo();
assertEquals(5, changeStack.sizeUndoStack());
assertSame(action_3, changeStack.getLastClosedChangeSet());
- assertThat(changeStack.getCurrentChangeSet()).isInstanceOf(AutoChangeSet.class);
+ assertFalse(changeStack.getCurrentChangeSet().isBlocking());
assertFalse(state.value());
}
diff --git a/junit/rails/game/state/GameChangeSetTest.java b/junit/rails/game/state/GameChangeSetTest.java
new file mode 100644
index 0000000..5ed9c31
--- /dev/null
+++ b/junit/rails/game/state/GameChangeSetTest.java
@@ -0,0 +1,68 @@
+package rails.game.state;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+import static org.fest.assertions.api.Assertions.assertThat;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+
+@RunWith(MockitoJUnitRunner.class)
+public class GameChangeSetTest {
+
+ private final static String STATE_ID = "State";
+
+ private Root root;
+ private BooleanState state;
+ @Mock Model model;
+ private ChangeStack changeStack;
+ private ChangeSet changeSet;
+
+
+ @Before
+ public void setUp() {
+ root = Root.create();
+ state = BooleanState.create(root, STATE_ID);
+ state.addModel(model);
+ changeStack = root.getStateManager().getChangeStack();
+ changeSet = changeStack.closeCurrentChangeSet();
+ }
+
+ @Test
+ public void testAutoChangeSet() {
+ assertNotNull(changeSet);
+ }
+
+ @Test
+ public void testAddChange() {
+ assertTrue(changeSet.isEmpty());
+ state.set(true);
+ assertFalse(changeSet.isEmpty());
+ verify(model).update();
+ }
+
+ @Test
+ public void testClose() {
+ assertFalse(changeSet.isClosed());
+ state.set(true);
+ changeSet.close();
+ assertTrue(changeSet.isClosed());
+ assertThat(changeSet.getObservableStates()).contains(state);
+ }
+
+ @Test
+ public void testUnAndReexecute() {
+ assertFalse(state.value());
+ state.set(true);
+ assertTrue(state.value());
+ changeSet.close();
+ changeSet.unexecute();
+ assertFalse(state.value());
+ changeSet.reexecute();
+ assertTrue(state.value());
+ }
+}
diff --git a/junit/rails/game/state/GenericStateTest.java b/junit/rails/game/state/GenericStateTest.java
index 4222edc..ccfbe49 100644
--- a/junit/rails/game/state/GenericStateTest.java
+++ b/junit/rails/game/state/GenericStateTest.java
@@ -53,7 +53,7 @@ public class GenericStateTest {
stateDefault.set(null);
stateInit.set(item);
StateTestUtils.close(root);
- assertThat(StateTestUtils.getLastClosedChangeSet(root).getStates()).doesNotContain(stateDefault, stateInit);
+ assertThat(StateTestUtils.getLastClosedChangeSet(root).getObservableStates()).doesNotContain(stateDefault, stateInit);
}
@Test
@@ -68,7 +68,7 @@ public class GenericStateTest {
StateTestUtils.close(root);
// remark: stateInit is an internal (isObservable = false)
- assertThat(StateTestUtils.getLastClosedChangeSet(root).getStates()).contains(stateDefault);
+ assertThat(StateTestUtils.getLastClosedChangeSet(root).getObservableStates()).contains(stateDefault);
StateTestUtils.undo(root);
assertNull(stateDefault.value());
diff --git a/junit/rails/game/state/HashMapStateTest.java b/junit/rails/game/state/HashMapStateTest.java
index beff08e..31ceae5 100644
--- a/junit/rails/game/state/HashMapStateTest.java
+++ b/junit/rails/game/state/HashMapStateTest.java
@@ -20,6 +20,7 @@ public class HashMapStateTest {
private final static String INIT_ID = "Init";
private final static String FIRST_ITEM_ID = "FirstItem";
+ private final static String NEW_FIRST_ITEM_ID = "NewFirstItem";
private final static String SECOND_ITEM_ID = "SecondItem";
private final static String THIRD_ITEM_ID = "ThirdItem";
@@ -29,24 +30,25 @@ public class HashMapStateTest {
private HashMapState<String, Item> stateInit;
private Map<String, Item> initMap, testMap;
- private Item firstItem, secondItem, thirdItem;
+ private Item firstItem, newFirstItem, secondItem, thirdItem;
@Before
public void setUp() {
root = StateTestUtils.setUpRoot();
-
firstItem = AbstractItemImpl.create(root, FIRST_ITEM_ID);
+ newFirstItem = AbstractItemImpl.create(root, NEW_FIRST_ITEM_ID);
secondItem = AbstractItemImpl.create(root, SECOND_ITEM_ID);
thirdItem = AbstractItemImpl.create(root, THIRD_ITEM_ID);
state_default = HashMapState.create(root, DEFAULT_ID);
// intialize stateInit with initMap and create testMap
+ initMap = ImmutableMap.of(FIRST_ITEM_ID, firstItem);
+ stateInit = HashMapState.create(root, INIT_ID, initMap);
+
testMap = Maps.newHashMap();
- testMap.put(FIRST_ITEM_ID, firstItem);
- initMap = ImmutableMap.copyOf(testMap);
- stateInit = HashMapState.create(root, INIT_ID, testMap);
+ testMap.put(FIRST_ITEM_ID, newFirstItem);
testMap.put(SECOND_ITEM_ID, secondItem);
}
diff --git a/junit/rails/game/state/IntegerStateTest.java b/junit/rails/game/state/IntegerStateTest.java
index 31b26f8..c8a2c83 100644
--- a/junit/rails/game/state/IntegerStateTest.java
+++ b/junit/rails/game/state/IntegerStateTest.java
@@ -57,7 +57,7 @@ public class IntegerStateTest {
stateDefault.set(0);
stateInit.set((INIT));
StateTestUtils.close(root);
- assertThat(StateTestUtils.getLastClosedChangeSet(root).getStates()).doesNotContain(stateDefault, stateInit);
+ assertThat(StateTestUtils.getLastClosedChangeSet(root).getObservableStates()).doesNotContain(stateDefault, stateInit);
}
@Test
diff --git a/junit/rails/game/state/StateTestUtils.java b/junit/rails/game/state/StateTestUtils.java
index b9b580c..dd2b7f2 100644
--- a/junit/rails/game/state/StateTestUtils.java
+++ b/junit/rails/game/state/StateTestUtils.java
@@ -20,7 +20,7 @@ class StateTestUtils {
}
public static void startActionChangeSet(Root root) {
- root.getStateManager().getChangeStack().startActionChangeSet(player, action);
+ root.getStateManager().getChangeStack().startChangeSet(new ChangeSet(true, false));
}
public static void close(Root root) {
diff --git a/junit/rails/game/state/StringStateTest.java b/junit/rails/game/state/StringStateTest.java
index c302033..d76799c 100644
--- a/junit/rails/game/state/StringStateTest.java
+++ b/junit/rails/game/state/StringStateTest.java
@@ -63,14 +63,14 @@ public class StringStateTest {
stateDefault.set("");
stateInit.set(null);
StateTestUtils.close(root);
- assertThat(StateTestUtils.getLastClosedChangeSet(root).getStates()).doesNotContain(stateDefault);
- assertThat(StateTestUtils.getLastClosedChangeSet(root).getStates()).contains(stateInit);
+ assertThat(StateTestUtils.getLastClosedChangeSet(root).getObservableStates()).doesNotContain(stateDefault);
+ assertThat(StateTestUtils.getLastClosedChangeSet(root).getObservableStates()).contains(stateInit);
stateDefault.set(null);
stateInit.set(null);
StateTestUtils.close(root);
- assertThat(StateTestUtils.getLastClosedChangeSet(root).getStates()).contains(stateDefault);
- assertThat(StateTestUtils.getLastClosedChangeSet(root).getStates()).doesNotContain(stateInit);
+ assertThat(StateTestUtils.getLastClosedChangeSet(root).getObservableStates()).contains(stateDefault);
+ assertThat(StateTestUtils.getLastClosedChangeSet(root).getObservableStates()).doesNotContain(stateInit);
}
@Test
diff --git a/src/rails/common/parser/ComponentManager.java b/src/rails/common/parser/ComponentManager.java
index daa7f30..f2607e0 100644
--- a/src/rails/common/parser/ComponentManager.java
+++ b/src/rails/common/parser/ComponentManager.java
@@ -9,7 +9,7 @@ import org.slf4j.LoggerFactory;
import rails.common.LocalText;
import rails.common.parser.XMLTags;
-import rails.game.state.Context;
+import rails.game.state.GameRoot;
/**
* ComponentManage - an implementation of ComponentManagerI, which handles the
@@ -28,7 +28,7 @@ public class ComponentManager {
private Map<String, ConfigurableComponent> mComponentMap =
new HashMap<String, ConfigurableComponent>();
- public ComponentManager(Context context, String gameName, Tag tag, Map<String, String> gameOptions)
+ public ComponentManager(GameRoot root, String gameName, Tag tag, Map<String, String> gameOptions)
throws ConfigurationException {
this.gameName = gameName;
@@ -36,12 +36,12 @@ public class ComponentManager {
for (Tag component : componentTags) {
String compName = component.getAttributeAsString("name");
log.debug("Found component " + compName);
- configureComponent(context, component);
+ configureComponent(root, component);
component.setGameOptions(gameOptions);
}
}
- private void configureComponent(Context context, Tag componentTag)
+ private void configureComponent(GameRoot root, Tag componentTag)
throws ConfigurationException {
// Extract the attributes of the Component
diff --git a/src/rails/common/parser/GameFileParser.java b/src/rails/common/parser/GameFileParser.java
index c1b6fd5..d59b9aa 100644
--- a/src/rails/common/parser/GameFileParser.java
+++ b/src/rails/common/parser/GameFileParser.java
@@ -3,66 +3,55 @@ package rails.common.parser;
import java.util.Map;
import rails.algorithms.RevenueManager;
-import rails.common.DisplayBuffer;
-import rails.common.LocalText;
import rails.common.parser.ComponentManager;
import rails.game.Bank;
import rails.game.CompanyManager;
import rails.game.GameManager;
+import rails.game.GameRoot;
import rails.game.MapManager;
import rails.game.PhaseManager;
import rails.game.PlayerManager;
import rails.game.StockMarket;
import rails.game.TileManager;
import rails.game.TrainManager;
-import rails.game.state.Root;
public class GameFileParser extends XMLParser {
- private static String GAME_XML_FILE = "Game.xml";
+ public static final String GAME_XML_FILE = "Game.xml";
private Tag componentManagerTag;
- private ComponentManager componentManager;
- private GameManager gameManager;
- private CompanyManager companyManager;
- private PlayerManager playerManager;
- private PhaseManager phaseManager;
- private TrainManager trainManager;
- private StockMarket stockMarket;
- private MapManager mapManager;
- private TileManager tileManager;
- private RevenueManager revenueManager;
- private Bank bank;
+ private final ComponentManager componentManager;
+ private final GameManager gameManager;
+ private final CompanyManager companyManager;
+ private final PlayerManager playerManager;
+ private final PhaseManager phaseManager;
+ private final TrainManager trainManager;
+ private final StockMarket stockMarket;
+ private final MapManager mapManager;
+ private final TileManager tileManager;
+ private final RevenueManager revenueManager;
+ private final Bank bank;
- public GameFileParser(Root context, String name, Map<String, String> gameOptions) {
+ public GameFileParser(GameRoot root, String name, Map<String, String> gameOptions)
+ throws ConfigurationException {
directories.add("data/" + name);
- try {
- componentManagerTag = Tag.findTopTagInFile(GAME_XML_FILE, directories, XMLTags.COMPONENT_MANAGER_ELEMENT_ID);
- componentManagerTag.setGameOptions(gameOptions);
-
- //XXX: Ultimately calls everyone's configureFromXML() methods.
- componentManager = new ComponentManager(context, name, componentManagerTag, gameOptions);
-
- playerManager = (PlayerManager) componentManager.findComponent("PlayerManager");
- bank = (Bank) componentManager.findComponent("Bank");
- companyManager = (CompanyManager) componentManager.findComponent(CompanyManager.COMPONENT_NAME);
- stockMarket = (StockMarket) componentManager.findComponent(StockMarket.COMPONENT_NAME);
- gameManager = (GameManager) componentManager.findComponent("GameManager");
- phaseManager = (PhaseManager) componentManager.findComponent("PhaseManager");
- trainManager = (TrainManager) componentManager.findComponent("TrainManager");
- mapManager = (MapManager) componentManager.findComponent("Map");
- tileManager = (TileManager) componentManager.findComponent("TileManager");
- revenueManager = (RevenueManager) componentManager.findComponent("RevenueManager");
- } catch (Exception e) {
- String message =
- LocalText.getText("GameSetupFailed", GAME_XML_FILE);
- log.error(message, e);
- System.out.println(e.getMessage());
- e.printStackTrace();
- DisplayBuffer.add(message + ":\n " + e.getMessage());
- }
+ componentManagerTag = Tag.findTopTagInFile(GAME_XML_FILE, directories, XMLTags.COMPONENT_MANAGER_ELEMENT_ID);
+ componentManagerTag.setGameOptions(gameOptions);
+
+ componentManager = new ComponentManager(root, name, componentManagerTag, gameOptions);
+
+ playerManager = (PlayerManager) componentManager.findComponent("PlayerManager");
+ bank = (Bank) componentManager.findComponent("Bank");
+ companyManager = (CompanyManager) componentManager.findComponent(CompanyManager.COMPONENT_NAME);
+ stockMarket = (StockMarket) componentManager.findComponent(StockMarket.COMPONENT_NAME);
+ gameManager = (GameManager) componentManager.findComponent("GameManager");
+ phaseManager = (PhaseManager) componentManager.findComponent("PhaseManager");
+ tr...
[truncated message content] |