mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
Update HumanCostDecision.java
This commit is contained in:
@@ -34,6 +34,7 @@ import forge.game.zone.ZoneType;
|
|||||||
import forge.gamemodes.match.input.InputConfirm;
|
import forge.gamemodes.match.input.InputConfirm;
|
||||||
import forge.gamemodes.match.input.InputSelectCardsFromList;
|
import forge.gamemodes.match.input.InputSelectCardsFromList;
|
||||||
import forge.gamemodes.match.input.InputSelectManyBase;
|
import forge.gamemodes.match.input.InputSelectManyBase;
|
||||||
|
import forge.gui.GuiBase;
|
||||||
import forge.gui.util.SGuiChoose;
|
import forge.gui.util.SGuiChoose;
|
||||||
import forge.util.Aggregates;
|
import forge.util.Aggregates;
|
||||||
import forge.util.CardTranslation;
|
import forge.util.CardTranslation;
|
||||||
@@ -86,7 +87,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (discardType.equals("Hand")) {
|
if (discardType.equals("Hand")) {
|
||||||
if (!mandatory && !confirmAction(Localizer.getInstance().getMessage("lblDoYouWantDiscardYourHand"))) {
|
if (!mandatory && !confirmAction(cost, Localizer.getInstance().getMessage("lblDoYouWantDiscardYourHand"))) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (hand.size() > 1 && ability.getActivatingPlayer() != null) {
|
if (hand.size() > 1 && ability.getActivatingPlayer() != null) {
|
||||||
@@ -178,7 +179,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
public PaymentDecision visit(final CostDamage cost) {
|
public PaymentDecision visit(final CostDamage cost) {
|
||||||
int c = cost.getAbilityAmount(ability);
|
int c = cost.getAbilityAmount(ability);
|
||||||
|
|
||||||
if (confirmAction(Localizer.getInstance().getMessage("lblDoYouWantCardDealNDamageToYou", CardTranslation.getTranslatedName(source.getName()), String.valueOf(c)))) {
|
if (confirmAction(cost, Localizer.getInstance().getMessage("lblDoYouWantCardDealNDamageToYou", CardTranslation.getTranslatedName(source.getName()), String.valueOf(c)))) {
|
||||||
return PaymentDecision.number(c);
|
return PaymentDecision.number(c);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@@ -205,7 +206,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
message = Localizer.getInstance().getMessage("lblDrawNCardsConfirm", String.valueOf(c));
|
message = Localizer.getInstance().getMessage("lblDrawNCardsConfirm", String.valueOf(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!confirmAction(message)) {
|
if (!confirmAction(cost, message)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -240,7 +241,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cost.payCostFromSource()) {
|
if (cost.payCostFromSource()) {
|
||||||
return source.getZone() == player.getZone(cost.from) && confirmAction(Localizer.getInstance().getMessage("lblExileConfirm", CardTranslation.getTranslatedName(source.getName()))) ? PaymentDecision.card(source) : null;
|
return source.getZone() == player.getZone(cost.from) && confirmAction(cost, Localizer.getInstance().getMessage("lblExileConfirm", CardTranslation.getTranslatedName(source.getName()))) ? PaymentDecision.card(source) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type.equals("All")) {
|
if (type.equals("All")) {
|
||||||
@@ -369,7 +370,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
private PaymentDecision exileFromTop(final CostExile cost, final SpellAbility sa, final Player player, final int nNeeded) {
|
private PaymentDecision exileFromTop(final CostExile cost, final SpellAbility sa, final Player player, final int nNeeded) {
|
||||||
final CardCollectionView list = player.getCardsIn(ZoneType.Library, nNeeded);
|
final CardCollectionView list = player.getCardsIn(ZoneType.Library, nNeeded);
|
||||||
|
|
||||||
if (list.size() > nNeeded || !confirmAction(Localizer.getInstance().getMessage("lblExileNCardFromYourTopLibraryConfirm"))) {
|
if (list.size() > nNeeded || !confirmAction(cost, Localizer.getInstance().getMessage("lblExileNCardFromYourTopLibraryConfirm"))) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return PaymentDecision.card(list);
|
return PaymentDecision.card(list);
|
||||||
@@ -435,7 +436,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
|
|
||||||
if (cost.payCostFromSource()) {
|
if (cost.payCostFromSource()) {
|
||||||
if (source.getController() == ability.getActivatingPlayer() && source.isInPlay()) {
|
if (source.getController() == ability.getActivatingPlayer() && source.isInPlay()) {
|
||||||
return confirmAction(Localizer.getInstance().getMessage("lblExertCardConfirm", CardTranslation.getTranslatedName(source.getName()))) ? PaymentDecision.card(source) : null;
|
return confirmAction(cost, Localizer.getInstance().getMessage("lblExertCardConfirm", CardTranslation.getTranslatedName(source.getName()))) ? PaymentDecision.card(source) : null;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -463,7 +464,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
public PaymentDecision visit(final CostFlipCoin cost) {
|
public PaymentDecision visit(final CostFlipCoin cost) {
|
||||||
Integer c = cost.getAbilityAmount(ability);
|
Integer c = cost.getAbilityAmount(ability);
|
||||||
|
|
||||||
if (!confirmAction(Localizer.getInstance().getMessage("lblDoYouWantFlipNCoinAction", String.valueOf(c)))) {
|
if (!confirmAction(cost, Localizer.getInstance().getMessage("lblDoYouWantFlipNCoinAction", String.valueOf(c)))) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -474,7 +475,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
public PaymentDecision visit(final CostRollDice cost) {
|
public PaymentDecision visit(final CostRollDice cost) {
|
||||||
int c = cost.getAbilityAmount(ability);
|
int c = cost.getAbilityAmount(ability);
|
||||||
|
|
||||||
if (!confirmAction(Localizer.getInstance().getMessage("lblDoYouWantRollNDiceAction", String.valueOf(c), "d" + cost.getType()))) {
|
if (!confirmAction(cost, Localizer.getInstance().getMessage("lblDoYouWantRollNDiceAction", String.valueOf(c), "d" + cost.getType()))) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -532,7 +533,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
message = Localizer.getInstance().getMessage("lblMillNCardsFromYourLibraryConfirm", String.valueOf(c));
|
message = Localizer.getInstance().getMessage("lblMillNCardsFromYourLibraryConfirm", String.valueOf(c));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!confirmAction(message)) {
|
if (!confirmAction(cost, message)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return PaymentDecision.number(c);
|
return PaymentDecision.number(c);
|
||||||
@@ -554,7 +555,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// for costs declared mandatory, this is only reachable with a valid amount
|
// for costs declared mandatory, this is only reachable with a valid amount
|
||||||
if (player.canPayLife(c, isEffect(), ability) && confirmAction(message)) {
|
if (player.canPayLife(c, isEffect(), ability) && confirmAction(cost, message)) {
|
||||||
//force mandatory if paylife is paid.. todo add check if all can be paid
|
//force mandatory if paylife is paid.. todo add check if all can be paid
|
||||||
mandatory = true;
|
mandatory = true;
|
||||||
return PaymentDecision.number(c);
|
return PaymentDecision.number(c);
|
||||||
@@ -567,7 +568,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
Integer c = cost.getAbilityAmount(ability);
|
Integer c = cost.getAbilityAmount(ability);
|
||||||
|
|
||||||
if (player.canPayEnergy(c) &&
|
if (player.canPayEnergy(c) &&
|
||||||
confirmAction(Localizer.getInstance().getMessage("lblPayEnergyConfirm", cost.toString(), String.valueOf(player.getCounters(CounterEnumType.ENERGY)), "{E}"))) {
|
confirmAction(cost, Localizer.getInstance().getMessage("lblPayEnergyConfirm", cost.toString(), String.valueOf(player.getCounters(CounterEnumType.ENERGY)), "{E}"))) {
|
||||||
return PaymentDecision.number(c);
|
return PaymentDecision.number(c);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@@ -587,7 +588,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
player.getCardsIn(cost.getFrom()), cost.getType().split(";"), player, source, ability);
|
player.getCardsIn(cost.getFrom()), cost.getType().split(";"), player, source, ability);
|
||||||
|
|
||||||
if (cost.payCostFromSource()) {
|
if (cost.payCostFromSource()) {
|
||||||
return source.getZone() == player.getZone(cost.from) && confirmAction(Localizer.getInstance().getMessage("lblPutCardToLibraryConfirm", CardTranslation.getTranslatedName(source.getName()))) ? PaymentDecision.card(source) : null;
|
return source.getZone() == player.getZone(cost.from) && confirmAction(cost, Localizer.getInstance().getMessage("lblPutCardToLibraryConfirm", CardTranslation.getTranslatedName(source.getName()))) ? PaymentDecision.card(source) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cost.from == ZoneType.Hand) {
|
if (cost.from == ZoneType.Hand) {
|
||||||
@@ -667,7 +668,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
|
|
||||||
if (cost.payCostFromSource()) {
|
if (cost.payCostFromSource()) {
|
||||||
// UnlessCost so player might not want to pay (Fabricate)
|
// UnlessCost so player might not want to pay (Fabricate)
|
||||||
if (ability.hasParam("UnlessCost") && !confirmAction(Localizer.getInstance().getMessage("lblPutNTypeCounterOnTarget", String.valueOf(c), cost.getCounter().getName(), ability.getHostCard().getName()))) {
|
if (ability.hasParam("UnlessCost") && !confirmAction(cost, Localizer.getInstance().getMessage("lblPutNTypeCounterOnTarget", String.valueOf(c), cost.getCounter().getName(), ability.getHostCard().getName()))) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
cost.setLastPaidAmount(c);
|
cost.setLastPaidAmount(c);
|
||||||
@@ -697,7 +698,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
final Card card = ability.getHostCard();
|
final Card card = ability.getHostCard();
|
||||||
if (card.getController() == player && card.isInPlay()) {
|
if (card.getController() == player && card.isInPlay()) {
|
||||||
final CardView view = CardView.get(card);
|
final CardView view = CardView.get(card);
|
||||||
return confirmAction(Localizer.getInstance().getMessage("lblReturnCardToHandConfirm", CardTranslation.getTranslatedName(view.getName()))) ? PaymentDecision.card(card) : null;
|
return confirmAction(cost, Localizer.getInstance().getMessage("lblReturnCardToHandConfirm", CardTranslation.getTranslatedName(view.getName()))) ? PaymentDecision.card(card) : null;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
final CardCollectionView validCards = CardLists.getValidCards(ability.getActivatingPlayer().getCardsIn(ZoneType.Battlefield),
|
final CardCollectionView validCards = CardLists.getValidCards(ability.getActivatingPlayer().getCardsIn(ZoneType.Battlefield),
|
||||||
@@ -937,7 +938,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
if (maxCounters < cntRemoved) {
|
if (maxCounters < cntRemoved) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (!confirmAction(Localizer.getInstance().getMessage("lblRemoveNTargetCounterFromCardPayCostConfirm", amount, cost.counter.getName().toLowerCase(), CardTranslation.getTranslatedName(source.getName())))) {
|
if (!confirmAction(cost, Localizer.getInstance().getMessage("lblRemoveNTargetCounterFromCardPayCostConfirm", amount, cost.counter.getName().toLowerCase(), CardTranslation.getTranslatedName(source.getName())))) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -993,7 +994,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
|
|
||||||
if (cost.payCostFromSource()) {
|
if (cost.payCostFromSource()) {
|
||||||
if (source.getController() == ability.getActivatingPlayer() && source.isInPlay()) {
|
if (source.getController() == ability.getActivatingPlayer() && source.isInPlay()) {
|
||||||
return mandatory || confirmAction(Localizer.getInstance().getMessage("lblSacrificeCardConfirm", CardTranslation.getTranslatedName(source.getName()))) ? PaymentDecision.card(source) : null;
|
return mandatory || confirmAction(cost, Localizer.getInstance().getMessage("lblSacrificeCardConfirm", CardTranslation.getTranslatedName(source.getName()))) ? PaymentDecision.card(source) : null;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -1001,7 +1002,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
if (type.equals("OriginalHost")) {
|
if (type.equals("OriginalHost")) {
|
||||||
Card host = ability.getOriginalHost();
|
Card host = ability.getOriginalHost();
|
||||||
if (host.getController() == ability.getActivatingPlayer() && host.isInPlay()) {
|
if (host.getController() == ability.getActivatingPlayer() && host.isInPlay()) {
|
||||||
return confirmAction(Localizer.getInstance().getMessage("lblSacrificeCardConfirm", CardTranslation.getTranslatedName(host.getName()))) ? PaymentDecision.card(host) : null;
|
return confirmAction(cost, Localizer.getInstance().getMessage("lblSacrificeCardConfirm", CardTranslation.getTranslatedName(host.getName()))) ? PaymentDecision.card(host) : null;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -1156,7 +1157,7 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
@Override
|
@Override
|
||||||
public PaymentDecision visit(final CostUnattach cost) {
|
public PaymentDecision visit(final CostUnattach cost) {
|
||||||
final Card cardToUnattach = cost.findCardToUnattach(source, player, ability);
|
final Card cardToUnattach = cost.findCardToUnattach(source, player, ability);
|
||||||
if (cardToUnattach != null && confirmAction(Localizer.getInstance().getMessage("lblUnattachCardConfirm", CardTranslation.getTranslatedName(cardToUnattach.getName())))) {
|
if (cardToUnattach != null && confirmAction(cost, Localizer.getInstance().getMessage("lblUnattachCardConfirm", CardTranslation.getTranslatedName(cardToUnattach.getName())))) {
|
||||||
return PaymentDecision.card(cardToUnattach);
|
return PaymentDecision.card(cardToUnattach);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@@ -1166,13 +1167,17 @@ public class HumanCostDecision extends CostDecisionMakerBase {
|
|||||||
public boolean paysRightAfterDecision() {
|
public boolean paysRightAfterDecision() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
private boolean confirmAction(String message) {
|
private boolean confirmAction(CostPart costPart, String message) {
|
||||||
CardView cardView = ability.getCardView();
|
CardView cardView = ability.getCardView();
|
||||||
//for cards like Sword-Point Diplomacy and others that uses imprinted as container for their ability
|
if (GuiBase.getInterface().isLibgdxPort()) {
|
||||||
if (cardView != null && cardView.getImprintedCards() != null && cardView.getImprintedCards().size() == 1)
|
//for cards like Sword-Point Diplomacy and others that uses imprinted as container for their ability
|
||||||
cardView = CardView.getCardForUi(ImageUtil.getPaperCardFromImageKey(cardView.getImprintedCards().get(0).getCurrentState().getImageKey()));
|
if (cardView != null && cardView.getImprintedCards() != null && cardView.getImprintedCards().size() == 1)
|
||||||
else if (ability.getTargets() != null && ability.getTargets().isTargetingAnyCard() && ability.getTargets().size() == 1)
|
cardView = CardView.getCardForUi(ImageUtil.getPaperCardFromImageKey(cardView.getImprintedCards().get(0).getCurrentState().getImageKey()));
|
||||||
cardView = CardView.get(ability.getTargetCard());
|
else if (ability.getTargets() != null && ability.getTargets().isTargetingAnyCard() && ability.getTargets().size() == 1)
|
||||||
return controller.getGui().confirm(cardView, message.replaceAll("\n", " "));
|
cardView = CardView.get(ability.getTargetCard());
|
||||||
|
return controller.getGui().confirm(cardView, message.replaceAll("\n", " "));
|
||||||
|
} else {
|
||||||
|
return controller.confirmPayment(costPart, message, ability);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user