try to fix StackOverflow

This commit is contained in:
Anthony Calosa
2020-12-07 23:01:15 +08:00
parent 28dbf55c82
commit f1767a57a3

View File

@@ -392,6 +392,7 @@ public class CardView extends GameEntityView {
if (viewers == null || Iterables.isEmpty(viewers)) { return true; } if (viewers == null || Iterables.isEmpty(viewers)) { return true; }
return Iterables.any(viewers, new Predicate<PlayerView>() { return Iterables.any(viewers, new Predicate<PlayerView>() {
@Override
public final boolean apply(final PlayerView input) { public final boolean apply(final PlayerView input) {
return canBeShownTo(input); return canBeShownTo(input);
} }
@@ -456,14 +457,17 @@ public class CardView extends GameEntityView {
} }
public boolean canFaceDownBeShownToAny(final Iterable<PlayerView> viewers) { public boolean canFaceDownBeShownToAny(final Iterable<PlayerView> viewers) {
if (viewers == null || Iterables.isEmpty(viewers)) { return true; }
return Iterables.any(viewers, new Predicate<PlayerView>() { return Iterables.any(viewers, new Predicate<PlayerView>() {
@Override public final boolean apply(final PlayerView input) { @Override
return canFaceDownBeShownTo(input); public final boolean apply(final PlayerView input) {
return canFaceDownBeShownTo(input, false);
} }
}); });
} }
private boolean canFaceDownBeShownTo(final PlayerView viewer) { private boolean canFaceDownBeShownTo(final PlayerView viewer, boolean skip) {
if (!isFaceDown()) { if (!isFaceDown()) {
return true; return true;
} }
@@ -472,13 +476,15 @@ public class CardView extends GameEntityView {
if (mayPlayerLook(viewer)) { if (mayPlayerLook(viewer)) {
return true; return true;
} }
final PlayerView controller = getController(); if (!skip) {
//if viewer is controlled by another player, also check if face can be shown to that player //if viewer is controlled by another player, also check if face can be shown to that player
final PlayerView mindSlaveMaster = viewer.getMindSlaveMaster(); final PlayerView mindSlaveMaster = viewer.getMindSlaveMaster();
if (mindSlaveMaster != null && mindSlaveMaster != controller && canFaceDownBeShownTo(mindSlaveMaster)) { if (mindSlaveMaster != null) {
return true; return canFaceDownBeShownTo(mindSlaveMaster, true);
} }
return isInZone(EnumSet.of(ZoneType.Battlefield, ZoneType.Stack, ZoneType.Sideboard)) && controller.equals(viewer); }
return isInZone(EnumSet.of(ZoneType.Battlefield, ZoneType.Stack, ZoneType.Sideboard)) && getController().equals(viewer);
} }
public FCollectionView<CardView> getEncodedCards() { public FCollectionView<CardView> getEncodedCards() {