From b0991e3a6a50f639e08604d8a10f727b17e750ac Mon Sep 17 00:00:00 2001 From: Artjoms Porss Date: Thu, 22 Feb 2024 17:16:47 +0000 Subject: [PATCH] Refactor StaticAbilityCantPhaseIn and StaticAbilityCantPhaseOut into StaticAbilityCantPhase (#4727) --- .../src/main/java/forge/game/card/Card.java | 4 +- .../src/main/java/forge/game/phase/Untap.java | 4 +- .../staticability/StaticAbilityCantPhase.java | 39 +++++++++++++++++++ .../StaticAbilityCantPhaseIn.java | 32 --------------- .../StaticAbilityCantPhaseOut.java | 32 --------------- 5 files changed, 43 insertions(+), 68 deletions(-) create mode 100644 forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPhase.java delete mode 100644 forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPhaseIn.java delete mode 100644 forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPhaseOut.java diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index 3c4f1e3fcf1..7caa7e60b05 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -5467,11 +5467,11 @@ public class Card extends GameEntity implements Comparable, IHasSVars { } private boolean switchPhaseState(final boolean fromUntapStep) { - if (isPhasedOut() && StaticAbilityCantPhaseIn.cantPhaseIn(this)) { + if (isPhasedOut() && StaticAbilityCantPhase.cantPhaseIn(this)) { return false; } - if (!isPhasedOut() && StaticAbilityCantPhaseOut.cantPhaseOut(this)) { + if (!isPhasedOut() && StaticAbilityCantPhase.cantPhaseOut(this)) { return false; } diff --git a/forge-game/src/main/java/forge/game/phase/Untap.java b/forge-game/src/main/java/forge/game/phase/Untap.java index d45e6ccd8ef..a5f158a90f3 100644 --- a/forge-game/src/main/java/forge/game/phase/Untap.java +++ b/forge-game/src/main/java/forge/game/phase/Untap.java @@ -44,7 +44,7 @@ import forge.game.keyword.KeywordInterface; import forge.game.player.Player; import forge.game.player.PlayerController.BinaryChoiceType; import forge.game.spellability.SpellAbility; -import forge.game.staticability.StaticAbilityCantPhaseOut; +import forge.game.staticability.StaticAbilityCantPhase; import forge.game.trigger.TriggerType; import forge.game.zone.ZoneType; @@ -290,7 +290,7 @@ public class Untap extends Phase { // and indirectly, it just phases out indirectly. if (c.isAttachment()) { final Card ent = c.getAttachedTo(); - if (ent != null && list.contains(ent) && !StaticAbilityCantPhaseOut.cantPhaseOut(ent)) { + if (ent != null && list.contains(ent) && !StaticAbilityCantPhase.cantPhaseOut(ent)) { continue; } } diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPhase.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPhase.java new file mode 100644 index 00000000000..8a482bf32a7 --- /dev/null +++ b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPhase.java @@ -0,0 +1,39 @@ +package forge.game.staticability; + +import forge.game.Game; +import forge.game.card.Card; +import forge.game.zone.ZoneType; + +public class StaticAbilityCantPhase { + + static String MODE_CANT_PHASE_IN = "CantPhaseIn"; + static String MODE_CANT_PHASE_OUT = "CantPhaseOut"; + + static public boolean cantPhaseIn(Card card) { + return cantPhase(card, MODE_CANT_PHASE_IN); + } + + static public boolean cantPhaseOut(Card card) { + return cantPhase(card, MODE_CANT_PHASE_OUT); + } + + static private boolean cantPhase(Card card, String mode) { + final Game game = card.getGame(); + for (final Card ca : game.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES)) { + for (final StaticAbility stAb : ca.getStaticAbilities()) { + if (!stAb.checkConditions(mode)) { + continue; + } + if (applyCantPhase(stAb, card)) { + return true; + } + } + } + return false; + } + + static private boolean applyCantPhase(StaticAbility stAb, Card card) { + return stAb.matchesValidParam("ValidCard", card); + } +} + diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPhaseIn.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPhaseIn.java deleted file mode 100644 index 4139a8b8707..00000000000 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPhaseIn.java +++ /dev/null @@ -1,32 +0,0 @@ -package forge.game.staticability; - -import forge.game.Game; -import forge.game.card.Card; -import forge.game.zone.ZoneType; - -public class StaticAbilityCantPhaseIn { - - static String MODE = "CantPhaseIn"; - - static public boolean cantPhaseIn(Card card) { - final Game game = card.getGame(); - for (final Card ca : game.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES)) { - for (final StaticAbility stAb : ca.getStaticAbilities()) { - if (!stAb.checkConditions(MODE)) { - continue; - } - if (applyCantPhaseIn(stAb, card)) { - return true; - } - } - } - return false; - } - - static public boolean applyCantPhaseIn(StaticAbility stAb, Card card) { - if (!stAb.matchesValidParam("ValidCard", card)) { - return false; - } - return true; - } -} diff --git a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPhaseOut.java b/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPhaseOut.java deleted file mode 100644 index f51c6ba7350..00000000000 --- a/forge-game/src/main/java/forge/game/staticability/StaticAbilityCantPhaseOut.java +++ /dev/null @@ -1,32 +0,0 @@ -package forge.game.staticability; - -import forge.game.Game; -import forge.game.card.Card; -import forge.game.zone.ZoneType; - -public class StaticAbilityCantPhaseOut { - - static String MODE = "CantPhaseOut"; - - static public boolean cantPhaseOut(Card card) { - final Game game = card.getGame(); - for (final Card ca : game.getCardsIn(ZoneType.STATIC_ABILITIES_SOURCE_ZONES)) { - for (final StaticAbility stAb : ca.getStaticAbilities()) { - if (!stAb.checkConditions(MODE)) { - continue; - } - if (applyCantPhaseOut(stAb, card)) { - return true; - } - } - } - return false; - } - - static public boolean applyCantPhaseOut(StaticAbility stAb, Card card) { - if (!stAb.matchesValidParam("ValidCard", card)) { - return false; - } - return true; - } -}