diff --git a/src/main/java/com/jcloisterzone/engine/StateGsonBuilder.java b/src/main/java/com/jcloisterzone/engine/StateGsonBuilder.java index 738abb87..c8999ab2 100644 --- a/src/main/java/com/jcloisterzone/engine/StateGsonBuilder.java +++ b/src/main/java/com/jcloisterzone/engine/StateGsonBuilder.java @@ -8,6 +8,8 @@ import com.jcloisterzone.board.pointer.FeaturePointer; import com.jcloisterzone.event.*; import com.jcloisterzone.event.ScoreEvent.ReceivedPoints; +import com.jcloisterzone.feature.Field; +import com.jcloisterzone.feature.Scoreable; import com.jcloisterzone.feature.Tower; import com.jcloisterzone.figure.Follower; import com.jcloisterzone.figure.Meeple; @@ -361,6 +363,20 @@ public JsonElement serializeFeatures(GameState root, JsonSerializationContext co if (f instanceof Tower) { item.addProperty("height", ((Tower) f).getHeight()); } + if (f instanceof Scoreable) { + JsonArray owners = new JsonArray(); + ((Scoreable) f).getOwners(root).forEach(p -> owners.add(p.getIndex())); + item.add("owners", owners); + } + if (f instanceof Field) { + Field field = (Field) f; + int cities = field.getAdjoiningCities().size(); + if (field.isAdjoiningCityOfCarcassonne()) { + cities++; + } + item.addProperty("cities", cities); + } + features.add(item); }); return features;