From: Stefan F. <ste...@us...> - 2012-10-02 09:54:11
|
.classpath | 4 .settings/org.eclipse.core.resources.prefs | 3 .settings/org.eclipse.core.runtime.prefs | 3 dev/null |binary make_rails_pkg.sh | 16 src/LocalisedText.properties | 126 src/build.xml | 350 src/buildRails.xml | 171 src/data/1825/CompanyManager.xml | 4 src/data/1825/Game.xml | 5 src/data/1825/Map.xml | 523 src/data/1825/TileSet.xml | 5 src/data/1825/Tiles.xml | 7 src/data/1826/Game.xml | 2 src/data/1830/CompanyManager.xml | 2 src/data/1830/Game.xml | 6 src/data/1830/Map.xml | 12 src/data/1830/TileSet.xml | 1 src/data/1830/Tiles.xml | 55 src/data/1835/CompanyManager.xml | 13 src/data/1835/Game.xml | 13 src/data/1835/Tiles.xml | 36 src/data/1851/CompanyManager.xml | 4 src/data/1851/Game.xml | 6 src/data/1856/CompanyManager.xml | 73 src/data/1856/Game.xml | 39 src/data/1856/Map.xml | 203 src/data/1856/MapImage.svg | 6072 ++ src/data/1856/TileSet.xml | 15 src/data/1856/Tiles.xml | 6 src/data/1870/Game.xml | 2 src/data/1870/TileSet.xml | 2 src/data/1880/CompanyManager.xml | 4 src/data/1880/Game.xml | 6 src/data/1889/CompanyManager.xml | 2 src/data/1889/Game.xml | 1 src/data/1889/Map.xml | 53 src/data/1889/MapImage.svg | 4259 + src/data/18AL/18AL_Map_gamekit.svg | 1435 src/data/18AL/Game.xml | 15 src/data/18AL/Map.xml | 1 src/data/18AL/TileSet.xml | 2 src/data/18EU/CompanyManager.xml | 8 src/data/18EU/Game.xml | 9 src/data/18EU/Map.xml | 4 src/data/18EU/TileSet.xml | 1 src/data/18EU/Tiles.xml | 6 src/data/18GA/Game.xml | 2 src/data/18GA/Map.xml | 274 src/data/18GA/MapImage.svg |18617 ++++++++ src/data/18GA/MapImage_CottonPort.svg |21576 ++++++++++ src/data/18GA/StockMarket.xml | 2 src/data/18JR/CompanyManager.xml | 101 src/data/18JR/Game.xml | 168 src/data/18JR/Map.xml | 65 src/data/18JR/StockMarket.xml | 111 src/data/18JR/TileSet.xml | 128 src/data/18JR/Tiles.xml | 291 src/data/18Kaas/Game.xml | 8 src/data/18Kaas/TileSet.xml | 2 src/data/18Lummer/CompanyManager.xml | 43 src/data/18Lummer/Game.xml | 102 src/data/18Lummer/Map.xml | 17 src/data/18Lummer/StockMarket.xml | 149 src/data/18Lummer/TileSet.xml | 145 src/data/18Lummer/Tiles.xml | 460 src/data/18TN/CompanyManager.xml | 4 src/data/18TN/Game.xml | 11 src/data/18TN/TileSet.xml | 2 src/data/GamesList.xml | 189 src/data/Properties.xml | 58 src/data/profiles/LIST_OF_PROFILES | 7 src/data/profiles/ORDocking.predefined | 7 src/data/profiles/default.profile | 41 src/data/profiles/default.profiles | 2 src/data/profiles/hotseat.predefined | 4 src/data/profiles/pbem.predefined | 4 src/data/profiles/prettyUI.predefined | 13 src/data/profiles/root | 60 src/data/profiles/test | 15 src/data/profiles/test.profile | 125 src/images/icon/green_station.png |binary src/images/icon/green_track.png |binary src/images/icon/grey_station.png |binary src/images/icon/grey_track.png |binary src/images/icon/notile_2towns.png |binary src/images/icon/notile_station.png |binary src/images/icon/russet_station.png |binary src/images/icon/russet_track.png |binary src/images/icon/yellow_station.png |binary src/images/icon/yellow_track.png |binary src/lib/JLayer1.0.1/jl1.0.1jar |binary src/lib/commons-io-2.1/commons-io-2.1.jar |binary src/lib/df_1.1.0/dockingFramesCommon.jar |binary src/lib/df_1.1.0/dockingFramesCore.jar |binary src/manifest | 4 src/rails.bat | 2 src/rails.sh | 2 src/rails/algorithms/RevenueAdapter.java | 3 src/rails/common/Config.java | 55 src/rails/common/ConfigItem.java | 181 src/rails/common/ConfigManager.java | 313 src/rails/common/ConfigProfile.java | 396 src/rails/common/GuiDef.java | 7 src/rails/common/LocalText.java | 1 src/rails/common/MoneyFormatter.java | 1 src/rails/common/parser/Config.java | 608 src/rails/common/parser/ConfigItem.java | 145 src/rails/game/Bank.java | 2 src/rails/game/CompanyManager.java | 19 src/rails/game/GameManager.java | 81 src/rails/game/MapHex.java | 23 src/rails/game/MapManager.java | 52 src/rails/game/OperatingRound.java | 184 src/rails/game/Phase.java | 112 src/rails/game/PublicCompany.java | 212 src/rails/game/RailsRoot.java | 33 src/rails/game/ReportBuffer.java | 9 src/rails/game/ShareSellingRound.java | 43 src/rails/game/StartRound.java | 20 src/rails/game/StartRound_1835.java | 271 src/rails/game/StockMarket.java | 33 src/rails/game/StockRound.java | 268 src/rails/game/StockSpace.java | 13 src/rails/game/Stop.java | 6 src/rails/game/Tile.java | 20 src/rails/game/TrainManager.java | 43 src/rails/game/TreasuryShareRound.java | 53 src/rails/game/action/BuyTrain.java | 7 src/rails/game/action/LayBaseToken.java | 47 src/rails/game/action/LayTile.java | 38 src/rails/game/action/PossibleActions.java | 6 src/rails/game/action/SellShares.java | 75 src/rails/game/correct/ClosePrivate.java | 2 src/rails/game/model/CertificatesModel.java | 51 src/rails/game/model/PortfolioModel.java | 46 src/rails/game/model/ShareDetailsModel.java | 49 src/rails/game/model/ViewUpdate.java | 1 src/rails/game/special/SpecialRight.java | 4 src/rails/game/special/SpecialTileLay.java | 56 src/rails/game/specific/_1825/StockRound_1825.java | 2 src/rails/game/specific/_1835/ElsasModifier.java | 44 src/rails/game/specific/_1835/GameManager_1835.java | 41 src/rails/game/specific/_1835/OperatingRound_1835.java | 59 src/rails/game/specific/_1835/PrussianFormationRound.java | 65 src/rails/game/specific/_1835/StartRound_1835.java | 273 src/rails/game/specific/_1835/StockRound_1835.java | 103 src/rails/game/specific/_1856/CGRFormationRound.java | 56 src/rails/game/specific/_1889/OperatingRound_1889.java | 66 src/rails/game/specific/_18EU/FinalMinorExchangeRound.java | 4 src/rails/game/specific/_18EU/OffBoardRevenueModifier.java | 2 src/rails/game/specific/_18EU/StartCompany_18EU.java | 20 src/rails/game/specific/_18EU/StockRound_18EU.java | 8 src/rails/game/state/Observer.java | 4 src/rails/sound/SoundConfig.java | 104 src/rails/sound/SoundContext.java | 129 src/rails/sound/SoundEventInterpreter.java | 301 src/rails/sound/SoundManager.java | 68 src/rails/sound/SoundPlayer.java | 273 src/rails/ui/images/accept.png |binary src/rails/ui/images/add.png |binary src/rails/ui/images/arrow_redo.png |binary src/rails/ui/images/arrow_undo.png |binary src/rails/ui/images/auction_hammer_gavel.png |binary src/rails/ui/images/bricks.png |binary src/rails/ui/images/button.png |binary src/rails/ui/images/cancel.png |binary src/rails/ui/images/cash_stack.png |binary src/rails/ui/images/clock_add.png |binary src/rails/ui/images/clock_delete.png |binary src/rails/ui/images/coins_in_hand.png |binary src/rails/ui/images/control_fastforward_blue.png |binary src/rails/ui/images/control_play_blue.png |binary src/rails/ui/images/globe_model.png |binary src/rails/ui/images/hand_property.png |binary src/rails/ui/images/information.png |binary src/rails/ui/images/money_add.png |binary src/rails/ui/images/money_bag.png |binary src/rails/ui/images/participation_rate.png |binary src/rails/ui/images/rails32.png |binary src/rails/ui/images/script.png |binary src/rails/ui/images/traffic_lights_green.png |binary src/rails/ui/images/traffic_lights_red.png |binary src/rails/ui/images/traffic_lights_yellow.png |binary src/rails/ui/images/train.png |binary src/rails/ui/swing/AbstractReportWindow.java | 11 src/rails/ui/swing/ConfigWindow.java | 398 src/rails/ui/swing/GUIToken.java | 78 src/rails/ui/swing/GameSetupWindow.java | 167 src/rails/ui/swing/GameStatus.java | 192 src/rails/ui/swing/GameUIManager.java | 382 src/rails/ui/swing/GridPanel.java | 262 src/rails/ui/swing/ImageLoader.java | 27 src/rails/ui/swing/MapPanel.java | 184 src/rails/ui/swing/MessagePanel.java | 103 src/rails/ui/swing/ORPanel.java | 626 src/rails/ui/swing/ORUIManager.java | 476 src/rails/ui/swing/ORWindow.java | 145 src/rails/ui/swing/RemainingTilesWindow.java | 80 src/rails/ui/swing/ReportWindow.java | 2 src/rails/ui/swing/ReportWindowDynamic.java | 66 src/rails/ui/swing/Scale.java | 2 src/rails/ui/swing/SplashWindow.java | 357 src/rails/ui/swing/StartRoundWindow.java | 291 src/rails/ui/swing/StatusWindow.java | 141 src/rails/ui/swing/StockChart.java | 10 src/rails/ui/swing/TokenIcon.java | 15 src/rails/ui/swing/UpgradesPanel.java | 232 src/rails/ui/swing/WindowSettings.java | 7 src/rails/ui/swing/elements/ActionButton.java | 8 src/rails/ui/swing/elements/Caption.java | 10 src/rails/ui/swing/elements/CheckBoxDialog.java | 111 src/rails/ui/swing/elements/ConfirmationDialog.java | 112 src/rails/ui/swing/elements/DockingFrame.java | 409 src/rails/ui/swing/elements/Field.java | 108 src/rails/ui/swing/elements/GUIStockSpace.java | 21 src/rails/ui/swing/elements/MessageDialog.java | 83 src/rails/ui/swing/elements/NonModalDialog.java | 132 src/rails/ui/swing/elements/RadioButtonDialog.java | 113 src/rails/ui/swing/elements/RailsIcon.java | 127 src/rails/ui/swing/elements/RailsIconButton.java | 139 src/rails/ui/swing/gamespecific/_1835/GameUIManager_1835.java | 46 src/rails/ui/swing/gamespecific/_1835/StatusWindow_1835.java | 33 src/rails/ui/swing/gamespecific/_1856/StatusWindow_1856.java | 27 src/rails/ui/swing/gamespecific/_1880 | 7 src/rails/ui/swing/gamespecific/_18EU/GameStatus_18EU.java | 8 src/rails/ui/swing/gamespecific/_18EU/GameUIManager_18EU.java | 182 src/rails/ui/swing/hexmap/GUIHex.java | 261 src/rails/ui/swing/hexmap/GUITile.java | 137 src/rails/ui/swing/hexmap/HexHighlightMouseListener.java | 243 src/rails/ui/swing/hexmap/HexMap.java | 721 src/rails/ui/swing/hexmap/HexMapImage.java | 160 src/rails/util/GameFileIO.java | 230 src/rails/util/RunGame.java | 23 src/rails/util/SystemOS.java | 117 src/rails/util/Util.java | 47 src/readme.txt | 13 src/test/SVGApplication.java | 105 src/test/SVGOffscreenLoader.java | 192 src/test/TestGame.java | 2 src/test/TestGameBuilder.java | 8 src/test/data/bugs/1830CF_obsoleteTrains.rails |binary src/test/data/bugs/1830CF_obsoleteTrains.report | 432 src/test/data/bugs/1830_sellPresidency.rails |binary src/test/data/bugs/1830_sellPresidency.report | 408 src/test/data/bugs/1835_changePresidentAtStart.rails |binary src/test/data/bugs/1835_changePresidentAtStart.report | 54 src/test/data/bugs/1856_tokens.rails |binary src/test/data/bugs/1856_tokens.report | 1034 src/test/data/bugs/1889_presidentContribution.rails |binary src/test/data/bugs/1889_presidentContribution.report | 1048 src/test/data/real/1830_A.report | 3 src/test/data/real/1856_A.report | 3 src/test/data/real/1889_A.report | 2 src/test/data/real/1889_B.report | 3 src/test/data/real/1889_C.report | 3 src/test/data/real/18AL_A.report | 1 src/test/data/real/18EU_A.report | 2099 src/test/data/real/18TN_A.rails |binary src/test/data/real/18TN_A.report | 616 src/test/data/test/1830_5forDtrainExchange.report | 3 src/test/data/test/1830_SellFullPresCert.rails |binary src/test/data/test/1830_SellFullPresCert.report | 268 src/test/data/test/1830_SellHalfPresCert.rails |binary src/test/data/test/1830_SellHalfPresCert.report | 268 src/test/data/test/1835_NatDoubleShare.rails |binary src/test/data/test/1835_NatDoubleShare.report | 884 src/test/data/test/1835_NatSingleShare.rails |binary src/test/data/test/1835_NatSingleShare.report | 348 src/test/data/test/1835_PR_3rdTrain.report | 1060 src/test/data/test/1835_SellDoubleShare.rails |binary src/test/data/test/1835_SellDoubleShare.report | 1643 src/test/data/test/1835_SwapPresForDoubleShare.rails |binary src/test/data/test/1835_SwapPresForDoubleShare.report | 348 src/test/data/test/1851_Late.report | 2 src/test/data/test/1856_2nd6T+PrezCash2.report | 3 src/tiles/HandmadeTiles.xml | 5 src/tiles/TileDictionary.18t | 2 src/tiles/TileDictionary.xml | 2 src/tiles/Tiles.xml | 212 src/tiles/svg/tile-25017.svg | 6 src/tiles/svg/tile-25018.svg | 6 src/tiles/svg/tile-4000.svg | 6 src/tiles/svg/tile-4004.svg | 6 src/tiles/svg/tile-4005.svg | 6 src/tools/ConvertTilesXML.java | 98 src/tools/ListAndFixSavedFiles.java | 268 src/tools/formatxml.pl | 23 src/version.number | 5 289 files changed, 71474 insertions(+), 9500 deletions(-) New commits: commit bc91566270779d8a245d05219b01392563cab91b Author: Stefan Frey <ste...@we...> Date: Fri Sep 21 12:20:16 2012 +0200 prepared for release 1.7.10 (cherry picked from commit ef4e13ac6c9dba970ff8e7720098eaf7d0d9a552) diff --git a/src/readme.txt b/src/readme.txt index ba355d5..5ef8bbc 100644 --- a/src/readme.txt +++ b/src/readme.txt @@ -1,4 +1,4 @@ -Rails release 1.7.9: +Rails release 1.7.10: A new maintenance release for Rails 1.x series @@ -6,8 +6,8 @@ This release fixes two bugs. Contributors: Stefan Frey -Bugs reported by Arne Ãsterlund +Bugs reported by theos and Russel J. Alphey Lists of bugs fixed: -- List of recent files does not work with few entries -- 1830 Coalfields (and others): Obsolete Trains in Pool should rust (previously the stayed forever) +- fixed bug in starting a company in 18EU if only one start price is possible +- fixed bug that the ReportWindow does not scroll down at game start \ No newline at end of file diff --git a/src/version.number b/src/version.number index 385bed2..2ab2e9d 100644 --- a/src/version.number +++ b/src/version.number @@ -1,5 +1,5 @@ #Property file that contains version number and the develop indicator -version=1.7.9 +version=1.7.10 # the following string "@DEVELOP@ is replaced by an empty string in the release version # this is done automatically by ant develop=@DEVELOP@ \ No newline at end of file commit 9198df6e602f5195f1f38e65c412f668aabae76e Author: Stefan Frey <ste...@we...> Date: Fri Sep 21 10:45:27 2012 +0200 fixed bug that the ReportWindow does not scrolldown at gameStart, added invokeLater to scrollDown to run in EDT, reported by Russel J. Alphey (cherry picked from commit 31879bbddbab1a44403379a4ab34004c3c903d53) diff --git a/src/rails/ui/swing/ReportWindowDynamic.java b/src/rails/ui/swing/ReportWindowDynamic.java index bed9f8e..2752af9 100644 --- a/src/rails/ui/swing/ReportWindowDynamic.java +++ b/src/rails/ui/swing/ReportWindowDynamic.java @@ -181,21 +181,25 @@ public class ReportWindowDynamic extends AbstractReportWindow implements Action @Override public void scrollDown() { // only set caret if visible - if (!this.isVisible()) return; + //if (!this.isVisible()) return; // find the active message in the parsed html code (not identical to the position in the html string) // thus the message indicator is used - int caretPosition; - try{ - String docText = editorPane.getDocument().getText(0, editorPane.getDocument().getLength()); - caretPosition = docText.indexOf(ReportBuffer.ACTIVE_MESSAGE_INDICATOR); - } catch (BadLocationException e){ - caretPosition = -1; - }; - final int caretPositionStore = caretPosition; - if (caretPosition != -1) { - editorPane.setCaretPosition(caretPositionStore); - } + SwingUtilities.invokeLater(new Runnable() { + public void run() { + int caretPosition; + try{ + String docText = editorPane.getDocument().getText(0, editorPane.getDocument().getLength()); + caretPosition = docText.indexOf(ReportBuffer.ACTIVE_MESSAGE_INDICATOR); + } catch (BadLocationException e){ + caretPosition = -1; + }; + final int caretPositionStore = caretPosition; + if (caretPosition != -1) { + editorPane.setCaretPosition(caretPositionStore); + } + } + }); } public void actionPerformed(ActionEvent e) { commit afd21447aa9d4ae35f7e00f77c7a6be2b8690816 Author: Stefan Frey <ste...@we...> Date: Fri Sep 21 10:35:49 2012 +0200 fixed bug in starting a company in 18EU if only one start price is possible, bug reported by theos (cherry picked from commit 4c1d24f937619baccda7e76d141a621319282d3d) Conflicts: src/rails/ui/swing/GameStatus.java diff --git a/src/rails/ui/swing/GameStatus.java b/src/rails/ui/swing/GameStatus.java index 9a5e758..0450dfd 100644 --- a/src/rails/ui/swing/GameStatus.java +++ b/src/rails/ui/swing/GameStatus.java @@ -18,6 +18,7 @@ import rails.game.*; import rails.game.action.*; import rails.game.correct.CashCorrectionAction; import rails.game.model.PortfolioModel; +import rails.game.specific._18EU.StartCompany_18EU; import rails.sound.SoundManager; import rails.ui.swing.elements.*; import rails.ui.swing.hexmap.HexHighlightMouseListener; @@ -769,7 +770,8 @@ public class GameStatus extends GridPanel implements ActionListener { } } int index = 0; - if (options.size() > 1) { + // check for instanceof StartCompany_18EU allows to continue with selecting the minor + if (options.size() > 1 || actions.get(0) instanceof StartCompany_18EU) { if (startCompany) { RadioButtonDialog dialog = new RadioButtonDialog ( GameUIManager.COMPANY_START_PRICE_DIALOG, commit 81f16a283eadc74d8aea660409b63a82eeb490ba Author: Stefan Frey <ste...@we...> Date: Mon Sep 17 20:18:41 2012 +0200 prepared for 1.7.9 release (cherry picked from commit 2a12d199876712dd7e83f5ed491e05365e644b5a) diff --git a/src/readme.txt b/src/readme.txt index 111a7c4..ba355d5 100644 --- a/src/readme.txt +++ b/src/readme.txt @@ -1,13 +1,13 @@ -Rails release 1.7.8: +Rails release 1.7.9: A new maintenance release for Rails 1.x series -This release fixes several bugs. +This release fixes two bugs. -Contributors: Erik Vos, Stefan Frey +Contributors: Stefan Frey -Bugs reported by Martin Brumm, John David Galt +Bugs reported by Arne Ãsterlund Lists of bugs fixed: -- All Games: Update "PD" label in GameStatus lower player names panel -- 1835 (and others with NoMapMode): Cannot save game file with ClosePrivate action +- List of recent files does not work with few entries +- 1830 Coalfields (and others): Obsolete Trains in Pool should rust (previously the stayed forever) diff --git a/src/version.number b/src/version.number index f74a335..385bed2 100644 --- a/src/version.number +++ b/src/version.number @@ -1,5 +1,5 @@ #Property file that contains version number and the develop indicator -version=1.7.8 +version=1.7.9 # the following string "@DEVELOP@ is replaced by an empty string in the release version # this is done automatically by ant develop=@DEVELOP@ \ No newline at end of file commit 2dd67fc4bc701adad9b5e9998d33f0b13b7ef01b Author: Stefan Frey <ste...@we...> Date: Mon Sep 17 18:47:13 2012 +0200 fixed problem of obsoleting trains in the pool, as reported by arne oestlund (cherry picked from commit 1cb73edf9ec9657eaac3665cf7db57908556e88f) Conflicts: rails/game/TrainManager.java diff --git a/src/rails/game/TrainManager.java b/src/rails/game/TrainManager.java index 289491d..02b3d0e 100644 --- a/src/rails/game/TrainManager.java +++ b/src/rails/game/TrainManager.java @@ -328,6 +328,8 @@ public class TrainManager extends RailsManager implements Configurable { private boolean isTrainObsolete(Train train, Owner lastBuyingCompany) { // check fist if train can obsolete at all if (!train.getCertType().isObsoleting()) return false; + // and if it is in the pool (always rust) + if (train.getOwner() == pool.getParent()) return false; // then check if obsolete type if (obsoleteTrainFor == ObsoleteTrainForType.ALL) { commit 68d5723375b9b4a73adf03ea7af7f7b31738d27c Author: Stefan Frey <ste...@we...> Date: Mon Sep 10 15:29:29 2012 +0200 fixed recent file list bug (cherry picked from commit 0eeb12fa8e0383287abe41d85a8dfc311a0e6126) Commit was already included, kept for reference. commit 78c45672597422a92362e0f1c424782c2cbc74d7 Author: Stefan Frey <ste...@we...> Date: Mon Jul 23 17:01:38 2012 +0200 prepared for 1.7.8 release (cherry picked from commit 18c0f865fc235df7a4d370114d3d26cb3eff4f76) diff --git a/src/readme.txt b/src/readme.txt index 33de310..111a7c4 100644 --- a/src/readme.txt +++ b/src/readme.txt @@ -1,4 +1,4 @@ -Rails release 1.7.7: +Rails release 1.7.8: A new maintenance release for Rails 1.x series @@ -6,13 +6,8 @@ This release fixes several bugs. Contributors: Erik Vos, Stefan Frey -Bug reported by Are-Harald Brenne, John David Galt - -New: -- Added little fun variant 18Lummer +Bugs reported by Martin Brumm, John David Galt Lists of bugs fixed: -- Errors in UI after adding a comment at game start -- Fixed failure on reloading a just started game -- 1835: Manual close of Pfalzbahn is possible (to enable closing after token lay only) -- 1835 (and others): Fixed UI issues with token relays on OO-tiles +- All Games: Update "PD" label in GameStatus lower player names panel +- 1835 (and others with NoMapMode): Cannot save game file with ClosePrivate action diff --git a/src/version.number b/src/version.number index 60520e3..f74a335 100644 --- a/src/version.number +++ b/src/version.number @@ -1,5 +1,5 @@ #Property file that contains version number and the develop indicator -version=1.7.7 +version=1.7.8 # the following string "@DEVELOP@ is replaced by an empty string in the release version # this is done automatically by ant develop=@DEVELOP@ \ No newline at end of file commit d0c93922e840fca16e8c628e654e53e411b3b6d7 Author: Erik Vos <eri...@xs...> Date: Mon Jul 23 12:06:11 2012 +0200 Fix to all games: update PD in GameStatus lower player names row.(cherry picked from commit 7d694b4bc788283c72de5165dee0d54ee55cb6d1) (cherry picked from commit 59d48a43689c5128a9487290d0682e0961201c6e) Conflicts: src/rails/ui/swing/GameStatus.java diff --git a/src/rails/ui/swing/GameStatus.java b/src/rails/ui/swing/GameStatus.java index 9e22716..9a5e758 100644 --- a/src/rails/ui/swing/GameStatus.java +++ b/src/rails/ui/swing/GameStatus.java @@ -977,8 +977,9 @@ public class GameStatus extends GridPanel implements ActionListener { public void setPriorityPlayer(int index) { for (int j = 0; j < np; j++) { - upperPlayerCaption[j].setText(players[j].getId() - + (j == index ? " PD" : "")); + String playerNameAndPriority = players[j].getId() + (j == index ? " PD" : ""); + upperPlayerCaption[j].setText(playerNameAndPriority); + lowerPlayerCaption[j].setText(playerNameAndPriority); } } commit 5d1855c07242cdad121ee11c6a210c3a55cd946c Author: Stefan Frey <ste...@we...> Date: Sun Jul 22 23:32:17 2012 +0200 fixed bug: cannot save game file with ClosePrivate action, reported by John David Galt (cherry picked from commit b564e00983be9033464fd3e0658d61143ab5bf5f) Conflicts: src/rails/game/correct/ClosePrivate.java diff --git a/src/rails/game/correct/ClosePrivate.java b/src/rails/game/correct/ClosePrivate.java index 0ffea43..7a10c3e 100644 --- a/src/rails/game/correct/ClosePrivate.java +++ b/src/rails/game/correct/ClosePrivate.java @@ -18,7 +18,7 @@ public class ClosePrivate extends PossibleAction { /* Preconditions */ /** private company to close */ - private PrivateCompany privateCompany; + transient private PrivateCompany privateCompany; /** converted to name */ private String privateCompanyName; commit c910d16695395424919bc5312cfebf04b95d18d3 Author: Stefan Frey <ste...@we...> Date: Fri Jun 15 17:35:37 2012 +0200 prepared for release 1.7.7 (cherry picked from commit 90ba59260b14c2a7d5f14a37c730d7d0cc5e0baf) diff --git a/src/readme.txt b/src/readme.txt index a1180ee..33de310 100644 --- a/src/readme.txt +++ b/src/readme.txt @@ -1,12 +1,18 @@ -Rails release 1.7.6: +Rails release 1.7.7: A new maintenance release for Rails 1.x series -This release fixes one sole bug. +This release fixes several bugs. -Contributors: Erik Vos +Contributors: Erik Vos, Stefan Frey -Bug reported by Antonio Baracca +Bug reported by Are-Harald Brenne, John David Galt -1856: Allowing selling a share just bought by the president. -(According to Steve Thomas rule clarification). \ No newline at end of file +New: +- Added little fun variant 18Lummer + +Lists of bugs fixed: +- Errors in UI after adding a comment at game start +- Fixed failure on reloading a just started game +- 1835: Manual close of Pfalzbahn is possible (to enable closing after token lay only) +- 1835 (and others): Fixed UI issues with token relays on OO-tiles diff --git a/src/version.number b/src/version.number index cde0424..60520e3 100644 --- a/src/version.number +++ b/src/version.number @@ -1,5 +1,5 @@ #Property file that contains version number and the develop indicator -version=1.7.6 +version=1.7.7 # the following string "@DEVELOP@ is replaced by an empty string in the release version # this is done automatically by ant develop=@DEVELOP@ \ No newline at end of file commit 65107299650c9c09229f3f88bf03f952eb494115 Author: Erik Vos <eri...@xs...> Date: Fri Jun 15 13:48:48 2012 +0200 Fixed failure on reloading a null action list. GameFileIO.replayGame() was not protected against that condition. [IMO the list should have been created empty, not null; EV](cherry picked from commit ee3e580ae2efdb10c28bdfe0565566e39f17491a) (cherry picked from commit bf16424ac310389b5b48fabfc11a86a6f2a93a29) Conflicts: src/rails/util/GameFileIO.java diff --git a/src/rails/util/GameFileIO.java b/src/rails/util/GameFileIO.java index 7e97190..f4feece 100644 --- a/src/rails/util/GameFileIO.java +++ b/src/rails/util/GameFileIO.java @@ -227,16 +227,17 @@ public class GameFileIO { gameManager.setReloading(true); int count = -1; - // set possible actions for first action - gameManager.getCurrentRound().setPossibleActions(); - - for (PossibleAction action : gameData.actions) { - count++; - if (!gameManager.processOnReload(action)) { - log.error ("Load interrupted"); - DisplayBuffer.add(LocalText.getText("LoadInterrupted", count)); - ReportBuffer.add(LocalText.getText("LoadInterrupted", count)); - break; + if (gameData != null && gameData.actions != null) { + // set possible actions for first action + gameManager.getCurrentRound().setPossibleActions(); + for (PossibleAction action : gameData.actions) { + count++; + if (!gameManager.processOnReload(action)) { + log.error ("Load interrupted"); + DisplayBuffer.add(LocalText.getText("LoadInterrupted", count)); + ReportBuffer.add(LocalText.getText("LoadInterrupted", count)); + break; + } } } commit 58a2f91d034602a80a8b25970bacb3137d3bfc0f Author: Erik Vos <eri...@xs...> Date: Thu Jun 14 15:44:15 2012 +0200 Fix to 1835 (etc.) token relay fix (previous commit). It failed in a typical 1830 Erie case.(cherry picked from commit ce10cb981aa82985380177433571aed4789f75ae) (cherry picked from commit 3892c7f2d7d9685cc3a1e5b69e4be900fe7bc4e7) Includes change of method signature of Stop.getBaseTokens() to ImmutableSet Conflicts: src/rails/ui/swing/ORUIManager.java diff --git a/src/rails/game/MapHex.java b/src/rails/game/MapHex.java index 206496f..c533027 100644 --- a/src/rails/game/MapHex.java +++ b/src/rails/game/MapHex.java @@ -971,7 +971,7 @@ public class MapHex extends Model implements RailsItem, Owner, Configurable { if (mStops == null || mStops.isEmpty()) return null; ImmutableSet.Builder<BaseToken> tokens = ImmutableSet.builder(); for (Stop city : mStops) { - tokens.addAll(city.getBaseTokens().items()); + tokens.addAll(city.getBaseTokens()); } return tokens.build(); } @@ -1019,7 +1019,7 @@ public class MapHex extends Model implements RailsItem, Owner, Configurable { public ImmutableSet<BaseToken> getTokens(int cityNumber) { // TODO: Is the test for null still required if (mStops.size() > 0 && mStops.get(cityNumber) != null) { - return (mStops.get(cityNumber)).getBaseTokens().items(); + return (mStops.get(cityNumber)).getBaseTokens(); } else { return ImmutableSet.of(); // empty set } diff --git a/src/rails/game/Stop.java b/src/rails/game/Stop.java index 9a2f398..df104d3 100644 --- a/src/rails/game/Stop.java +++ b/src/rails/game/Stop.java @@ -3,6 +3,8 @@ package rails.game; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.collect.ImmutableSet; + import rails.game.state.GenericState; import rails.game.state.Owner; import rails.game.state.PortfolioSet; @@ -213,8 +215,8 @@ public class Stop extends RailsAbstractItem implements Owner { initStopProperties(); } - public PortfolioSet<BaseToken> getBaseTokens() { - return tokens; + public ImmutableSet<BaseToken> getBaseTokens() { + return tokens.items(); } public boolean hasTokens() { diff --git a/src/rails/ui/swing/ORUIManager.java b/src/rails/ui/swing/ORUIManager.java index e07708d..4cd507c 100644 --- a/src/rails/ui/swing/ORUIManager.java +++ b/src/rails/ui/swing/ORUIManager.java @@ -963,16 +963,20 @@ public class ORUIManager implements DialogOwner { * 2. Count down the number of free slots per new station, so that full stations are skipped, * It's already taken care for, that a choice-between-one is handled automatically. * [EV, jun2012] + * + * TODO: (Rails2.0) Check if this still works */ if (stopsToQuery.size() == 2) { Collections.sort(stopsToQuery, new Comparator<Stop>() { public int compare (Stop s1, Stop s2) { - // Home stops on this hex go first. - boolean home1 = Iterables.get(s1.getBaseTokens(), 0).getParent().getHomeHexes().contains(hex); - boolean home2 = Iterables.get(s2.getBaseTokens(), 0).getParent().getHomeHexes().contains(hex); - if (home1 && !home2) { + Set<BaseToken> tokens; + boolean stop1IsHome = !((tokens = s1.getBaseTokens()).isEmpty()) + && Iterables.get(tokens, 0).getParent().getHomeHexes().contains(hex); + boolean stop2IsHome = !((tokens = s2.getBaseTokens()).isEmpty()) + && Iterables.get(tokens, 0).getParent().getHomeHexes().contains(hex); + if (stop1IsHome && !stop2IsHome) { return -1; - } else if (home2 && !home1) { + } else if (stop2IsHome && !stop1IsHome) { return 1; } else { return 0; // Doesn't matter @@ -991,7 +995,7 @@ public class ORUIManager implements DialogOwner { if (oldStop.hasTokens()) { // Assume only 1 token (no exceptions known) // TODO: Rewrite this to make this code nicer - PublicCompany company = (Iterables.get(oldStop.getBaseTokens().items(), 0)).getParent(); + PublicCompany company = (Iterables.get(oldStop.getBaseTokens(), 0)).getParent(); List<String> prompts = new ArrayList<String>(); Map<String, Integer> promptToCityMap = new HashMap<String, Integer>(); commit d91e830cc4130ed708e769b4e9ad521127e7b4ff Author: Erik Vos <eri...@xs...> Date: Wed Jun 13 17:36:00 2012 +0200 Fixes for 1835 Pfalzbahnen. Manual closure made possible for PfB. If two tokens are laid on L6 (BA home) before the first tile, only the BA president will get asked where to put the BA home token. (cherry picked from commit f34c80df8dacc9f6381c2a0c615cec89aade704c) Conflicts: data/1835/CompanyManager.xml (cherry picked from commit 18b22dec3aeaa01d27250baf5b7dc0256c777d64) Conflicts: src/rails/ui/swing/ORUIManager.java diff --git a/src/data/1835/CompanyManager.xml b/src/data/1835/CompanyManager.xml index 9f28099..bfdbb7f 100644 --- a/src/data/1835/CompanyManager.xml +++ b/src/data/1835/CompanyManager.xml @@ -55,7 +55,7 @@ <ClosingConditions> <Phase>5</Phase> <SpecialProperties condition="ifAllExercised"/> - <CloseManually/> <!-- If second tile is laid not via special property --> + <CloseManually/> <!-- Workaround, may be needed if one of the tiles is not laid via this special property --> </ClosingConditions> </Company> <Company name="PfB" longname="Pfalzbahnen" type="Private" basePrice="150" revenue="15"> @@ -70,7 +70,7 @@ <ClosingConditions> <Phase>5</Phase> <SpecialProperties condition="ifAllExercised"/> - <CloseManually/> <!-- If tile is laid not via special property--> + <CloseManually/> <!-- Workaround, may be needed if a tile or token is not laid via this special property --> </ClosingConditions> </Company> <Company name="LD" longname="Leipzig-Dresdner Bahn" type="Private" basePrice="190"> diff --git a/src/rails/ui/swing/ORUIManager.java b/src/rails/ui/swing/ORUIManager.java index 35ca9b0..e07708d 100644 --- a/src/rails/ui/swing/ORUIManager.java +++ b/src/rails/ui/swing/ORUIManager.java @@ -941,12 +941,53 @@ public class ORUIManager implements DialogOwner { */ protected void relayBaseTokens (LayTile action) { - MapHex hex = action.getChosenHex(); + final MapHex hex = action.getChosenHex(); Tile newTile = action.getLaidTile(); Tile oldTile = hex.getCurrentTile(); if (!action.isRelayBaseTokens() && !oldTile.relayBaseTokensOnUpgrade()) return; - for (Stop oldStop : hex.getStops()) { + + List<Stop> stopsToQuery = hex.getStops(); + + /* Check which tokens must be relaid, and in which sequence. + * Ideally, the game engine should instruct the UI what to do + * if there is more than one stop and more than one token. + * TODO LayTile does not yet allow that. + * + * For now, the only case that needs special handling is the 1835 BA home hex L6, + * where it it possible to have two tokens laid before even one tile. + * Let's generalise this case to: two stops, both tokened. + * We consider single-slot stops only. + * In fact, all we need to do is + * 1. Sort the stops so that the home company gets queried first, + * 2. Count down the number of free slots per new station, so that full stations are skipped, + * It's already taken care for, that a choice-between-one is handled automatically. + * [EV, jun2012] + */ + if (stopsToQuery.size() == 2) { + Collections.sort(stopsToQuery, new Comparator<Stop>() { + public int compare (Stop s1, Stop s2) { + // Home stops on this hex go first. + boolean home1 = Iterables.get(s1.getBaseTokens(), 0).getParent().getHomeHexes().contains(hex); + boolean home2 = Iterables.get(s2.getBaseTokens(), 0).getParent().getHomeHexes().contains(hex); + if (home1 && !home2) { + return -1; + } else if (home2 && !home1) { + return 1; + } else { + return 0; // Doesn't matter + } + } + }); + } + + // Array to enable counting down the free token slots per new station + int[] freeSlots = new int[1 + newTile.getStations().size()]; + for (Station newStation : newTile.getStations()) { + freeSlots[newStation.getNumber()] = newStation.getBaseSlots(); + } + + for (Stop oldStop : stopsToQuery) { if (oldStop.hasTokens()) { // Assume only 1 token (no exceptions known) // TODO: Rewrite this to make this code nicer @@ -956,7 +997,7 @@ public class ORUIManager implements DialogOwner { Map<String, Integer> promptToCityMap = new HashMap<String, Integer>(); String prompt; for (Station newStation : newTile.getStations()) { - if (newStation.getBaseSlots() > 0) { + if (newStation.getBaseSlots() > 0 && freeSlots[newStation.getNumber()] > 0) { prompt = LocalText.getText("SelectStationForTokenOption", newStation.getNumber(), hex.getConnectionString( @@ -992,8 +1033,10 @@ public class ORUIManager implements DialogOwner { prompts.toArray(), prompts.get(0)); if (selected == null) return; action.addRelayBaseToken(company.getId(), promptToCityMap.get(selected)); + --freeSlots[promptToCityMap.get(selected)]; } else { action.addRelayBaseToken(company.getId(), promptToCityMap.get(prompts.toArray() [0])); + --freeSlots[promptToCityMap.get(prompts.toArray()[0])]; } } } commit 41575ef06b40d98705a3dfe6ff36f27fe12e37be Author: Stefan Frey <ste...@we...> Date: Thu Jun 14 17:56:46 2012 +0200 fixed error if a comment is added at the start of the game. Reported by Are-Harald Brenne (cherry picked from commit 1686fd33004bbef7c25eeabab96e649f8d1849f8) Conflicts: src/rails/game/ReportBuffer.java diff --git a/src/rails/game/ReportBuffer.java b/src/rails/game/ReportBuffer.java index 8e9751b..53e9767 100644 --- a/src/rails/game/ReportBuffer.java +++ b/src/rails/game/ReportBuffer.java @@ -333,7 +333,12 @@ public final class ReportBuffer { // comments first if (comment != null) { s.append("<span style='color:green;font-size:80%;font-style:italic;'>"); - s.append(item.player.getId() + " says: ' "); + // at gamestart no player is defined, this is a bug-fix + if (item.player == null) { + s.append("'"); + } else { + s.append(item.player.getId() + " says: '"); + } s.append(comment + "'" + NEWLINE_STRING); s.append("</span>"); } commit 309e95ba38a50e10a77f93081fb100141bf95ac2 Author: Stefan Frey <ste...@we...> Date: Wed Jun 13 19:42:52 2012 +0200 removed the limitation text for the 1830 coalfield variant (cherry picked from commit ae10a615c47ca248f0f7d9a5c2c5c38946ced196) diff --git a/src/data/GamesList.xml b/src/data/GamesList.xml index 3674b65..06fe440 100644 --- a/src/data/GamesList.xml +++ b/src/data/GamesList.xml @@ -12,11 +12,6 @@ Coalfields variant by Alan R. Moon Limitations: - The M&H/NYC share swap can only be executed in the SR, in the owning player's turn. - Privates cannot be traded between players. -- The Coalfields variant is playable with the following workarounds: - - Coalfield certificates cannot yet be bought. Execute a Cash Correction to mimic this action. - - Route and revenue calculation will always include the Coalfields, if reachable. - If you have not bought a Coalfields certificate, you'll have to calculate the correct revenue - yourself, and enter it manually. </Description> <!-- GAME OPTIONS must have: - a name, which must also exist as an entry in LocalText.properties, commit 44d3ab262ef9cc7b61afee69a260b803de7a75b1 Author: Stefan Frey <ste...@we...> Date: Tue Jun 12 08:37:03 2012 +0200 1835: Allow manual close of Pfalzbahn (supports play after rules interpretation by John David Galt) (cherry picked from commit b8b5db220ec42180d2799567e6f9343e1207a6c8) diff --git a/src/data/1835/CompanyManager.xml b/src/data/1835/CompanyManager.xml index baa4fd8..9f28099 100644 --- a/src/data/1835/CompanyManager.xml +++ b/src/data/1835/CompanyManager.xml @@ -70,6 +70,7 @@ <ClosingConditions> <Phase>5</Phase> <SpecialProperties condition="ifAllExercised"/> + <CloseManually/> <!-- If tile is laid not via special property--> </ClosingConditions> </Company> <Company name="LD" longname="Leipzig-Dresdner Bahn" type="Private" basePrice="190"> commit fa2dc21691fa5a95753714b1b30f8bd2929e8b09 Author: Stefan Frey <ste...@we...> Date: Wed Jun 6 18:06:51 2012 +0200 added little fun variant 18Lummer (cherry picked from commit 29aeea878329201b84d6238f7b5fd78f0c7d084f) diff --git a/src/data/18Lummer/CompanyManager.xml b/src/data/18Lummer/CompanyManager.xml new file mode 100644 index 0000000..6d3339d --- /dev/null +++ b/src/data/18Lummer/CompanyManager.xml @@ -0,0 +1,43 @@ +<?xml version="1.0"?> +<CompanyManager> + <CompanyType name="Private" class="rails.game.PrivateCompany"> + <ClosingConditions> + <Phase>5</Phase> + </ClosingConditions> + <Tradeable toCompany="yes" lowerPriceFactor="0.5" upperPriceFactor="2.0"/> + <Tradeable toPlayer="yes"/> + </CompanyType> + <CompanyType name="Public" class="rails.game.PublicCompany"> + <CanBuyPrivates/> + <PoolPaysOut/> + <Float percentage="60"/> + <ShareUnit percentage="10"/> + <BaseTokens> + <!-- HomeBase lay options: "whenStarted", "whenFloated", "firstOR" (default) --> + <HomeBase lay="firstOR"/> + <!-- LayCost methods: only "sequence" (1830 style) implemented so far (default) --> + <LayCost method="sequence" cost="0,40"/> + </BaseTokens> + <Certificate type="President" shares="2"/> + <Certificate shares="1" number="8"/> + <Trains limit="4,3,2"/> + <CanUseSpecialProperties/> + </CompanyType> + <Company name="Post" type="Private" basePrice="20" revenue="5" + longname="Postschiff" /> + <Company name="JK" type="Public" tokens="2" fgColour="255,255,255" bgColour="0,0,255" + longname="Jim Knopf"> + <Home hex="C4"/> + </Company> + <Company name="LL" type="Public" tokens="2" fgColour="FFFFFF" bgColour="FF0000" + longname="Lukas Lokomotivfuehrer"> + <Home hex="C8"/> + </Company> + <StartPacket roundClass="rails.game.StartRound_1830"> + <Bidding initial="5" minimum="5" increment="1"/> + <Item name="Post" type="Private" basePrice="20"/> + </StartPacket> +</CompanyManager> + + + \ No newline at end of file diff --git a/src/data/18Lummer/Game.xml b/src/data/18Lummer/Game.xml new file mode 100644 index 0000000..79fc4ac --- /dev/null +++ b/src/data/18Lummer/Game.xml @@ -0,0 +1,102 @@ +<?xml version="1.0"?> +<ComponentManager> + <Component name="GameManager" class="rails.game.GameManager"> + <Game name="18Lummer"/> + <GameOption name="RouteAwareness" values="Highlight,Deactivate" default="Highlight" /> + <GameOption name="RevenueCalculation" values="Suggest,Deactivate" default="Suggest" /> + + <GameParameters> + <PlayerShareLimit percentage="60"> + <!-- Option "NumberOfPlayers" is automatically set + by the game engine --> + <IfOption name="NumberOfPlayers" value="2"> + <IfOption name="TwoPlayersCertLimit70Percent" value="yes"> + <Attributes percentage="70"/> + </IfOption> + </IfOption> + </PlayerShareLimit> + <BankPoolLimit percentage="50"/> + <StockRound> + <NoSaleInFirstSR/> + </StockRound> + <OperatingRound> + <EmergencyTrainBuying mustBuyCheapestTrain="no" mayBuyFromCompany="yes"/> + </OperatingRound> + </GameParameters> + <EndOfGame> + <Bankruptcy/> + <BankBreaks limit="0" finish="setOfORs"/> + <!-- "Runs out"; when "broken", -1 is the limit --> + </EndOfGame> + </Component> + <Component name="PlayerManager" class="rails.game.PlayerManager"> + <Players number="2" cash="600" certLimit="28"/> + <Players number="3" cash="400" certLimit="20"/> + <Players number="4" cash="300" certLimit="16"/> + </Component> + <Component name="Bank" class="rails.game.Bank"> + <Bank amount="2000"/> + <Money format="$@"/> + </Component> + <Component name="TileManager" class="rails.game.TileManager" + file="TileSet.xml"/> + <Component name="Map" class="rails.game.MapManager" file="Map.xml"/> + <Component name="CompanyManager" class="rails.game.CompanyManager" + file="CompanyManager.xml"/> + <Component name="StockMarket" class="rails.game.StockMarket" + file="StockMarket.xml"/> + <Component name="TrainManager" class="rails.game.TrainManager"> + <Defaults> + <Reach base="stops" countTowns="yes"/> + <Score towns="yes"/> + </Defaults> + <TrainType name="2" majorStops="2" cost="80" quantity="2"/> + <TrainType name="3" majorStops="3" cost="180" quantity="1"> + <NewPhase phaseName="3"/> + </TrainType> + <TrainType name="4" majorStops="4" cost="300" quantity="1"> + <NewPhase phaseName="4"/> + </TrainType> + <TrainType name="5" majorStops="5" cost="450" quantity="1"> + <NewPhase phaseName="5"/> + </TrainType> + <TrainType name="6" majorStops="6" cost="630" quantity="1"> + <NewPhase phaseName="6"/> + </TrainType> + <TrainType name="D" majorStops="99" cost="1100" quantity="1"> + <NewPhase phaseName="D"/> + <Exchange cost="800"/> + </TrainType> + </Component> + <Component name="PhaseManager" class="rails.game.PhaseManager"> + <Phase name="2" > + <Tiles colour="yellow"/> + <Privates sellingAllowed="no"/> + <OperatingRounds number="1"/> + <Trains onePerTurn="yes" tradingAllowed="yes"/> + </Phase> + <Phase name="3"> + <Tiles colour="yellow,green"/> + <Privates sellingAllowed="yes"/> + <OperatingRounds number="2"/> + </Phase> + <Phase name="4"> + <Trains rusted="2" limitStep="2"/> + </Phase> + <Phase name="5"> + <Tiles colour="yellow,green,brown"/> + <Trains limitStep="3"/> + <!--Privates close="yes"/--> + <OperatingRounds number="3"/> + <OffBoardRevenue step="2"/> + </Phase> + <Phase name="6"> + <Trains rusted="3"> + <Attributes released="D"/> + </Trains> + </Phase> + <Phase name="D"> + <Trains rusted="4"/> + </Phase> + </Component> +</ComponentManager> diff --git a/src/data/18Lummer/Map.xml b/src/data/18Lummer/Map.xml new file mode 100644 index 0000000..4c7ecb8 --- /dev/null +++ b/src/data/18Lummer/Map.xml @@ -0,0 +1,17 @@ +<Map tileOrientation="EW" letterOrientation="vertical" even="A"> + <Defaults> + <Access type="city" runTo="yes" runThrough="yes" loop="yes" score="major"/> + <Access type="town" runTo="yes" runThrough="yes" loop="yes" score="minor"/> + </Defaults> + <!-- The above defaults are redundant, these settings are the system defaults anyway --> + <Hex name="B3" tile="-7" orientation="0"/> + <Hex name="B5" tile="-1" /> + <Hex name="B7" tile="0" /> + <Hex name="B9" tile="-7" orientation="2"/> + <Hex name="C4" tile="-10" /> + <Hex name="C6" tile="-20" cost="120" /> + <Hex name="C8" tile="-10" /> + <Hex name="D5" tile="0" /> + <Hex name="D7" tile="-1" /> + <Hex name="E6" tile="-7" orientation="4"/> +</Map> \ No newline at end of file diff --git a/src/data/18Lummer/StockMarket.xml b/src/data/18Lummer/StockMarket.xml new file mode 100755 index 0000000..770d885 --- /dev/null +++ b/src/data/18Lummer/StockMarket.xml @@ -0,0 +1,149 @@ +<StockMarket type="rectangular"> + <!-- Note two supported colour specification formats: + RGB decimal with commas and RGB hexadecimal without commas --> + <StockSpaceType name="yellow" colour="255,255,0"> + <NoCertLimit/> + </StockSpaceType> + <StockSpaceType name="orange" colour="FF8000"> + <NoCertLimit/> + <NoHoldLimit/> + </StockSpaceType> + <StockSpaceType name="brown" colour="884000"> + <NoCertLimit/> + <NoHoldLimit/> + <NoBuyLimit/> + </StockSpaceType> + + <StockSpace name="A1" price="60" type="yellow"/> + <StockSpace name="A2" price="53" type="yellow"/> + <StockSpace name="A3" price="46" type="yellow"/> + <StockSpace name="A4" price="39" type="orange"/> + <StockSpace name="A5" price="32" type="orange"/> + <StockSpace name="A6" price="25" type="brown"/> + <StockSpace name="A7" price="18" type="brown"/> + <StockSpace name="A8" price="10" type="brown"/> + <StockSpace name="B1" price="67" /> + <StockSpace name="B2" price="60" type="yellow"/> + <StockSpace name="B3" price="55" type="yellow"/> + <StockSpace name="B4" price="48" type="yellow"/> + <StockSpace name="B5" price="41" type="orange"/> + <StockSpace name="B6" price="34" type="orange"/> + <StockSpace name="B7" price="27" type="brown"/> + <StockSpace name="B8" price="20" type="brown"/> + <StockSpace name="B9" price="10" type="brown"/> + <StockSpace name="C1" price="71" /> + <StockSpace name="C2" price="66" /> + <StockSpace name="C3" price="60" type="yellow"/> + <StockSpace name="C4" price="54" type="yellow"/> + <StockSpace name="C5" price="48" type="yellow"/> + <StockSpace name="C6" price="42" type="orange"/> + <StockSpace name="C7" price="36" type="orange"/> + <StockSpace name="C8" price="30" type="brown"/> + <StockSpace name="C9" price="20" type="brown"/> + <StockSpace name="C10" price="10" type="brown"/> + <StockSpace name="D1" price="76" /> + <StockSpace name="D2" price="70" /> + <StockSpace name="D3" price="65" /> + <StockSpace name="D4" price="60" type="yellow"/> + <StockSpace name="D5" price="55" type="yellow"/> + <StockSpace name="D6" price="50" type="yellow"/> + <StockSpace name="D7" price="45" type="orange"/> + <StockSpace name="D8" price="40" type="orange"/> + <StockSpace name="D9" price="30" type="brown"/> + <StockSpace name="D10" price="20" type="brown"/> + <StockSpace name="D11" price="10" type="brown"/> + <StockSpace name="E1" price="82" /> + <StockSpace name="E2" price="76" /> + <StockSpace name="E3" price="70" /> + <StockSpace name="E4" price="66" /> + <StockSpace name="E5" price="62" /> + <StockSpace name="E6" price="58" type="yellow"/> + <StockSpace name="E7" price="54" type="yellow"/> + <StockSpace name="E8" price="50" type="yellow"/> + <StockSpace name="E9" price="40" type="orange"/> + <StockSpace name="E10" price="30" type="brown"/> + <StockSpace name="E11" price="20" type="brown"/> + <StockSpace name="F1" price="90" /> + <StockSpace name="F2" price="82" /> + <StockSpace name="F3" price="76" /> + <StockSpace name="F4" price="71" /> + <StockSpace name="F5" price="67" /> + <StockSpace name="F6" price="65" /> + <StockSpace name="F7" price="63" /> + <StockSpace name="F8" price="60" type="yellow"/> + <StockSpace name="F9" price="50" type="yellow"/> + <StockSpace name="F10" price="40" type="orange"/> + <StockSpace name="F11" price="30" type="brown"/> + <StockSpace name="G1" price="100" > + <StartSpace/> + </StockSpace> + <StockSpace name="G2" price="90" > + <StartSpace/> + </StockSpace> + <StockSpace name="G3" price="82" > + <StartSpace/> + </StockSpace> + <StockSpace name="G4" price="76" > + <StartSpace/> + </StockSpace> + <StockSpace name="G5" price="71" > + <StartSpace/> + </StockSpace> + <StockSpace name="G6" price="67" > + <StartSpace/> + </StockSpace> + <StockSpace name="G7" price="67" /> + <StockSpace name="G8" price="67" /> + <StockSpace name="G9" price="60" type="yellow"/> + <StockSpace name="G10" price="50" type="yellow"/> + <StockSpace name="G11" price="40" type="orange"/> + <StockSpace name="H1" price="112" /> + <StockSpace name="H2" price="100" /> + <StockSpace name="H3" price="90" /> + <StockSpace name="H4" price="82" /> + <StockSpace name="H5" price="76" /> + <StockSpace name="H6" price="71" /> + <StockSpace name="H7" price="69" /> + <StockSpace name="H8" price="68" /> + <StockSpace name="I1" price="126" /> + <StockSpace name="I2" price="112" /> + <StockSpace name="I3" price="100" /> + <StockSpace name="I4" price="90" /> + <StockSpace name="I5" price="82" /> + <StockSpace name="I6" price="75" /> + <StockSpace nam... [truncated message content] |