Fix crash when setting ChosenColors

This commit is contained in:
drdev
2015-07-19 22:43:30 +00:00
parent d9c3df3252
commit d0e0b95620
2 changed files with 33 additions and 6 deletions

View File

@@ -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),

View File

@@ -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<List<String>> StringListType = new TrackableType<List<String>>() {
@Override
public List<String> getDefaultValue() {
return null;
}
@Override
public List<String> deserialize(TrackableDeserializer td, List<String> oldValue) {
int size = td.readInt();
if (size > 0) {
List<String> set = new ArrayList<String>();
for (int i = 0; i < size; i++) {
set.add(td.readString());
}
return set;
}
return null;
}
@Override
public void serialize(TrackableSerializer ts, List<String> value) {
ts.write(value.size());
for (String s : value) {
ts.write(s);
}
}
};
public static final TrackableType<Set<String>> StringSetType = new TrackableType<Set<String>>() {
@Override
public Set<String> getDefaultValue() {