GameActionUtil: add getOptionalCostValues to return OptionalCost with its Cost objects

SpellAbility: add canPlayWithOptionalCost
PlayerControllerHuman: got formated
This commit is contained in:
Hanmac
2017-06-21 04:23:30 +00:00
parent d2b1c17f4e
commit e29ec6fb83
10 changed files with 930 additions and 491 deletions

View File

@@ -6,6 +6,7 @@ import java.util.List;
import java.util.Map;
import forge.game.cost.*;
import forge.game.spellability.OptionalCostValue;
import forge.game.spellability.Spell;
import org.apache.commons.lang3.StringUtils;
@@ -33,6 +34,7 @@ import forge.game.card.CardView;
import forge.game.card.CounterType;
import forge.game.mana.ManaCostBeingPaid;
import forge.game.player.Player;
import forge.game.player.PlayerController;
import forge.game.player.PlayerView;
import forge.game.spellability.SpellAbility;
import forge.game.spellability.TargetRestrictions;
@@ -80,6 +82,11 @@ public class HumanPlay {
return false;
}
// extra play check
if (!sa.canPlay()) {
return false;
}
if (flippedToCast && !castFaceDown) {
source.turnFaceUp(false, false);
}
@@ -146,8 +153,19 @@ public class HumanPlay {
if (!original.isSpell()) {
return original;
}
final List<SpellAbility> abilities = GameActionUtil.getOptionalCosts(original);
return p.getController().getAbilityToPlay(original.getHostCard(), abilities);
PlayerController c = p.getController();
// choose alternative additional cost
final List<SpellAbility> abilities = GameActionUtil.getAdditionalCostSpell(original);
final SpellAbility choosen = c.getAbilityToPlay(original.getHostCard(), abilities);
List<OptionalCostValue> list = GameActionUtil.getOptionalCostValues(choosen);
list = c.chooseOptionalCosts(choosen, list);
return GameActionUtil.addOptionalCosts(choosen, list);
//final List<SpellAbility> abilities = GameActionUtil.getOptionalCosts(original);
}
private static boolean payManaCostIfNeeded(final PlayerControllerHuman controller, final Player p, final SpellAbility sa) {

File diff suppressed because it is too large Load Diff