From 5730a14759ad6d787b437ed11614038de30a482b Mon Sep 17 00:00:00 2001 From: marcins78 Date: Thu, 24 Jul 2014 14:26:11 +0000 Subject: [PATCH] Refactoring. --- .../lotro/cards/set13/gollum/Card13_050.java | 13 ++++++++---- .../lotro/cards/set15/gandalf/Card15_031.java | 9 +++++++-- .../lotro/cards/set18/site/Card18_134.java | 6 ++---- .../lotro/cards/set18/site/Card18_137.java | 6 ++---- .../lotro/cards/set4/isengard/Card4_166.java | 10 ++++++---- .../lotro/cards/set7/site/Card7_331.java | 6 ++---- .../com/gempukku/lotro/logic/GameUtils.java | 13 +++++++++++- .../com/gempukku/lotro/logic/PlayerOrder.java | 4 ++++ .../gempukku/lotro/at/PlayerListAtTest.java | 20 +++++++++++++++++++ 9 files changed, 64 insertions(+), 23 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/PlayerListAtTest.java diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set13/gollum/Card13_050.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set13/gollum/Card13_050.java index bae9ac49c..d3023bebb 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set13/gollum/Card13_050.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set13/gollum/Card13_050.java @@ -11,8 +11,13 @@ import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.GameState; import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.actions.ActivateCardAction; -import com.gempukku.lotro.logic.modifiers.*; +import com.gempukku.lotro.logic.modifiers.Condition; +import com.gempukku.lotro.logic.modifiers.KeywordModifier; +import com.gempukku.lotro.logic.modifiers.Modifier; +import com.gempukku.lotro.logic.modifiers.ModifiersQuerying; +import com.gempukku.lotro.logic.modifiers.StrengthModifier; import com.gempukku.lotro.logic.timing.Action; import java.util.Collections; @@ -37,14 +42,14 @@ public class Card13_050 extends AbstractMinion { } @Override - public List getAlwaysOnModifiers(LotroGame game, PhysicalCard self) { + public List getAlwaysOnModifiers(final LotroGame game, PhysicalCard self) { List modifiers = new LinkedList(); modifiers.add( new StrengthModifier(self, self, new Condition() { @Override public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { - for (String somePlayerId : gameState.getPlayerOrder().getAllPlayers()) { + for (String somePlayerId : GameUtils.getAllPlayers(game)) { if (Filters.filter(gameState.getRemoved(somePlayerId), gameState, modifiersQuerying, Filters.name("Deagol")).size() > 0) return true; } @@ -57,7 +62,7 @@ public class Card13_050 extends AbstractMinion { new Condition() { @Override public boolean isFullfilled(GameState gameState, ModifiersQuerying modifiersQuerying) { - for (String somePlayerId : gameState.getPlayerOrder().getAllPlayers()) { + for (String somePlayerId : GameUtils.getAllPlayers(game)) { if (Filters.filter(gameState.getRemoved(somePlayerId), gameState, modifiersQuerying, Filters.name("Deagol")).size() > 0) return true; } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_031.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_031.java index f074e55b3..25c009f62 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_031.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set15/gandalf/Card15_031.java @@ -4,9 +4,14 @@ import com.gempukku.lotro.cards.AbstractPermanent; import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.TriggerConditions; import com.gempukku.lotro.cards.effects.SelfDiscardEffect; -import com.gempukku.lotro.common.*; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.common.Zone; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; +import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.effects.DiscardCardsFromHandEffect; import com.gempukku.lotro.logic.effects.DrawCardsEffect; @@ -44,7 +49,7 @@ public class Card15_031 extends AbstractPermanent { RequiredTriggerAction action = new RequiredTriggerAction(self); action.appendCost( new SelfDiscardEffect(self)); - for (String playerId : game.getGameState().getPlayerOrder().getAllPlayers()) { + for (String playerId : GameUtils.getAllPlayers(game)) { int handSize = game.getGameState().getHand(playerId).size(); action.appendEffect( new DiscardCardsFromHandEffect(self, playerId, new HashSet(game.getGameState().getHand(playerId)), false)); diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/site/Card18_134.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/site/Card18_134.java index ef46ce135..a22331d12 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/site/Card18_134.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/site/Card18_134.java @@ -6,7 +6,7 @@ import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.PlayOrder; +import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.effects.ChooseAndWoundCharactersEffect; import com.gempukku.lotro.logic.timing.EffectResult; @@ -30,9 +30,7 @@ public class Card18_134 extends AbstractNewSite { public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { if (TriggerConditions.movesTo(game, effectResult, self)) { RequiredTriggerAction action = new RequiredTriggerAction(self); - final PlayOrder counterClockwisePlayOrder = game.getGameState().getPlayerOrder().getCounterClockwisePlayOrder(game.getGameState().getCurrentPlayerId(), false); - String playerId; - while ((playerId = counterClockwisePlayOrder.getNextPlayer()) != null) { + for (String playerId : GameUtils.getAllPlayers(game)) { action.appendEffect( new ChooseAndWoundCharactersEffect(action, playerId, 2, 2, Filters.owner(playerId), Filters.character)); } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/site/Card18_137.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/site/Card18_137.java index 37148a378..28215b65f 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/site/Card18_137.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set18/site/Card18_137.java @@ -7,7 +7,7 @@ import com.gempukku.lotro.cards.effects.ReinforceTokenEffect; import com.gempukku.lotro.common.Keyword; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.PlayOrder; +import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.actions.RequiredTriggerAction; import com.gempukku.lotro.logic.timing.EffectResult; @@ -31,9 +31,7 @@ public class Card18_137 extends AbstractNewSite { public List getRequiredAfterTriggers(LotroGame game, EffectResult effectResult, PhysicalCard self) { if (TriggerConditions.movesTo(game, effectResult, self)) { RequiredTriggerAction action = new RequiredTriggerAction(self); - final PlayOrder counterClockwisePlayOrder = game.getGameState().getPlayerOrder().getCounterClockwisePlayOrder(game.getGameState().getCurrentPlayerId(), false); - String playerId; - while ((playerId = counterClockwisePlayOrder.getNextPlayer()) != null) { + for (String playerId : GameUtils.getAllPlayers(game)) { action.appendEffect( new OptionalEffect( action, playerId, diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_166.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_166.java index 75ccb1918..8ad9af7d9 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_166.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set4/isengard/Card4_166.java @@ -5,7 +5,11 @@ import com.gempukku.lotro.cards.PlayConditions; import com.gempukku.lotro.cards.effects.PutCardFromDeckOnBottomOfDeckEffect; import com.gempukku.lotro.cards.effects.RemoveTwilightEffect; import com.gempukku.lotro.cards.effects.RevealTopCardsOfDrawDeckEffect; -import com.gempukku.lotro.common.*; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Phase; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.common.Zone; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; import com.gempukku.lotro.logic.GameUtils; @@ -44,11 +48,9 @@ public class Card4_166 extends AbstractPermanent { final ActivateCardAction action = new ActivateCardAction(self); action.appendCost( new RemoveTwilightEffect(2)); - final List allPlayers = game.getGameState().getPlayerOrder().getAllPlayers(); - final String[] players = allPlayers.toArray(new String[allPlayers.size()]); action.appendEffect( new PlayoutDecisionEffect(playerId, - new MultipleChoiceAwaitingDecision(1, "Choose player to reveal top card", players) { + new MultipleChoiceAwaitingDecision(1, "Choose player to reveal top card", GameUtils.getAllPlayers(game)) { @Override protected void validDecisionMade(int index, String deckId) { action.insertEffect( diff --git a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/site/Card7_331.java b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/site/Card7_331.java index 79622684e..90ce27f2e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/site/Card7_331.java +++ b/gemp-lotr/gemp-lotr-cards/src/main/java/com/gempukku/lotro/cards/set7/site/Card7_331.java @@ -7,7 +7,7 @@ import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.filters.Filters; import com.gempukku.lotro.game.PhysicalCard; import com.gempukku.lotro.game.state.LotroGame; -import com.gempukku.lotro.logic.PlayOrder; +import com.gempukku.lotro.logic.GameUtils; import com.gempukku.lotro.logic.actions.ActivateCardAction; import com.gempukku.lotro.logic.decisions.MultipleChoiceAwaitingDecision; import com.gempukku.lotro.logic.effects.AddTwilightEffect; @@ -36,9 +36,7 @@ public class Card7_331 extends AbstractSite { final ActivateCardAction action = new ActivateCardAction(self); action.appendEffect( new AddTwilightEffect(self, 2)); - PlayOrder drawOrder = game.getGameState().getPlayerOrder().getCounterClockwisePlayOrder(game.getGameState().getCurrentPlayerId(), false); - String nextPlayerId; - while ((nextPlayerId = drawOrder.getNextPlayer()) != null) { + for (String nextPlayerId : GameUtils.getAllPlayers(game)) { final String drawingPlayerId = nextPlayerId; action.appendEffect( new PlayoutDecisionEffect(drawingPlayerId, diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/GameUtils.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/GameUtils.java index 2277c207d..78494ccb7 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/GameUtils.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/GameUtils.java @@ -72,7 +72,18 @@ public class GameUtils { } public static String[] getAllPlayers(LotroGame game) { - return game.getGameState().getPlayerOrder().getAllPlayers().toArray(new String[0]); + final GameState gameState = game.getGameState(); + final PlayerOrder playerOrder = gameState.getPlayerOrder(); + String[] result = new String[playerOrder.getPlayerCount()]; + + final PlayOrder counterClockwisePlayOrder = playerOrder.getCounterClockwisePlayOrder(gameState.getCurrentPlayerId(), false); + int index=0; + + String nextPlayer; + while ((nextPlayer = counterClockwisePlayOrder.getNextPlayer()) != null) { + result[index++] = nextPlayer; + } + return result; } public static List getRandomCards(List cards, int count) { diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/PlayerOrder.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/PlayerOrder.java index 6b926074b..2c6a0ecdb 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/PlayerOrder.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/PlayerOrder.java @@ -40,4 +40,8 @@ public class PlayerOrder { } while (currentPlayerIndex != nextIndex); return new PlayOrder(playOrder, looped); } + + public int getPlayerCount() { + return _turnOrder.size(); + } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/PlayerListAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/PlayerListAtTest.java new file mode 100644 index 000000000..55eeb6f15 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/PlayerListAtTest.java @@ -0,0 +1,20 @@ +package com.gempukku.lotro.at; + +import com.gempukku.lotro.logic.GameUtils; +import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class PlayerListAtTest extends AbstractAtTest { + @Test + public void testAllPlayers() throws DecisionResultInvalidException { + initializeSimplestGame(); + skipMulligans(); + + final String[] allPlayers = GameUtils.getAllPlayers(_game); + assertEquals(2, allPlayers.length); + assertEquals(P1, allPlayers[0]); + assertEquals(P2, allPlayers[1]); + } +}