Refactoring.

This commit is contained in:
marcins78
2014-07-24 14:26:11 +00:00
parent f88630db4b
commit 5730a14759
9 changed files with 64 additions and 23 deletions

View File

@@ -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<? extends Modifier> getAlwaysOnModifiers(LotroGame game, PhysicalCard self) {
public List<? extends Modifier> getAlwaysOnModifiers(final LotroGame game, PhysicalCard self) {
List<Modifier> modifiers = new LinkedList<Modifier>();
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;
}

View File

@@ -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<PhysicalCard>(game.getGameState().getHand(playerId)), false));

View File

@@ -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<RequiredTriggerAction> 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));
}

View File

@@ -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<RequiredTriggerAction> 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,

View File

@@ -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<String> 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(

View File

@@ -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,

View File

@@ -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<PhysicalCard> getRandomCards(List<? extends PhysicalCard> cards, int count) {

View File

@@ -40,4 +40,8 @@ public class PlayerOrder {
} while (currentPlayerIndex != nextIndex);
return new PlayOrder(playOrder, looped);
}
public int getPlayerCount() {
return _turnOrder.size();
}
}

View File

@@ -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]);
}
}