From 720ce0827af4df652ff65ac3d45e75a54450a64b Mon Sep 17 00:00:00 2001 From: Roman Krejcik Date: Sat, 19 Nov 2022 13:41:03 +0100 Subject: [PATCH] serialize additional feature info for farm hints --- .../jcloisterzone/engine/StateGsonBuilder.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) 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;