Skip to content

Commit

Permalink
do not score disabled scripted modifiers from expansions
Browse files Browse the repository at this point in the history
fixes #405
  • Loading branch information
farin committed Oct 1, 2021
1 parent 04f71aa commit cb9f9a2
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/main/java/com/jcloisterzone/feature/City.java
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ public PointsExpression getStructurePoints(GameState state, boolean completed) {
exprItems.add(new ExprItem("darmstadtium", 3));
}

scoreScriptedModifiers(exprItems, java.util.Map.of("tiles", tileCount, "completed", completed));
scoreScriptedModifiers(state, exprItems, java.util.Map.of("tiles", tileCount, "completed", completed));
}

String name = "city";
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/jcloisterzone/feature/Field.java
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ private PointsExpression getCityPoints(GameState state, String exprName, int poi
}
}

scoreScriptedModifiers(exprItems, java.util.Map.of("cities", cityCount, "castles", castleCount));
scoreScriptedModifiers(state, exprItems, java.util.Map.of("cities", cityCount, "castles", castleCount));
return new PointsExpression(exprName, List.ofAll(exprItems));
}

Expand Down
10 changes: 6 additions & 4 deletions src/main/java/com/jcloisterzone/feature/ModifiedFeature.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,10 @@ default <T> T getModifier(GameState state, FeatureModifier<T> modifier, T defaul
return (T) getModifiers().get((FeatureModifier<?>) modifier).getOrElse(defaultValue);
}

default Set<FeatureModifier<?>> getScriptedModifiers() {
return getModifiers().keySet().filter(mod -> mod.getScoringScript() != null);
default Set<FeatureModifier<?>> getScriptedModifiers(GameState state) {
return getModifiers().keySet().filter(mod ->
mod.getScoringScript() != null && (mod.getEnabledBy() == null || mod.getEnabledBy().apply(state))
);
}

default Map<FeatureModifier<?>, Object> mergeModifiers(ModifiedFeature<C> other) {
Expand Down Expand Up @@ -71,8 +73,8 @@ default Map<FeatureModifier<?>, Object> mergeModifiers(Map<FeatureModifier<?>, O
return HashMap.ofEntries(entries);
}

default void scoreScriptedModifiers(java.util.List<ExprItem> exprItems, java.util.Map<String, Object> members) {
Set<FeatureModifier<?>> scriptedModifiers = getScriptedModifiers();
default void scoreScriptedModifiers(GameState state, java.util.List<ExprItem> exprItems, java.util.Map<String, Object> members) {
Set<FeatureModifier<?>> scriptedModifiers = getScriptedModifiers(state);
if (!scriptedModifiers.isEmpty()) {
try (Context context = Context.create("js")) {
Value bindings = context.getBindings("js");
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/jcloisterzone/feature/Monastery.java
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ public PointsExpression getStructurePoints(GameState state, boolean completed) {
}
String baseName = isShrine(state) ? "shrine" : "monastery";

scoreScriptedModifiers(exprItems, java.util.Map.of("tiles", adjacent + 1, "completed", completed));
scoreScriptedModifiers(state, exprItems, java.util.Map.of("tiles", adjacent + 1, "completed", completed));
return new PointsExpression(completed ? baseName : baseName + ".incomplete", List.ofAll(exprItems));
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/jcloisterzone/feature/Road.java
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ public PointsExpression getStructurePoints(GameState state, boolean completed) {
exprItems.add(new ExprItem(meeplesCount, "meeples", 2 * meeplesCount));
}

scoreScriptedModifiers(exprItems, java.util.Map.of("tiles", tileCount, "completed", completed));
scoreScriptedModifiers(state, exprItems, java.util.Map.of("tiles", tileCount, "completed", completed));
return new PointsExpression(completed ? "road" : "road.incomplete", List.ofAll(exprItems));
}

Expand Down

0 comments on commit cb9f9a2

Please sign in to comment.