Improved alternative cost from dynamic effects (it's like #5913 PR):

* Game: added multiple cards/effects support (old version supported only 1 effect per game);
 * Game: added combo support with split and adventure cards;
 * AI: computer can see and play cards with dynamic added alternative cost (like Bolas's Citadel);
 * UI: users can see playable cards with alternative cost.
This commit is contained in:
Oleg Agafonov 2019-12-14 19:09:25 +04:00
parent ddedabad85
commit a05da68493
6 changed files with 164 additions and 119 deletions

View file

@ -2374,20 +2374,25 @@ public class TestPlayer implements Player {
}
@Override
public UUID getCastSourceIdWithAlternateMana() {
public Set<UUID> getCastSourceIdWithAlternateMana() {
return computerPlayer.getCastSourceIdWithAlternateMana();
}
@Override
public ManaCosts getCastSourceIdManaCosts() {
public Map<UUID, ManaCosts<ManaCost>> getCastSourceIdManaCosts() {
return computerPlayer.getCastSourceIdManaCosts();
}
@Override
public Costs<Cost> getCastSourceIdCosts() {
public Map<UUID, Costs<Cost>> getCastSourceIdCosts() {
return computerPlayer.getCastSourceIdCosts();
}
@Override
public void clearCastSourceIdManaCosts() {
computerPlayer.clearCastSourceIdManaCosts();
}
@Override
public boolean isInPayManaMode() {
return computerPlayer.isInPayManaMode();

View file

@ -19,8 +19,8 @@ import mage.counters.Counter;
import mage.counters.Counters;
import mage.designations.Designation;
import mage.designations.DesignationType;
import mage.filter.FilterPermanent;
import mage.filter.FilterMana;
import mage.filter.FilterPermanent;
import mage.game.Game;
import mage.game.Graveyard;
import mage.game.Table;
@ -1208,7 +1208,7 @@ public class PlayerStub implements Player {
}
@Override
public UUID getCastSourceIdWithAlternateMana() {
public Set<UUID> getCastSourceIdWithAlternateMana() {
return null;
}
@ -1218,15 +1218,20 @@ public class PlayerStub implements Player {
}
@Override
public ManaCosts getCastSourceIdManaCosts() {
public Map<UUID, Costs<Cost>> getCastSourceIdCosts() {
return null;
}
@Override
public Costs<Cost> getCastSourceIdCosts() {
public Map<UUID, ManaCosts<ManaCost>> getCastSourceIdManaCosts() {
return null;
}
@Override
public void clearCastSourceIdManaCosts() {
}
@Override
public void addPermissionToShowHandCards(UUID watcherUserId) {
@ -1374,19 +1379,19 @@ public class PlayerStub implements Player {
@Override
public void addPhyrexianToColors(FilterMana colors) {
}
@Override
public void removePhyrexianFromColors(FilterMana colors) {
}
@Override
public FilterMana getPhyrexianColors() {
return (new FilterMana());
}
@Override
public SpellAbility chooseAbilityForCast(Card card, Game game, boolean noMana) {
return card.getSpellAbility();