mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
Prevent concurrent modification exception when building targeting overlays
This commit is contained in:
@@ -53,7 +53,7 @@ public class CombatView extends TrackableObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Iterable<CardView> getAttackers() {
|
public Iterable<CardView> getAttackers() {
|
||||||
return getAttackersWithDefenders().keySet();
|
return new HashSet<CardView>(getAttackersWithDefenders().keySet());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Iterable<GameEntityView> getDefenders() {
|
public Iterable<GameEntityView> getDefenders() {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import forge.game.player.PlayerView;
|
|||||||
import forge.trackable.TrackableCollection;
|
import forge.trackable.TrackableCollection;
|
||||||
import forge.trackable.TrackableObject;
|
import forge.trackable.TrackableObject;
|
||||||
import forge.trackable.TrackableProperty;
|
import forge.trackable.TrackableProperty;
|
||||||
|
import forge.util.FCollectionView;
|
||||||
|
|
||||||
|
|
||||||
public class StackItemView extends TrackableObject {
|
public class StackItemView extends TrackableObject {
|
||||||
@@ -72,14 +73,14 @@ public class StackItemView extends TrackableObject {
|
|||||||
set(TrackableProperty.ActivatingPlayer, PlayerView.get(si.getActivatingPlayer()));
|
set(TrackableProperty.ActivatingPlayer, PlayerView.get(si.getActivatingPlayer()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Iterable<CardView> getTargetCards() {
|
public FCollectionView<CardView> getTargetCards() {
|
||||||
return get(TrackableProperty.TargetCards);
|
return get(TrackableProperty.TargetCards);
|
||||||
}
|
}
|
||||||
void updateTargetCards(SpellAbilityStackInstance si) {
|
void updateTargetCards(SpellAbilityStackInstance si) {
|
||||||
set(TrackableProperty.TargetCards, CardView.getCollection(si.getTargetChoices().getTargetCards()));
|
set(TrackableProperty.TargetCards, CardView.getCollection(si.getTargetChoices().getTargetCards()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Iterable<PlayerView> getTargetPlayers() {
|
public FCollectionView<PlayerView> getTargetPlayers() {
|
||||||
return get(TrackableProperty.TargetPlayers);
|
return get(TrackableProperty.TargetPlayers);
|
||||||
}
|
}
|
||||||
void updateTargetPlayers(SpellAbilityStackInstance si) {
|
void updateTargetPlayers(SpellAbilityStackInstance si) {
|
||||||
|
|||||||
@@ -265,8 +265,7 @@ public enum TargetingOverlay {
|
|||||||
addArc(endpoints.get(defender.getId()), endpoints.get(c.getId()), true);
|
addArc(endpoints.get(defender.getId()), endpoints.get(c.getId()), true);
|
||||||
}
|
}
|
||||||
// if c is a planeswalker that's being attacked
|
// if c is a planeswalker that's being attacked
|
||||||
final Iterable<CardView> attackers = combat.getAttackersOf(c);
|
for (final CardView pwAttacker : combat.getAttackersOf(c)) {
|
||||||
for (final CardView pwAttacker : attackers) {
|
|
||||||
addArc(endpoints.get(c.getId()), endpoints.get(pwAttacker.getId()), true);
|
addArc(endpoints.get(c.getId()), endpoints.get(pwAttacker.getId()), true);
|
||||||
}
|
}
|
||||||
for (final CardView attackingCard : combat.getAttackers()) {
|
for (final CardView attackingCard : combat.getAttackers()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user