rewrote enum comparisons, iterator to removeIf, added some stream and filters

This commit is contained in:
ingmargoudt 2017-02-11 22:37:00 +01:00
parent 05e5ca3c78
commit 3a152ab3d6
41 changed files with 178 additions and 239 deletions

View file

@ -77,7 +77,7 @@ public class AttackedByCreatureTriggeredAbility extends TriggeredAbilityImpl {
UUID playerId = game.getCombat().getDefendingPlayerId(event.getSourceId(), game);
Permanent attackingCreature = game.getPermanent(event.getSourceId());
if (getControllerId().equals(playerId) && attackingCreature != null) {
if (!setTargetPointer.equals(SetTargetPointer.NONE)) {
if (setTargetPointer != SetTargetPointer.NONE) {
for (Effect effect : this.getEffects()) {
switch (setTargetPointer) {
case PERMANENT:

View file

@ -46,7 +46,7 @@ public class BeginningOfCombatTriggeredAbility extends TriggeredAbilityImpl {
boolean yours = event.getPlayerId().equals(this.controllerId);
if (yours && setTargetPointer) {
if (getTargets().isEmpty()) {
this.getEffects().stream().forEach((effect) -> {
this.getEffects().forEach(effect -> {
effect.setTargetPointer(new FixedTarget(event.getPlayerId()));
});
}
@ -55,7 +55,7 @@ public class BeginningOfCombatTriggeredAbility extends TriggeredAbilityImpl {
case OPPONENT:
if (game.getPlayer(this.controllerId).hasOpponent(event.getPlayerId(), game)) {
if (setTargetPointer) {
this.getEffects().stream().forEach((effect) -> {
this.getEffects().forEach(effect -> {
effect.setTargetPointer(new FixedTarget(event.getPlayerId()));
});
}
@ -64,7 +64,7 @@ public class BeginningOfCombatTriggeredAbility extends TriggeredAbilityImpl {
break;
case ANY:
if (setTargetPointer) {
this.getEffects().stream().forEach((effect) -> {
this.getEffects().forEach(effect -> {
effect.setTargetPointer(new FixedTarget(event.getPlayerId()));
});
}

View file

@ -62,7 +62,7 @@ public class CycleAllTriggeredAbility extends TriggeredAbilityImpl {
}
StackObject item = game.getState().getStack().getFirst();
if (item instanceof StackAbility
&& ((StackAbility) item).getStackAbility() instanceof CyclingAbility) {
&& item.getStackAbility() instanceof CyclingAbility) {
return true;
}
return false;

View file

@ -76,7 +76,7 @@ public class DealsCombatDamageTriggeredAbility extends TriggeredAbilityImpl {
return true;
}
if (event.getType().equals(GameEvent.EventType.COMBAT_DAMAGE_STEP_PRE)) {
if (event.getType()== GameEvent.EventType.COMBAT_DAMAGE_STEP_PRE) {
usedInPhase = false;
}
return false;

View file

@ -13,20 +13,19 @@ import mage.game.events.GameEvent;
import mage.game.permanent.Permanent;
/**
*
* @author LevelX2
*/
public class DealsDamageAttachedTriggeredAbility extends TriggeredAbilityImpl {
public DealsDamageAttachedTriggeredAbility(Zone zone, Effect effect, boolean optional) {
super(zone, effect, optional);
}
public DealsDamageAttachedTriggeredAbility(final DealsDamageAttachedTriggeredAbility ability) {
super(ability);
}
@Override
public DealsDamageAttachedTriggeredAbility copy() {
return new DealsDamageAttachedTriggeredAbility(this);
@ -34,11 +33,11 @@ public class DealsDamageAttachedTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType().equals(GameEvent.EventType.DAMAGED_CREATURE)
|| event.getType().equals(GameEvent.EventType.DAMAGED_PLAYER)
|| event.getType().equals(GameEvent.EventType.DAMAGED_PLANESWALKER);
return event.getType() == GameEvent.EventType.DAMAGED_CREATURE
|| event.getType() == GameEvent.EventType.DAMAGED_PLAYER
|| event.getType() == GameEvent.EventType.DAMAGED_PLANESWALKER;
}
@Override
public boolean checkTrigger(GameEvent event, Game game) {
Permanent enchantment = game.getPermanent(this.getSourceId());
@ -54,7 +53,7 @@ public class DealsDamageAttachedTriggeredAbility extends TriggeredAbilityImpl {
}
return false;
}
@Override
public String getRule() {
return "Whenever enchanted creature deals damage, " + super.getRule();

View file

@ -38,7 +38,6 @@ import mage.game.permanent.Permanent;
import mage.target.targetpointer.FixedTarget;
/**
*
* @author LevelX
*/
public class DealsDamageToACreatureAttachedTriggeredAbility extends TriggeredAbilityImpl {
@ -54,15 +53,15 @@ public class DealsDamageToACreatureAttachedTriggeredAbility extends TriggeredAbi
}
public DealsDamageToACreatureAttachedTriggeredAbility(final DealsDamageToACreatureAttachedTriggeredAbility ability) {
super(ability);
this.setTargetPointer = ability.setTargetPointer;
this.combatOnly = ability.combatOnly;
this.attachedDescription = ability.attachedDescription;
super(ability);
this.setTargetPointer = ability.setTargetPointer;
this.combatOnly = ability.combatOnly;
this.attachedDescription = ability.attachedDescription;
}
@Override
public DealsDamageToACreatureAttachedTriggeredAbility copy() {
return new DealsDamageToACreatureAttachedTriggeredAbility(this);
return new DealsDamageToACreatureAttachedTriggeredAbility(this);
}
@Override
@ -74,18 +73,17 @@ public class DealsDamageToACreatureAttachedTriggeredAbility extends TriggeredAbi
public boolean checkTrigger(GameEvent event, Game game) {
if (!combatOnly || ((DamagedCreatureEvent) event).isCombatDamage()) {
Permanent attachment = game.getPermanent(this.getSourceId());
if (attachment != null
&& attachment.getAttachedTo() != null
&& event.getSourceId().equals(attachment.getAttachedTo())
) {
if (setTargetPointer) {
for (Effect effect : this.getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
effect.setValue("damage", event.getAmount());
}
}
return true;
if (attachment != null
&& attachment.getAttachedTo() != null
&& event.getSourceId().equals(attachment.getAttachedTo())) {
if (setTargetPointer) {
for (Effect effect : this.getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
effect.setValue("damage", event.getAmount());
}
}
return true;
}
}
return false;
@ -93,11 +91,11 @@ public class DealsDamageToACreatureAttachedTriggeredAbility extends TriggeredAbi
@Override
public String getRule() {
return new StringBuilder("Whenever ").append(attachedDescription)
.append(" deals ")
.append(combatOnly ? "combat ":"")
.append("damage to a creature, ")
.append(super.getRule()).toString();
return new StringBuilder("Whenever ").append(attachedDescription)
.append(" deals ")
.append(combatOnly ? "combat " : "")
.append("damage to a creature, ")
.append(super.getRule()).toString();
}
}

View file

@ -11,7 +11,6 @@ import mage.game.Game;
import mage.game.events.GameEvent;
/**
*
* @author LevelX2
*/
public class DealsDamageToOneOrMoreCreaturesTriggeredAbility extends DealsDamageToACreatureTriggeredAbility {
@ -28,7 +27,8 @@ public class DealsDamageToOneOrMoreCreaturesTriggeredAbility extends DealsDamage
public boolean checkTrigger(GameEvent event, Game game) {
if (super.checkTrigger(event, game)) {
// check that combat damage does only once trigger also if multiple creatures were damaged because they block or were blocked by source
if (game.getTurn().getStepType().equals(PhaseStep.COMBAT_DAMAGE) || game.getTurn().getStepType().equals(PhaseStep.FIRST_COMBAT_DAMAGE)) {
if (game.getTurn().getStepType() == PhaseStep.COMBAT_DAMAGE
|| game.getTurn().getStepType() == PhaseStep.FIRST_COMBAT_DAMAGE) {
String stepHash = (String) game.getState().getValue("damageStep" + getOriginalId());
String newStepHash = game.getStep().getType().toString() + game.getTurnNum();
if (stepHash == null || !newStepHash.equals(stepHash)) {

View file

@ -67,7 +67,7 @@ public class DiesCreatureTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
if (zEvent.getFromZone().equals(Zone.BATTLEFIELD) && zEvent.getToZone().equals(Zone.GRAVEYARD)) {
if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
if (filter.match(zEvent.getTarget(), sourceId, controllerId, game)) {
if (setTargetPointer) {
for (Effect effect : this.getEffects()) {

View file

@ -77,7 +77,7 @@ public class LandfallAbility extends TriggeredAbilityImpl {
&& permanent.getCardType().contains(CardType.LAND)
&& permanent.getControllerId().equals(this.controllerId)) {
triggeringLand = permanent;
if (setTargetPointer.equals(SetTargetPointer.PERMANENT)) {
if (setTargetPointer == SetTargetPointer.PERMANENT) {
for (Effect effect : getAllEffects()) {
effect.setTargetPointer(new FixedTarget(permanent, game));
}

View file

@ -87,7 +87,7 @@ public class SpellCastAllTriggeredAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
Spell spell = game.getStack().getSpell(event.getTargetId());
if (spell != null && filter.match(spell, getSourceId(), getControllerId(), game)) {
if (!setTargetPointer.equals(SetTargetPointer.NONE)) {
if (setTargetPointer != SetTargetPointer.NONE) {
for (Effect effect : this.getEffects()) {
switch (setTargetPointer) {
case SPELL:

View file

@ -38,7 +38,6 @@ import mage.game.stack.Spell;
import mage.target.targetpointer.FixedTarget;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class SpellCastOpponentTriggeredAbility extends TriggeredAbilityImpl {
@ -60,7 +59,6 @@ public class SpellCastOpponentTriggeredAbility extends TriggeredAbilityImpl {
}
/**
*
* @param zone
* @param effect
* @param filter
@ -89,8 +87,8 @@ public class SpellCastOpponentTriggeredAbility extends TriggeredAbilityImpl {
if (game.getPlayer(this.getControllerId()).hasOpponent(event.getPlayerId(), game)) {
Spell spell = game.getStack().getSpell(event.getTargetId());
if (spell != null && filter.match(spell, game)) {
if (!setTargetPointer.equals(SetTargetPointer.NONE)) {
for (Effect effect: this.getEffects()) {
if (setTargetPointer != SetTargetPointer.NONE) {
for (Effect effect : this.getEffects()) {
switch (setTargetPointer) {
case SPELL:
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
@ -101,7 +99,7 @@ public class SpellCastOpponentTriggeredAbility extends TriggeredAbilityImpl {
default:
throw new UnsupportedOperationException("Value of SetTargetPointer not supported!");
}
}
}
return true;

View file

@ -44,7 +44,7 @@ public class SpellCounteredControllerTriggeredAbility extends TriggeredAbilityIm
@Override
public boolean checkTrigger(GameEvent event, Game game) {
StackObject stackObjectThatCountered = (StackObject) game.getStack().getStackObject(event.getSourceId());
StackObject stackObjectThatCountered = game.getStack().getStackObject(event.getSourceId());
if (stackObjectThatCountered == null) {
stackObjectThatCountered = (StackObject) game.getLastKnownInformation(event.getSourceId(), Zone.STACK);
}

View file

@ -37,7 +37,6 @@ import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
/**
*
* @author LevelX2
*/
public class AtTheBeginOfMainPhaseDelayedTriggeredAbility extends DelayedTriggeredAbility {
@ -93,8 +92,8 @@ public class AtTheBeginOfMainPhaseDelayedTriggeredAbility extends DelayedTrigger
case ANY:
return true;
case YOU:
boolean yours = event.getPlayerId().equals(this.controllerId);
return yours;
return event.getPlayerId().equals(this.controllerId);
case OPPONENT:
if (game.getPlayer(this.getControllerId()).hasOpponent(event.getPlayerId(), game)) {
return true;
@ -117,11 +116,11 @@ public class AtTheBeginOfMainPhaseDelayedTriggeredAbility extends DelayedTrigger
switch (phaseSelection) {
case NEXT_MAIN:
case NEXT_MAIN_THIS_TURN:
return EventType.PRECOMBAT_MAIN_PHASE_PRE.equals(eventType) || EventType.POSTCOMBAT_MAIN_PHASE_PRE.equals(eventType);
return EventType.PRECOMBAT_MAIN_PHASE_PRE == eventType || EventType.POSTCOMBAT_MAIN_PHASE_PRE == eventType;
case NEXT_POSTCOMAT_MAIN:
return EventType.POSTCOMBAT_MAIN_PHASE_PRE.equals(eventType);
return EventType.POSTCOMBAT_MAIN_PHASE_PRE == eventType;
case NEXT_PRECOMBAT_MAIN:
return EventType.PRECOMBAT_MAIN_PHASE_PRE.equals(eventType);
return EventType.PRECOMBAT_MAIN_PHASE_PRE == eventType;
default:
return false;
}

View file

@ -73,8 +73,8 @@ public class AtTheBeginOfNextEndStepDelayedTriggeredAbility extends DelayedTrigg
case ANY:
return true;
case YOU:
boolean yours = event.getPlayerId().equals(this.controllerId);
return yours;
return event.getPlayerId().equals(this.controllerId);
case OPPONENT:
if (game.getPlayer(this.getControllerId()).hasOpponent(event.getPlayerId(), game)) {
return true;