diff --git a/forge-game/src/main/java/forge/trackable/TrackableProperty.java b/forge-game/src/main/java/forge/trackable/TrackableProperty.java index 6ccb519581a..6e9b8a56e0f 100644 --- a/forge-game/src/main/java/forge/trackable/TrackableProperty.java +++ b/forge-game/src/main/java/forge/trackable/TrackableProperty.java @@ -32,7 +32,7 @@ public enum TrackableProperty { AssignedDamage(TrackableTypes.IntegerType), ShieldCount(TrackableTypes.IntegerType), ChosenType(TrackableTypes.StringType), - ChosenColors(TrackableTypes.CardViewCollectionType), + ChosenColors(TrackableTypes.StringListType), ChosenPlayer(TrackableTypes.PlayerViewType), ChosenDirection(TrackableTypes.EnumType(Direction.class)), Remembered(TrackableTypes.StringType), diff --git a/forge-game/src/main/java/forge/trackable/TrackableTypes.java b/forge-game/src/main/java/forge/trackable/TrackableTypes.java index 49f6fc8f995..59b7436fdbc 100644 --- a/forge-game/src/main/java/forge/trackable/TrackableTypes.java +++ b/forge-game/src/main/java/forge/trackable/TrackableTypes.java @@ -1,7 +1,9 @@ package forge.trackable; +import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; @@ -56,11 +58,9 @@ public class TrackableTypes { @Override protected void updateObjLookup(T newObj) { - if (newObj != null) { - if (!objLookup.containsKey(newObj.getId())) { - objLookup.put(newObj.getId(), newObj); - newObj.updateObjLookup(); - } + if (newObj != null && !objLookup.containsKey(newObj.getId())) { + objLookup.put(newObj.getId(), newObj); + newObj.updateObjLookup(); } } @@ -430,6 +430,33 @@ public class TrackableTypes { ts.write(value.getColor()); } }; + public static final TrackableType> StringListType = new TrackableType>() { + @Override + public List getDefaultValue() { + return null; + } + + @Override + public List deserialize(TrackableDeserializer td, List oldValue) { + int size = td.readInt(); + if (size > 0) { + List set = new ArrayList(); + for (int i = 0; i < size; i++) { + set.add(td.readString()); + } + return set; + } + return null; + } + + @Override + public void serialize(TrackableSerializer ts, List value) { + ts.write(value.size()); + for (String s : value) { + ts.write(s); + } + } + }; public static final TrackableType> StringSetType = new TrackableType>() { @Override public Set getDefaultValue() {