From: "Enrico Weigelt, metux IT consult" <[email protected]>
2DO: check whether we can cache the result of getValidDifficulties(),
or even create it on class initialization. (depends on whether locales
are already loaded at that time or can change later)
---
src/net/sf/freecol/FreeCol.java | 33 ++++++++++++++++++----------
src/net/sf/freecol/common/i18n/Messages.java | 10 ---------
2 files changed, 21 insertions(+), 22 deletions(-)
diff --git a/src/net/sf/freecol/FreeCol.java b/src/net/sf/freecol/FreeCol.java
index b746b8ccd9a..39a5d4565cf 100644
--- a/src/net/sf/freecol/FreeCol.java
+++ b/src/net/sf/freecol/FreeCol.java
@@ -37,7 +37,6 @@ import java.util.jar.Manifest;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
-import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import net.sf.freecol.client.ClientOptions;
@@ -86,9 +85,14 @@ public final class FreeCol {
/** The FreeCol protocol version number. */
private static final String FREECOL_PROTOCOL_VERSION = "0.1.6";
- /** The difficulty levels. */
- private static final String[] DIFFICULTIES = {
- "veryEasy", "easy", "medium", "hard", "veryHard"
+ /** The difficulty levels w/ prefix -- save CPU cycles and code complexity
+ by not transforming over and over again. **/
+ private static final String[] DIFFICULTIES_PREFIXED = {
+ "model.difficulty.veryEasy",
+ "model.difficulty.easy",
+ "model.difficulty.medium",
+ "model.difficulty.hard",
+ "model.difficulty.veryHard"
};
/** The extension for FreeCol saved games. */
@@ -1018,11 +1022,14 @@ public final class FreeCol {
* @return The name of the selected difficulty, or null if none.
*/
public static String selectDifficulty(String arg) {
- String difficulty
- = find(map(DIFFICULTIES, d -> "model.difficulty." + d),
- Messages.matchesName(arg));
- if (difficulty != null) setDifficulty(difficulty);
- return difficulty;
+ if (arg != null)
+ for (String difficulty : DIFFICULTIES_PREFIXED)
+ if (arg.equals(Messages.getName(difficulty))) {
+ setDifficulty(difficulty);
+ return difficulty;
+ }
+
+ return null;
}
/**
@@ -1050,9 +1057,11 @@ public final class FreeCol {
* @return The valid difficulty levels, comma separated.
*/
public static String getValidDifficulties() {
- return transform(DIFFICULTIES, alwaysTrue(),
- d -> Messages.getName("model.difficulty." + d),
- Collectors.joining(","));
+ StrCat cat = new StrCat(",");
+ for (String s : DIFFICULTIES_PREFIXED)
+ cat.add(s);
+
+ return cat.toString();
}
/**
diff --git a/src/net/sf/freecol/common/i18n/Messages.java
b/src/net/sf/freecol/common/i18n/Messages.java
index e0d5978bea8..857609fa30c 100644
--- a/src/net/sf/freecol/common/i18n/Messages.java
+++ b/src/net/sf/freecol/common/i18n/Messages.java
@@ -468,16 +468,6 @@ public class Messages {
}
/**
- * A predicate maker to match by message name.
- *
- * @param key The name of the message.
- * @return A suitable {@code Predicate}.
- */
- public static final Predicate<String> matchesName(String key) {
- return matchKeyEquals(key, (String k) -> Messages.getName(k));
- }
-
- /**
* A predicate maker to match named types.
*
* @param key The name of the type.
--
2.11.0.rc0.7.gbe5a750
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Freecol-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freecol-developers