@Override protected Tracker clone() { Tracker ret = (Tracker) super.clone(); ret.values = new java.util.HashSet<Integer>(this.values); ret.unmodifiable = java.util.Collections.unmodifiableSet(ret.values); return ret; }
public static final class Tracker extends org.rnd.jmagic.engine.Tracker<java.util.Collection<Integer>> { private java.util.Set<Integer> values = new java.util.HashSet<Integer>(); private java.util.Set<Integer> unmodifiable = java.util.Collections.unmodifiableSet(this.values); @Override protected Tracker clone() { Tracker ret = (Tracker) super.clone(); ret.values = new java.util.HashSet<Integer>(this.values); ret.unmodifiable = java.util.Collections.unmodifiableSet(ret.values); return ret; } @Override protected java.util.Collection<Integer> getValueInternal() { return this.unmodifiable; } @Override protected void reset() { this.values.clear(); } @Override protected boolean match(GameState state, Event event) { return event.type == EventType.BECOMES_TARGET; } @Override protected void update(GameState state, Event event) { Identified target = event .parameters .get(EventType.Parameter.TARGET) .evaluate(state, event.getSource()) .getOne(Identified.class); this.values.add(target.ID); } }