From 0c171a68a68d9f5803ee86d581f3682c26fabcda Mon Sep 17 00:00:00 2001 From: marcins78 Date: Wed, 24 Oct 2012 09:16:32 +0000 Subject: [PATCH] - Finally fixed the Harrowdale (fingers crossed), added test to simulate different movement patterns. --- .../actions/DefaultActionsEnvironment.java | 4 + .../lotro/logic/modifiers/ModifiersLogic.java | 13 ++- .../gempukku/lotro/at/HarrowdaleAtTest.java | 102 ++++++++++++++++++ 3 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/HarrowdaleAtTest.java diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/actions/DefaultActionsEnvironment.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/actions/DefaultActionsEnvironment.java index 516ebba6a..3089cb8ca 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/actions/DefaultActionsEnvironment.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/game/state/actions/DefaultActionsEnvironment.java @@ -91,6 +91,10 @@ public class DefaultActionsEnvironment implements ActionsEnvironment { ); } + public List getUntilStartOfPhaseActionProxies(Phase phase) { + return _untilStartOfPhaseActionProxies.get(phase); + } + @Override public void emitEffectResult(EffectResult effectResult) { _effectResults.add(effectResult); diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java index 5ce60c7c2..8ae9f7a98 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/ModifiersLogic.java @@ -32,7 +32,7 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { @Override public LimitCounter getUntilStartOfPhaseLimitCounter(PhysicalCard card, Phase phase) { - return getUntilEndOfPhaseLimitCounter(card, "", phase); + return getUntilStartOfPhaseLimitCounter(card, "", phase); } @Override @@ -177,7 +177,18 @@ public class ModifiersLogic implements ModifiersEnvironment, ModifiersQuerying { public void removeEndOfTurn() { removeModifiers(_untilEndOfTurnModifiers); _untilEndOfTurnModifiers.clear(); + + for (List modifiers : _untilStartOfPhaseModifiers.values()) + removeModifiers(modifiers); + _untilStartOfPhaseModifiers.clear(); + + for (List modifiers : _untilEndOfPhaseModifiers.values()) + removeModifiers(modifiers); + _untilEndOfPhaseModifiers.clear(); + _turnLimitCounters.clear(); + _startOfPhaseLimitCounters.clear(); + _endOfPhaseLimitCounters.clear(); } @Override diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/HarrowdaleAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/HarrowdaleAtTest.java new file mode 100644 index 000000000..6fb3f1d4e --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/HarrowdaleAtTest.java @@ -0,0 +1,102 @@ +package com.gempukku.lotro.at; + +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.common.Zone; +import com.gempukku.lotro.game.PhysicalCardImpl; +import com.gempukku.lotro.game.state.actions.DefaultActionsEnvironment; +import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; +import org.junit.Test; + +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNull; + +public class HarrowdaleAtTest extends AbstractAtTest { + @Test + public void movesFromHarrowdale() throws DecisionResultInvalidException { + Map> extraCards = new HashMap>(); + initializeSimplestGame(extraCards); + + PhysicalCardImpl harrowdale = new PhysicalCardImpl(100, "11_243", P1, _library.getLotroCardBlueprint("11_243")); + harrowdale.setSiteNumber(1); + _game.getGameState().removeCardsFromZone(P1, Collections.singleton(_game.getGameState().getSite(1))); + _game.getGameState().addCardToZone(_game, harrowdale, Zone.ADVENTURE_PATH); + + skipMulligans(); + + // Fellowship phase + assertEquals(Phase.FELLOWSHIP, _game.getGameState().getCurrentPhase()); + assertEquals(1, ((DefaultActionsEnvironment) _game.getActionsEnvironment()).getUntilStartOfPhaseActionProxies(Phase.REGROUP).size()); + playerDecided(P1, ""); + + // Move first time (from Harrowdale) + + // Shadow phase + assertEquals(1, ((DefaultActionsEnvironment) _game.getActionsEnvironment()).getUntilStartOfPhaseActionProxies(Phase.REGROUP).size()); + playerDecided(P2, ""); + + // End regroup phase + assertEquals(Phase.REGROUP, _game.getGameState().getCurrentPhase()); + playerDecided(P1, ""); + playerDecided(P2, ""); + + // Move again + playerDecided(P1, "0"); + + // Shadow phase + assertEquals(Phase.SHADOW, _game.getGameState().getCurrentPhase()); + assertEquals(0, ((DefaultActionsEnvironment) _game.getActionsEnvironment()).getUntilStartOfPhaseActionProxies(Phase.REGROUP).size()); + playerDecided(P2, ""); + + // End regroup phase + assertEquals(Phase.REGROUP, _game.getGameState().getCurrentPhase()); + playerDecided(P1, ""); + playerDecided(P2, ""); + } + + @Test + public void movesThroughHarrowdale() throws DecisionResultInvalidException { + Map> extraCards = new HashMap>(); + initializeSimplestGame(extraCards); + + PhysicalCardImpl harrowdale = new PhysicalCardImpl(100, "11_243", P1, _library.getLotroCardBlueprint("11_243")); + harrowdale.setSiteNumber(2); + _game.getGameState().addCardToZone(_game, harrowdale, Zone.ADVENTURE_PATH); + + skipMulligans(); + + // Fellowship phase + assertEquals(Phase.FELLOWSHIP, _game.getGameState().getCurrentPhase()); + assertNull(((DefaultActionsEnvironment) _game.getActionsEnvironment()).getUntilStartOfPhaseActionProxies(Phase.REGROUP)); + playerDecided(P1, ""); + + // Move first time (to Harrowdale) + + // Shadow phase + assertEquals(1, ((DefaultActionsEnvironment) _game.getActionsEnvironment()).getUntilStartOfPhaseActionProxies(Phase.REGROUP).size()); + playerDecided(P2, ""); + + // End regroup phase + assertEquals(Phase.REGROUP, _game.getGameState().getCurrentPhase()); + playerDecided(P1, ""); + playerDecided(P2, ""); + + // Move again (from Harrowdale in regroup) + playerDecided(P1, "0"); + + // Shadow phase + assertEquals(Phase.SHADOW, _game.getGameState().getCurrentPhase()); + assertEquals(0, ((DefaultActionsEnvironment) _game.getActionsEnvironment()).getUntilStartOfPhaseActionProxies(Phase.REGROUP).size()); + playerDecided(P2, ""); + + // End regroup phase + assertEquals(Phase.REGROUP, _game.getGameState().getCurrentPhase()); + assertEquals(0, ((DefaultActionsEnvironment) _game.getActionsEnvironment()).getUntilStartOfPhaseActionProxies(Phase.REGROUP).size()); + playerDecided(P1, ""); + playerDecided(P2, ""); + } +} \ No newline at end of file