Revealing cards in a popup window

This commit is contained in:
marcin.sciesinski
2019-08-15 18:50:03 -07:00
parent dbff9e7c59
commit 3396b7f82b
4 changed files with 72 additions and 3 deletions

View File

@@ -3,8 +3,12 @@ package com.gempukku.lotro.logic.effects;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.GameUtils;
import com.gempukku.lotro.logic.PlayOrder;
import com.gempukku.lotro.logic.decisions.ArbitraryCardsSelectionDecision;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import com.gempukku.lotro.logic.timing.AbstractEffect;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -39,8 +43,22 @@ public abstract class RevealBottomCardsOfDrawDeckEffect extends AbstractEffect {
List<? extends PhysicalCard> deck = game.getGameState().getDeck(_playerId);
int count = Math.min(deck.size(), _count);
LinkedList<PhysicalCard> bottomCards = new LinkedList<PhysicalCard>(deck.subList(deck.size() - count, deck.size()));
if (bottomCards.size() > 0)
if (bottomCards.size() > 0) {
final PlayOrder playerOrder = game.getGameState().getPlayerOrder().getCounterClockwisePlayOrder(_source.getOwner(), false);
String nextPlayer;
while ((nextPlayer = playerOrder.getNextPlayer()) != null) {
game.getUserFeedback().sendAwaitingDecision(nextPlayer,
new ArbitraryCardsSelectionDecision(1, _playerId+" revealed card(s) from bottom of deck", bottomCards, Collections.<PhysicalCard>emptySet(), 0, 0) {
@Override
public void decisionMade(String result) throws DecisionResultInvalidException {
}
});
}
game.getGameState().sendMessage(GameUtils.getCardLink(_source) + " revealed cards from bottom of " + _playerId + " deck - " + getAppendedNames(bottomCards));
}
cardsRevealed(bottomCards);
return new FullEffectResult(bottomCards.size() == _count);
}

View File

@@ -3,6 +3,10 @@ package com.gempukku.lotro.logic.effects;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.GameUtils;
import com.gempukku.lotro.logic.PlayOrder;
import com.gempukku.lotro.logic.PlayerOrder;
import com.gempukku.lotro.logic.decisions.ArbitraryCardsSelectionDecision;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import com.gempukku.lotro.logic.timing.AbstractSuccessfulEffect;
import com.gempukku.lotro.logic.timing.Effect;
@@ -34,7 +38,20 @@ public class RevealCardEffect extends AbstractSuccessfulEffect {
@Override
public void playEffect(LotroGame game) {
if (_cards.size() > 0)
if (_cards.size() > 0) {
final PlayOrder playerOrder = game.getGameState().getPlayerOrder().getCounterClockwisePlayOrder(_source.getOwner(), false);
String nextPlayer;
while ((nextPlayer = playerOrder.getNextPlayer()) != null) {
game.getUserFeedback().sendAwaitingDecision(nextPlayer,
new ArbitraryCardsSelectionDecision(1, "Revealed card(s)", _cards, Collections.<PhysicalCard>emptySet(), 0, 0) {
@Override
public void decisionMade(String result) throws DecisionResultInvalidException {
}
});
}
game.getGameState().sendMessage(GameUtils.getCardLink(_source) + " revealed cards - " + getAppendedNames(_cards));
}
}
}

View File

@@ -3,10 +3,14 @@ package com.gempukku.lotro.logic.effects;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.GameUtils;
import com.gempukku.lotro.logic.PlayOrder;
import com.gempukku.lotro.logic.decisions.ArbitraryCardsSelectionDecision;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import com.gempukku.lotro.logic.timing.AbstractEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.results.RevealCardFromHandResult;
import java.util.Collections;
import java.util.List;
public abstract class RevealRandomCardsFromHandEffect extends AbstractEffect {
@@ -36,8 +40,22 @@ public abstract class RevealRandomCardsFromHandEffect extends AbstractEffect {
protected FullEffectResult playEffectReturningResult(LotroGame game) {
if (_actingPlayer.equals(_playerHand) || game.getModifiersQuerying().canLookOrRevealCardsInHand(game, _playerHand, _actingPlayer)) {
List<PhysicalCard> randomCards = GameUtils.getRandomCards(game.getGameState().getHand(_playerHand), _count);
if (randomCards.size() > 0)
if (randomCards.size() > 0) {
final PlayOrder playerOrder = game.getGameState().getPlayerOrder().getCounterClockwisePlayOrder(_source.getOwner(), false);
String nextPlayer;
while ((nextPlayer = playerOrder.getNextPlayer()) != null) {
game.getUserFeedback().sendAwaitingDecision(nextPlayer,
new ArbitraryCardsSelectionDecision(1, _playerHand+" revealed card(s) from hand at random", randomCards, Collections.<PhysicalCard>emptySet(), 0, 0) {
@Override
public void decisionMade(String result) throws DecisionResultInvalidException {
}
});
}
game.getGameState().sendMessage(GameUtils.getCardLink(_source) + " revealed cards from " + _playerHand + " hand at random - " + getAppendedNames(randomCards));
}
cardsRevealed(randomCards);
for (PhysicalCard randomCard : randomCards)
game.getActionsEnvironment().emitEffectResult(new RevealCardFromHandResult(_source, _playerHand, randomCard));

View File

@@ -3,10 +3,14 @@ package com.gempukku.lotro.logic.effects;
import com.gempukku.lotro.game.PhysicalCard;
import com.gempukku.lotro.game.state.LotroGame;
import com.gempukku.lotro.logic.GameUtils;
import com.gempukku.lotro.logic.PlayOrder;
import com.gempukku.lotro.logic.decisions.ArbitraryCardsSelectionDecision;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import com.gempukku.lotro.logic.timing.AbstractEffect;
import com.gempukku.lotro.logic.timing.Effect;
import com.gempukku.lotro.logic.timing.results.RevealCardFromTopOfDeckResult;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
@@ -42,6 +46,18 @@ public abstract class RevealTopCardsOfDrawDeckEffect extends AbstractEffect {
int count = Math.min(deck.size(), _count);
LinkedList<PhysicalCard> topCards = new LinkedList<PhysicalCard>(deck.subList(0, count));
if (topCards.size() > 0) {
final PlayOrder playerOrder = game.getGameState().getPlayerOrder().getCounterClockwisePlayOrder(_source.getOwner(), false);
String nextPlayer;
while ((nextPlayer = playerOrder.getNextPlayer()) != null) {
game.getUserFeedback().sendAwaitingDecision(nextPlayer,
new ArbitraryCardsSelectionDecision(1, _playerId+" revealed card(s) from hand top of deck", topCards, Collections.<PhysicalCard>emptySet(), 0, 0) {
@Override
public void decisionMade(String result) throws DecisionResultInvalidException {
}
});
}
game.getGameState().sendMessage(GameUtils.getCardLink(_source) + " revealed cards from top of " + _playerId + " deck - " + getAppendedNames(topCards));
game.getActionsEnvironment().emitEffectResult(
new RevealCardFromTopOfDeckResult(_playerId, topCards));