From 76ad6691a9944acc55d4d10bc186a01d156d30e0 Mon Sep 17 00:00:00 2001 From: drdev Date: Mon, 13 Oct 2014 23:25:07 +0000 Subject: [PATCH] Fix crash from bad cast --- .../java/forge/game/cost/PaymentDecision.java | 7 ++-- .../java/forge/player/HumanCostDecision.java | 35 +++++++++---------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/forge-game/src/main/java/forge/game/cost/PaymentDecision.java b/forge-game/src/main/java/forge/game/cost/PaymentDecision.java index c2a3aa26178..49533476cc3 100644 --- a/forge-game/src/main/java/forge/game/cost/PaymentDecision.java +++ b/forge-game/src/main/java/forge/game/cost/PaymentDecision.java @@ -2,7 +2,6 @@ package forge.game.cost; import forge.game.card.Card; import forge.game.card.CardCollection; -import forge.game.card.CardCollectionView; import forge.game.card.CounterType; import forge.game.mana.Mana; import forge.game.player.Player; @@ -26,7 +25,7 @@ public class PaymentDecision { c = cnt; } - private PaymentDecision(CardCollectionView chosen, List manaProduced, List players, + private PaymentDecision(Iterable chosen, List manaProduced, List players, List sp) { if (chosen != null) { cards.addAll(chosen); @@ -61,11 +60,11 @@ public class PaymentDecision { return new PaymentDecision(c); } - public static PaymentDecision card(CardCollectionView chosen) { + public static PaymentDecision card(Iterable chosen) { return new PaymentDecision(chosen, null, null, null); } - public static PaymentDecision card(CardCollectionView chosen, int n) { + public static PaymentDecision card(Iterable chosen, int n) { PaymentDecision res = new PaymentDecision(chosen, null, null, null); res.c = n; return res; diff --git a/forge-gui/src/main/java/forge/player/HumanCostDecision.java b/forge-gui/src/main/java/forge/player/HumanCostDecision.java index 869db540c51..0b62f26b6d1 100644 --- a/forge-gui/src/main/java/forge/player/HumanCostDecision.java +++ b/forge-gui/src/main/java/forge/player/HumanCostDecision.java @@ -169,8 +169,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (inp.hasCancelled() || inp.getSelected().size() != c) { return null; } - - return PaymentDecision.card((CardCollection)inp.getSelected()); + return PaymentDecision.card(inp.getSelected()); } @Override @@ -263,7 +262,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { inp.setMessage("Exile %d card(s) from your" + cost.from); inp.setCancelAllowed(true); inp.showAndWait(); - return inp.hasCancelled() ? null : PaymentDecision.card(new CardCollection(inp.getSelected())); + return inp.hasCancelled() ? null : PaymentDecision.card(inp.getSelected()); } if (cost.from == ZoneType.Library) { return exileFromTop(cost, ability, player, c); } @@ -402,7 +401,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (typeList.size() < nNeeded) { return null; } Collections.reverse(typeList); - return PaymentDecision.card(new CardCollection(Iterables.limit(typeList, nNeeded))); + return PaymentDecision.card(Iterables.limit(typeList, nNeeded)); } @Override @@ -457,7 +456,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (inp.hasCancelled()) { return null; } - return PaymentDecision.card(new CardCollection(inp.getSelected())); + return PaymentDecision.card(inp.getSelected()); } @Override @@ -573,7 +572,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { inp.setMessage("Put %d card(s) from your " + cost.from); inp.setCancelAllowed(true); inp.showAndWait(); - return inp.hasCancelled() ? null : PaymentDecision.card(new CardCollection(inp.getSelected())); + return inp.hasCancelled() ? null : PaymentDecision.card(inp.getSelected()); } if (cost.sameZone){ @@ -657,7 +656,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (inp.hasCancelled()) return null; - return PaymentDecision.card(new CardCollection(inp.getSelected())); + return PaymentDecision.card(inp.getSelected()); } @Override @@ -691,7 +690,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (inp.hasCancelled()) { return null; } - return PaymentDecision.card(new CardCollection(inp.getSelected())); + return PaymentDecision.card(inp.getSelected()); } return null; } @@ -761,10 +760,10 @@ public class HumanCostDecision extends CostDecisionMakerBase { } inp.setCancelAllowed(true); inp.showAndWait(); - if (inp.hasCancelled()) + if (inp.hasCancelled()) { return null; - - return PaymentDecision.card(new CardCollection(inp.getSelected())); + } + return PaymentDecision.card(inp.getSelected()); } @Override @@ -936,7 +935,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { int oldVal = crd.getCounters().get(cost.counter).intValue(); crd.getCounters().put(cost.counter, Integer.valueOf(oldVal - removed + 1)); } - return PaymentDecision.card(new CardCollection(inp.getSelected()), 1); + return PaymentDecision.card(inp.getSelected(), 1); } // Rift Elemental only - always removes 1 counter, so there will be no code for N counters. @@ -997,7 +996,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (inp.hasCancelled()) return null; - return PaymentDecision.card(new CardCollection(inp.getSelected())); + return PaymentDecision.card(inp.getSelected()); } @@ -1086,9 +1085,8 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (inp.hasCancelled() || CardLists.getTotalPower(inp.getSelected()) < i) { return null; - } else { - return PaymentDecision.card(new CardCollection(inp.getSelected())); } + return PaymentDecision.card(inp.getSelected()); } InputSelectCardsFromList inp = new InputSelectCardsFromList(controller, c, c, typeList); @@ -1097,7 +1095,7 @@ public class HumanCostDecision extends CostDecisionMakerBase { if (inp.hasCancelled()) { return null; } - return PaymentDecision.card(new CardCollection(inp.getSelected())); + return PaymentDecision.card(inp.getSelected()); } @Override @@ -1122,9 +1120,10 @@ public class HumanCostDecision extends CostDecisionMakerBase { InputSelectCardsFromList inp = new InputSelectCardsFromList(controller, c, c, typeList); inp.setMessage("Select a " + cost.getDescriptiveType() + " to untap (%d left)"); inp.showAndWait(); - if (inp.hasCancelled() || inp.getSelected().size() != c) + if (inp.hasCancelled() || inp.getSelected().size() != c) { return null; - return PaymentDecision.card(new CardCollection(inp.getSelected())); + } + return PaymentDecision.card(inp.getSelected()); } @Override