rewrite raging river with streams

This commit is contained in:
igoudt 2018-01-12 17:07:06 +01:00
parent f10bbdf6a0
commit b3d1454055

View file

@ -27,9 +27,7 @@
*/
package mage.cards.r;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.AttacksWithCreaturesTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
@ -54,6 +52,11 @@ import mage.target.Target;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.targetpointer.FixedTarget;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
/**
*
* @author L_J
@ -124,25 +127,13 @@ class RagingRiverEffect extends OneShotEffect {
// it could be nice to invoke some graphic indicator of which creature is Left or Right in this spot
StringBuilder sb = new StringBuilder("Left pile of ").append(defender.getLogName()).append(": ");
int i = 0;
for (Permanent permanent : leftLog) {
i++;
sb.append(permanent.getLogName());
if (i < leftLog.size()) {
sb.append(", ");
}
}
sb.append(leftLog.stream().map(MageObject::getLogName).collect(Collectors.joining(", ")));
game.informPlayers(sb.toString());
sb = new StringBuilder("Right pile of ").append(defender.getLogName()).append(": ");
i = 0;
for (Permanent permanent : rightLog) {
i++;
sb.append(permanent.getLogName());
if (i < rightLog.size()) {
sb.append(", ");
}
}
sb.append(rightLog.stream().map(MageObject::getLogName).collect(Collectors.joining(", ")));
game.informPlayers(sb.toString());
}
}
@ -160,19 +151,13 @@ class RagingRiverEffect extends OneShotEffect {
// shortcut in case of no labeled blockers available
filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class)));
} else {
List<Permanent> leftLog = new ArrayList<>();
List<Permanent> rightLog = new ArrayList<>();
for (Permanent permanent : left) {
if (permanent.getControllerId() == defender.getId()) {
leftLog.add(permanent);
}
}
for (Permanent permanent : right) {
if (permanent.getControllerId() == defender.getId()) {
rightLog.add(permanent);
}
}
List<Permanent> leftLog = left.stream()
.filter(permanent -> permanent.getControllerId().equals(defender.getId()))
.collect(Collectors.toList());
List<Permanent> rightLog = right.stream()
.filter(permanent -> permanent.getControllerId().equals(defender.getId()))
.collect(Collectors.toList());
if (controller.choosePile(outcome, attacker.getName() + ": attacking " + defender.getName(), leftLog, rightLog, game)) {
filter.add(Predicates.not(Predicates.or(new AbilityPredicate(FlyingAbility.class), new PermanentInListPredicate(left))));