From: <ev...@us...> - 2011-01-29 16:48:28
|
Revision: 1476 http://rails.svn.sourceforge.net/rails/?rev=1476&view=rev Author: evos Date: 2011-01-29 16:48:22 +0000 (Sat, 29 Jan 2011) Log Message: ----------- Allow game option names with localised parameters. Applies to 18Kaas to display "Version of Map" Modified Paths: -------------- trunk/18xx/LocalisedText.properties trunk/18xx/data/18Kaas/Game.xml trunk/18xx/data/GamesList.xml trunk/18xx/rails/game/GameOption.java Modified: trunk/18xx/LocalisedText.properties =================================================================== --- trunk/18xx/LocalisedText.properties 2011-01-28 19:49:39 UTC (rev 1475) +++ trunk/18xx/LocalisedText.properties 2011-01-29 16:48:22 UTC (rev 1476) @@ -644,6 +644,7 @@ Variant=Variant VariantIs=Variant is {0}. Version=Version +VersionOf=version of {0} WantToReplaceToken=Do you want to replace the {0} home token with one of {1}? WarningNeedCash=Warning: {0} will be deducted from the company revenue or from your personal cash WHICH_PRICE=Which price? Modified: trunk/18xx/data/18Kaas/Game.xml =================================================================== --- trunk/18xx/data/18Kaas/Game.xml 2011-01-28 19:49:39 UTC (rev 1475) +++ trunk/18xx/data/18Kaas/Game.xml 2011-01-29 16:48:22 UTC (rev 1476) @@ -2,7 +2,7 @@ <ComponentManager> <Component name="GameManager" class="rails.game.GameManager"> <Game name="18Kaas"/> - <GameOption name="Version" values="v1,v2" default="v2" /> + <GameOption name="VersionOf" parm="{MAP}" values="v1,v2" default="v2" /> <GameOption name="RouteAwareness" values="Highlight,Deactivate" default="Deactivate" /> <GameOption name="RevenueCalculation" values="Suggest,Deactivate" default="Deactivate" /> <GameOption name="18KaasRuhrgebiedDoublesOnlyMajors" type="toggle" default="yes" /> Modified: trunk/18xx/data/GamesList.xml =================================================================== --- trunk/18xx/data/GamesList.xml 2011-01-28 19:49:39 UTC (rev 1475) +++ trunk/18xx/data/GamesList.xml 2011-01-29 16:48:22 UTC (rev 1476) @@ -139,7 +139,8 @@ Should work, but has not been extensively tested. Limitations as with 1830. </Description> - <Option name="Version" values="v1,v2" default="v2" /> + <Option name="VersionOf" parm="{MAP}" values="v1,v2" default="v2" /> + <!-- Note: a parameter in braces {...} will be localised for display--> <Option name="RouteAwareness" values="Highlight,Deactivate" default="Highlight" /> <Option name="RevenueCalculation" values="Suggest,Deactivate" default="Suggest" /> <Option name="18KaasRuhrgebiedDoublesOnlyMajors" type="toggle" default="yes" /> Modified: trunk/18xx/rails/game/GameOption.java =================================================================== --- trunk/18xx/rails/game/GameOption.java 2011-01-28 19:49:39 UTC (rev 1475) +++ trunk/18xx/rails/game/GameOption.java 2011-01-29 16:48:22 UTC (rev 1476) @@ -2,6 +2,8 @@ package rails.game; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import rails.util.LocalText; @@ -27,10 +29,14 @@ // Some other common game options public static final String VARIANT = "Variant"; + // A regex to match parameters against + private static final Pattern pattern = Pattern.compile("\\{(.*)\\}"); public GameOption(String name, String[] parameters) { this.name = name; - if (parameters != null) parm = parameters.clone(); + if (parameters != null) { + parm = parameters.clone(); + } parametrisedName = constructParametrisedName (name, parameters); optionsMap.put(parametrisedName, this); } @@ -50,7 +56,15 @@ } public String getLocalisedName() { - return LocalText.getText(name, (Object[]) parm); + String[] localisedParms = null; + if (parm != null) { + localisedParms = parm.clone(); + for (int i=0; i<parm.length; i++) { + Matcher m = pattern.matcher(parm[i]); + if (m.matches()) localisedParms[i] = LocalText.getText(m.group(1)); + } + } + return LocalText.getText(name, (Object[]) localisedParms); } public String getType() { @@ -61,12 +75,6 @@ return isBoolean; } - /* - public void setParameters(String[] parameters) { - parm = parameters.clone(); - } - */ - public void setAllowedValues(List<String> values) { allowedValues = values; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |