From: <ev...@us...> - 2011-02-15 22:40:23
|
Revision: 1487 http://rails.svn.sourceforge.net/rails/?rev=1487&view=rev Author: evos Date: 2011-02-15 22:40:16 +0000 (Tue, 15 Feb 2011) Log Message: ----------- 1830 Coalfields: configured available trains and train obsolescence Modified Paths: -------------- trunk/18xx/data/1830/Game.xml trunk/18xx/rails/game/TrainManager.java trunk/18xx/rails/game/TrainType.java trunk/18xx/rails/game/TrainTypeI.java Modified: trunk/18xx/data/1830/Game.xml =================================================================== --- trunk/18xx/data/1830/Game.xml 2011-02-13 19:57:47 UTC (rev 1486) +++ trunk/18xx/data/1830/Game.xml 2011-02-15 22:40:16 UTC (rev 1487) @@ -99,13 +99,15 @@ cities="double" if city-revenue is doubled (e.g. 1826 TGV). --> </Defaults> - <Train name="2" majorStops="2" cost="80" amount="6"/> - <Train name="3" majorStops="3" cost="180" amount="5" startPhase="3"/> - <Train name="4" majorStops="4" cost="300" amount="4" startPhase="4" - rustedTrain="2"/> + <Train name="2" majorStops="2" cost="80" amount="6" obsoleting="yes"/> + <Train name="3" majorStops="3" cost="180" amount="5" obsoleting="yes" startPhase="3"/> + <Train name="4" majorStops="4" cost="300" amount="4" obsoleting="yes" startPhase="4" + rustedTrain="2"> + <IfOption name="Variant" value="Coalfields"> + <Attributes amount="5"/> + </IfOption> + </Train> <Train name="5" majorStops="5" cost="450" amount="3" startPhase="5"/> - <!--Train name="6" majorStops="6" cost="630" amount="2" startPhase="6" - rustedTrain="3" releasedTrain="D"/--> <Train name="6" majorStops="6" cost="630" startPhase="6" rustedTrain="3" releasedTrain="D"> <IfOption name="WithOptional6Train" value="yes"> @@ -114,12 +116,22 @@ <IfOption name="WithOptional6Train" value="no"> <Attributes amount="2"/> </IfOption> - <IfOption name="Variant" value="Pere Marquette"> - <Attributes amount="3"/> + <IfOption name="Variant" value="Pere Marquette,Coalfields"> + <Attributes amount="3" releasedTrain="7,D"/> </IfOption> </Train> - <Train name="D" majorStops="99" cost="1100" startPhase="D" - rustedTrain="4"> + <IfOption name="Variant" value="Coalfields"> + <Train name="7" majorStops="7" cost="710" amount="2"/> + </IfOption> + <Train name="D" majorStops="99" startPhase="D" rustedTrain="4"> + <IfOption name="Variant" value="Basegame,Pere Marquette"> + <Attributes cost="1100"/> + <Exchange cost="800"/> + </IfOption> + <IfOption name="Variant" value="Coalfields"> + <Attributes cost="900"/> + <Exchange cost="750"/> + </IfOption> <IfOption name="UnlimitedTopTrains" value="yes"> <Attributes amount="-1"/> </IfOption> Modified: trunk/18xx/rails/game/TrainManager.java =================================================================== --- trunk/18xx/rails/game/TrainManager.java 2011-02-13 19:57:47 UTC (rev 1486) +++ trunk/18xx/rails/game/TrainManager.java 2011-02-15 22:40:16 UTC (rev 1487) @@ -84,8 +84,12 @@ // Finish initialisation of the train types for (TrainTypeI type : lTrainTypes) { - if (type.getReleasedTrainTypeName() != null) { - type.setReleasedTrainType(mTrainTypes.get(type.getReleasedTrainTypeName())); + if (type.getReleasedTrainTypeNames() != null) { + List<TrainTypeI> rtts = new ArrayList<TrainTypeI>(2); + for (String ttName : type.getReleasedTrainTypeNames().split(",")) { + rtts.add (mTrainTypes.get(ttName)); + } + type.setReleasedTrainTypes(rtts); } if (type.getRustedTrainTypeName() != null) { type.setRustedTrainType(mTrainTypes.get(type.getRustedTrainTypeName())); @@ -173,11 +177,15 @@ trainAvailabilityChanged = true; } - TrainTypeI releasedType = boughtType.getReleasedTrainType(); - if (releasedType != null) { - if (!releasedType.isAvailable()) releasedType.setAvailable(bank); - ReportBuffer.add(LocalText.getText("TrainsAvailable", + List<TrainTypeI> releasedTypes = boughtType.getReleasedTrainTypes(); + if (releasedTypes != null) { + for (TrainTypeI releasedType : releasedTypes) { + if (!releasedType.isAvailable()) { + releasedType.setAvailable(bank); + ReportBuffer.add(LocalText.getText("TrainsAvailable", releasedType.getName())); + } + } trainAvailabilityChanged = true; } } Modified: trunk/18xx/rails/game/TrainType.java =================================================================== --- trunk/18xx/rails/game/TrainType.java 2011-02-13 19:57:47 UTC (rev 1486) +++ trunk/18xx/rails/game/TrainType.java 2011-02-15 22:40:16 UTC (rev 1487) @@ -2,6 +2,7 @@ package rails.game; import java.util.ArrayList; +import java.util.List; import org.apache.log4j.Logger; @@ -60,8 +61,8 @@ private String rustedTrainTypeName = null; protected TrainTypeI rustedTrainType = null; - private String releasedTrainTypeName = null; - protected TrainTypeI releasedTrainType = null; + private String releasedTrainTypeNames = null; + protected List<TrainTypeI> releasedTrainTypes = null; protected ArrayList<TrainI> trains = null; @@ -141,7 +142,7 @@ rustedTrainTypeName = tag.getAttributeAsString("rustedTrain"); // Other train type released for buying - releasedTrainTypeName = tag.getAttributeAsString("releasedTrain"); + releasedTrainTypeNames = tag.getAttributeAsString("releasedTrain"); // Can run as obsolete train obsoleting = tag.getAttributeAsBoolean("obsoleting"); @@ -331,10 +332,10 @@ } /** - * @return Returns the releasedTrainType. + * @return Returns the releasedTrainTypes. */ - public TrainTypeI getReleasedTrainType() { - return releasedTrainType; + public List<TrainTypeI> getReleasedTrainTypes() { + return releasedTrainTypes; } /** @@ -368,8 +369,8 @@ /** * @return Returns the releasedTrainTypeName. */ - public String getReleasedTrainTypeName() { - return releasedTrainTypeName; + public String getReleasedTrainTypeNames() { + return releasedTrainTypeNames; } /** @@ -386,8 +387,8 @@ /** * @param releasedTrainType The releasedTrainType to set. */ - public void setReleasedTrainType(TrainTypeI releasedTrainType) { - this.releasedTrainType = releasedTrainType; + public void setReleasedTrainTypes(List<TrainTypeI> releasedTrainTypes) { + this.releasedTrainTypes = releasedTrainTypes; } /** @@ -483,8 +484,8 @@ if (rustedTrainTypeName != null) { appendInfoText(b, LocalText.getText("RustsTrains", rustedTrainTypeName)); } - if (releasedTrainTypeName != null) { - appendInfoText(b, LocalText.getText("ReleasesTrains", releasedTrainTypeName)); + if (releasedTrainTypeNames != null) { + appendInfoText(b, LocalText.getText("ReleasesTrains", releasedTrainTypeNames)); } if (b.length() == 6) b.append(LocalText.getText("None")); Modified: trunk/18xx/rails/game/TrainTypeI.java =================================================================== --- trunk/18xx/rails/game/TrainTypeI.java 2011-02-13 19:57:47 UTC (rev 1486) +++ trunk/18xx/rails/game/TrainTypeI.java 2011-02-15 22:40:16 UTC (rev 1487) @@ -1,6 +1,8 @@ /* $Header: /Users/blentz/rails_rcs/cvs/18xx/rails/game/TrainTypeI.java,v 1.14 2010/03/04 22:08:09 evos Exp $ */ package rails.game; +import java.util.List; + public interface TrainTypeI extends ConfigurableComponentI, Cloneable { @@ -51,7 +53,7 @@ /** * @return Returns the releasedTrainType. */ - public TrainTypeI getReleasedTrainType(); + public List<TrainTypeI> getReleasedTrainTypes(); /** * @return Returns the rustedTrainType. @@ -91,7 +93,7 @@ public boolean hasRusted(); - public String getReleasedTrainTypeName(); + public String getReleasedTrainTypeNames(); public String getRustedTrainTypeName(); @@ -99,7 +101,7 @@ public void setPermanent(boolean permanent); - public void setReleasedTrainType(TrainTypeI releasedTrainType); + public void setReleasedTrainTypes(List<TrainTypeI> releasedTrainTypes); public void setRustedTrainType(TrainTypeI rustedTrainType); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |