refactored DamagedPlayerThisTurnPredicate

This commit is contained in:
Evan Kranzler 2020-01-06 19:56:08 -05:00
parent 13d76bfc06
commit 3f0547a7fa
3 changed files with 23 additions and 87 deletions

View file

@ -1,71 +0,0 @@
package mage.filter.predicate.permanent;
import java.util.UUID;
import mage.constants.TargetController;
import mage.filter.predicate.ObjectPlayer;
import mage.filter.predicate.ObjectPlayerPredicate;
import mage.game.Controllable;
import mage.game.Game;
import mage.watchers.common.PlayerDamagedBySourceWatcher;
/**
*
* @author LevelX2
*/
public class DamagedPlayerThisTurnPredicate implements ObjectPlayerPredicate<ObjectPlayer<Controllable>> {
private final TargetController controller;
public DamagedPlayerThisTurnPredicate(TargetController controller) {
this.controller = controller;
}
@Override
public boolean apply(ObjectPlayer<Controllable> input, Game game) {
Controllable object = input.getObject();
UUID playerId = input.getPlayerId();
switch (controller) {
case YOU:
PlayerDamagedBySourceWatcher watcher = game.getState().getWatcher(PlayerDamagedBySourceWatcher.class, playerId);
if (watcher != null) {
return watcher.hasSourceDoneDamage(object.getId(), game);
}
break;
case OPPONENT:
for (UUID opponentId : game.getOpponents(playerId)) {
watcher = game.getState().getWatcher(PlayerDamagedBySourceWatcher.class, opponentId);
if (watcher != null) {
return watcher.hasSourceDoneDamage(object.getId(), game);
}
}
break;
case NOT_YOU:
for (UUID notYouId : game.getState().getPlayersInRange(playerId, game)) {
if (!notYouId.equals(playerId)) {
watcher = game.getState().getWatcher(PlayerDamagedBySourceWatcher.class, notYouId);
if (watcher != null) {
return watcher.hasSourceDoneDamage(object.getId(), game);
}
}
}
break;
case ANY:
for (UUID anyId : game.getState().getPlayersInRange(playerId, game)) {
watcher = game.getState().getWatcher(PlayerDamagedBySourceWatcher.class, anyId);
if (watcher != null) {
return watcher.hasSourceDoneDamage(object.getId(), game);
}
}
return true;
}
return false;
}
@Override
public String toString() {
return "Damaged player (" + controller.toString() + ')';
}
}