- Basic support for CountersMoveAi (e.g. The Ozolith) so at least it doesn't crash, needs improvement.

This commit is contained in:
Hans Mackowiak
2020-05-27 00:17:28 +00:00
committed by Sol
parent 955a16f1e0
commit 6fde7149a4
180 changed files with 1995 additions and 1619 deletions

View File

@@ -40,7 +40,7 @@ import com.google.common.collect.Maps;
import forge.game.GameEntityView;
import forge.game.card.CardView;
import forge.game.card.CounterType;
import forge.game.card.CounterEnumType;
import forge.game.player.PlayerView;
import forge.gui.SOverlayUtils;
import forge.toolbox.FButton;
@@ -433,7 +433,7 @@ public class VAssignCombatDamage {
if (card == null) {
if (defender instanceof PlayerView) {
final PlayerView p = (PlayerView)defender;
lethalDamage = attackerHasInfect ? matchUI.getGameView().getPoisonCountersToLose() - p.getCounters(CounterType.POISON) : p.getLife();
lethalDamage = attackerHasInfect ? matchUI.getGameView().getPoisonCountersToLose() - p.getCounters(CounterEnumType.POISON) : p.getLife();
}
else if (defender instanceof CardView) { // planeswalker
final CardView pw = (CardView)defender;

View File

@@ -29,7 +29,7 @@ import javax.swing.border.LineBorder;
import net.miginfocom.swing.MigLayout;
import forge.assets.FSkinProp;
import forge.game.card.CounterType;
import forge.game.card.CounterEnumType;
import forge.game.player.PlayerView;
import forge.game.zone.ZoneType;
import forge.gui.framework.DragCell;
@@ -285,9 +285,9 @@ public class VField implements IVDoc<CField> {
}
// Update poison and/or energy counters, poison counters take precedence
final int poison = player.getCounters(CounterType.POISON);
final int energy = player.getCounters(CounterType.ENERGY);
final int experience = player.getCounters(CounterType.EXPERIENCE);
final int poison = player.getCounters(CounterEnumType.POISON);
final int energy = player.getCounters(CounterEnumType.ENERGY);
final int experience = player.getCounters(CounterEnumType.EXPERIENCE);
if (poison > 0) {
removeLblEnergy();

View File

@@ -8,7 +8,7 @@ import forge.game.Game;
import forge.game.ability.ApiType;
import forge.game.card.Card;
import forge.game.card.CardCollection;
import forge.game.card.CounterType;
import forge.game.card.CounterEnumType;
import forge.game.keyword.Keyword;
import forge.game.phase.PhaseType;
import forge.game.player.Player;
@@ -217,7 +217,7 @@ public class GameSimulatorTest extends SimulationTestCase {
Game game = initAndCreateGame();
Player p = game.getPlayers().get(1);
Card sorin = addCard("Sorin, Solemn Visitor", p);
sorin.addCounter(CounterType.LOYALTY, 5, p, false, null);
sorin.addCounter(CounterEnumType.LOYALTY, 5, p, false, null);
game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p);
game.getAction().checkStateEffects(true);
@@ -261,7 +261,7 @@ public class GameSimulatorTest extends SimulationTestCase {
String bearCardName = "Runeclaw Bear";
addCard(bearCardName, p);
Card gideon = addCard("Gideon, Ally of Zendikar", p);
gideon.addCounter(CounterType.LOYALTY, 4, p, false, null);
gideon.addCounter(CounterEnumType.LOYALTY, 4, p, false, null);
game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p);
game.getAction().checkStateEffects(true);
@@ -380,7 +380,7 @@ public class GameSimulatorTest extends SimulationTestCase {
Game game = initAndCreateGame();
Player p = game.getPlayers().get(1);
Card sarkhan = addCard(sarkhanCardName, p);
sarkhan.addCounter(CounterType.LOYALTY, 4, p, false, null);
sarkhan.addCounter(CounterEnumType.LOYALTY, 4, p, false, null);
game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p);
game.getAction().checkStateEffects(true);
@@ -414,7 +414,7 @@ public class GameSimulatorTest extends SimulationTestCase {
addCard(ornithoperCardName, p);
addCard(bearCardName, p);
Card ajani = addCard(ajaniCardName, p);
ajani.addCounter(CounterType.LOYALTY, 4, p, false, null);
ajani.addCounter(CounterEnumType.LOYALTY, 4, p, false, null);
game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p);
game.getAction().checkStateEffects(true);
@@ -429,7 +429,7 @@ public class GameSimulatorTest extends SimulationTestCase {
Game simGame = sim.getSimulatedGameState();
Card thopterSim = findCardWithName(simGame, ornithoperCardName);
Card bearSim = findCardWithName(simGame, bearCardName);
assertEquals(3, thopterSim.getCounters(CounterType.P1P1) + bearSim.getCounters(CounterType.P1P1));
assertEquals(3, thopterSim.getCounters(CounterEnumType.P1P1) + bearSim.getCounters(CounterEnumType.P1P1));
}
}
@@ -445,7 +445,7 @@ public class GameSimulatorTest extends SimulationTestCase {
SpellAbility boltSA = boltCard.getFirstSpellAbility();
Card ajani = addCard(ajaniCardName, p);
ajani.addCounter(CounterType.LOYALTY, 8, p, false, null);
ajani.addCounter(CounterEnumType.LOYALTY, 8, p, false, null);
game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p);
game.getAction().checkStateEffects(true);
@@ -465,7 +465,7 @@ public class GameSimulatorTest extends SimulationTestCase {
// only triggered once
assertTrue(simSelfless.hasCounters());
assertEquals(2, simSelfless.getCounters(CounterType.P1P1));
assertEquals(2, simSelfless.getCounters(CounterEnumType.P1P1));
assertEquals(2, simSelfless.getToughnessBonusFromCounters());
assertEquals(2, simSelfless.getPowerBonusFromCounters());
}
@@ -494,7 +494,7 @@ public class GameSimulatorTest extends SimulationTestCase {
addCard("Swamp", p);
addCard("Swamp", p);
Card depths = addCard("Dark Depths", p);
depths.addCounter(CounterType.ICE, 10, p, false, null);
depths.addCounter(CounterEnumType.ICE, 10, p, false, null);
Card thespian = addCard("Thespian's Stage", p);
game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p);
game.getAction().checkStateEffects(true);
@@ -693,7 +693,7 @@ public class GameSimulatorTest extends SimulationTestCase {
// only triggered once
assertTrue(simPridemate.hasCounters());
assertEquals(1, simPridemate.getCounters(CounterType.P1P1));
assertEquals(1, simPridemate.getCounters(CounterEnumType.P1P1));
assertEquals(1, simPridemate.getToughnessBonusFromCounters());
assertEquals(1, simPridemate.getPowerBonusFromCounters());
@@ -749,7 +749,7 @@ public class GameSimulatorTest extends SimulationTestCase {
// only triggered once
assertTrue(simPridemate.hasCounters());
assertEquals(1, simPridemate.getCounters(CounterType.P1P1));
assertEquals(1, simPridemate.getCounters(CounterEnumType.P1P1));
assertEquals(1, simPridemate.getToughnessBonusFromCounters());
assertEquals(1, simPridemate.getPowerBonusFromCounters());
@@ -813,7 +813,7 @@ public class GameSimulatorTest extends SimulationTestCase {
// only triggered once
assertTrue(simPridemate.hasCounters());
assertEquals(1, simPridemate.getCounters(CounterType.P1P1));
assertEquals(1, simPridemate.getCounters(CounterEnumType.P1P1));
assertEquals(1, simPridemate.getToughnessBonusFromCounters());
assertEquals(1, simPridemate.getPowerBonusFromCounters());
@@ -873,7 +873,7 @@ public class GameSimulatorTest extends SimulationTestCase {
// lifegain
assertNotNull(simPridemate);
assertTrue(simPridemate.hasCounters());
assertEquals(1, simPridemate.getCounters(CounterType.P1P1));
assertEquals(1, simPridemate.getCounters(CounterEnumType.P1P1));
assertEquals(1, simPridemate.getToughnessBonusFromCounters());
assertEquals(1, simPridemate.getPowerBonusFromCounters());
@@ -901,21 +901,21 @@ public class GameSimulatorTest extends SimulationTestCase {
// no Lifegain because of Everlasting Torment
assertNotNull(simPridemate2);
assertFalse(simPridemate2.hasCounters());
assertEquals(0, simPridemate2.getCounters(CounterType.P1P1));
assertEquals(0, simPridemate2.getCounters(CounterEnumType.P1P1));
assertEquals(0, simPridemate2.getToughnessBonusFromCounters());
assertEquals(0, simPridemate2.getPowerBonusFromCounters());
assertNotNull(simBear2);
assertEquals(0, simBear2.getDamage());
assertTrue(simBear2.hasCounters());
assertEquals(1, simBear2.getCounters(CounterType.M1M1));
assertEquals(1, simBear2.getCounters(CounterEnumType.M1M1));
assertEquals(-1, simBear2.getToughnessBonusFromCounters());
assertEquals(-1, simBear2.getPowerBonusFromCounters());
assertNotNull(simGiant2);
assertEquals(0, simGiant2.getDamage());
assertTrue(simGiant2.hasCounters());
assertEquals(2, simGiant2.getCounters(CounterType.M1M1));
assertEquals(2, simGiant2.getCounters(CounterEnumType.M1M1));
assertEquals(-2, simGiant2.getToughnessBonusFromCounters());
assertEquals(-2, simGiant2.getPowerBonusFromCounters());
@@ -937,21 +937,21 @@ public class GameSimulatorTest extends SimulationTestCase {
// no Lifegain because of Everlasting Torment
assertNotNull(simPridemate3);
assertFalse(simPridemate3.hasCounters());
assertEquals(0, simPridemate3.getCounters(CounterType.P1P1));
assertEquals(0, simPridemate3.getCounters(CounterEnumType.P1P1));
assertEquals(0, simPridemate3.getToughnessBonusFromCounters());
assertEquals(0, simPridemate3.getPowerBonusFromCounters());
assertNotNull(simBear3);
assertEquals(0, simBear3.getDamage());
assertFalse(simBear3.hasCounters());
assertEquals(0, simBear3.getCounters(CounterType.M1M1));
assertEquals(0, simBear3.getCounters(CounterEnumType.M1M1));
assertEquals(0, simBear3.getToughnessBonusFromCounters());
assertEquals(0, simBear3.getPowerBonusFromCounters());
assertNotNull(simGiant3);
assertEquals(0, simGiant3.getDamage());
assertFalse(simGiant3.hasCounters());
assertEquals(0, simGiant3.getCounters(CounterType.M1M1));
assertEquals(0, simGiant3.getCounters(CounterEnumType.M1M1));
assertEquals(0, simGiant3.getToughnessBonusFromCounters());
assertEquals(0, simGiant3.getPowerBonusFromCounters());
@@ -1005,19 +1005,19 @@ public class GameSimulatorTest extends SimulationTestCase {
game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p);
game.getAction().checkStateEffects(true);
assertEquals(0, p.getCounters(CounterType.ENERGY));
assertEquals(0, p.getCounters(CounterEnumType.ENERGY));
SpellAbility playTurtle = turtleCard.getSpellAbilities().get(0);
GameSimulator sim = createSimulator(game, p);
sim.simulateSpellAbility(playTurtle);
Game simGame = sim.getSimulatedGameState();
Player simP = simGame.getPlayers().get(1);
assertEquals(2, simP.getCounters(CounterType.ENERGY));
assertEquals(2, simP.getCounters(CounterEnumType.ENERGY));
GameCopier copier = new GameCopier(simGame);
Game copy = copier.makeCopy();
Player copyP = copy.getPlayers().get(1);
assertEquals(2, copyP.getCounters(CounterType.ENERGY));
assertEquals(2, copyP.getCounters(CounterEnumType.ENERGY));
}
public void testFloatingMana() {
@@ -1118,7 +1118,7 @@ public class GameSimulatorTest extends SimulationTestCase {
// only triggered once
assertTrue(simPridemate.hasCounters());
assertEquals(1, simPridemate.getCounters(CounterType.P1P1));
assertEquals(1, simPridemate.getCounters(CounterEnumType.P1P1));
assertEquals(1, simPridemate.getToughnessBonusFromCounters());
assertEquals(1, simPridemate.getPowerBonusFromCounters());
@@ -1182,7 +1182,7 @@ public class GameSimulatorTest extends SimulationTestCase {
// only triggered once
assertTrue(simPridemate.hasCounters());
assertEquals(1, simPridemate.getCounters(CounterType.P1P1));
assertEquals(1, simPridemate.getCounters(CounterEnumType.P1P1));
assertEquals(1, simPridemate.getToughnessBonusFromCounters());
assertEquals(1, simPridemate.getPowerBonusFromCounters());
@@ -1251,7 +1251,7 @@ public class GameSimulatorTest extends SimulationTestCase {
// only triggered twice
assertTrue(simPridemate.hasCounters());
assertEquals(2, simPridemate.getCounters(CounterType.P1P1));
assertEquals(2, simPridemate.getCounters(CounterEnumType.P1P1));
assertEquals(2, simPridemate.getToughnessBonusFromCounters());
assertEquals(2, simPridemate.getPowerBonusFromCounters());
@@ -1530,7 +1530,7 @@ public class GameSimulatorTest extends SimulationTestCase {
Card simGoblin = findCardWithName(simGame, goblinName);
assertNotNull(simGoblin);
int effects = simGoblin.getCounters(CounterType.P1P1) + simGoblin.getKeywordMagnitude(Keyword.HASTE);
int effects = simGoblin.getCounters(CounterEnumType.P1P1) + simGoblin.getKeywordMagnitude(Keyword.HASTE);
assertEquals(2, effects);
}
@@ -1851,8 +1851,8 @@ public class GameSimulatorTest extends SimulationTestCase {
assertNotNull(simSpark);
assertTrue(simSpark.isInZone(ZoneType.Battlefield));
assertEquals(1, simSpark.getCounters(CounterType.P1P1));
assertEquals(5, simSpark.getCounters(CounterType.LOYALTY));
assertEquals(1, simSpark.getCounters(CounterEnumType.P1P1));
assertEquals(5, simSpark.getCounters(CounterEnumType.LOYALTY));
}
public void testVituGhaziAndCytoshape() {
@@ -1884,7 +1884,7 @@ public class GameSimulatorTest extends SimulationTestCase {
assertNotNull(awakened);
assertEquals("Vitu-Ghazi", awakened.getName());
assertEquals(9, awakened.getCounters(CounterType.P1P1));
assertEquals(9, awakened.getCounters(CounterEnumType.P1P1));
assertTrue(awakened.hasKeyword(Keyword.HASTE));
assertTrue(awakened.getType().hasSubtype("Goblin"));
}
@@ -1932,7 +1932,7 @@ public class GameSimulatorTest extends SimulationTestCase {
Card epoOTB = findCardWithName(sim.getSimulatedGameState(), "Epochrasite");
assertNotNull(epoOTB);
assertEquals(3, epoOTB.getCounters(CounterType.P1P1));
assertEquals(3, epoOTB.getCounters(CounterEnumType.P1P1));
}
@SuppressWarnings("unused")

View File

@@ -4,7 +4,7 @@ import java.util.List;
import forge.game.Game;
import forge.game.card.Card;
import forge.game.card.CounterType;
import forge.game.card.CounterEnumType;
import forge.game.combat.Combat;
import forge.game.phase.PhaseType;
import forge.game.player.Player;
@@ -219,12 +219,12 @@ public class SpellAbilityPickerTest extends SimulationTestCase {
addCardToZone("Urborg, Tomb of Yawgmoth", p, ZoneType.Library);
addCardToZone("Swamp", p, ZoneType.Library);
darkDepths.setCounters(CounterType.ICE, 10);
darkDepths.setCounters(CounterEnumType.ICE, 10);
game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p);
game.getAction().checkStateEffects(true);
assertEquals(10, darkDepths.getCounters(CounterType.ICE));
assertEquals(10, darkDepths.getCounters(CounterEnumType.ICE));
SpellAbilityPicker picker = new SpellAbilityPicker(game, p);
SpellAbility sa = picker.chooseSpellAbilityToPlay(null);
assertEquals(cropRotation.getSpellAbilities().get(0), sa);

View File

@@ -156,12 +156,12 @@ public class PlayerControllerForTests extends PlayerController {
}
@Override
public CardCollectionView chooseCardsForEffect(CardCollectionView sourceList, SpellAbility sa, String title, int min, int max, boolean isOptional) {
public CardCollectionView chooseCardsForEffect(CardCollectionView sourceList, SpellAbility sa, String title, int min, int max, boolean isOptional, Map<String, Object> params) {
return chooseItems(sourceList, max);
}
@Override
public <T extends GameEntity> T chooseSingleEntityForEffect(FCollectionView<T> optionList, DelayedReveal delayedReveal, SpellAbility sa, String title, boolean isOptional, Player targetedPlayer) {
public <T extends GameEntity> T chooseSingleEntityForEffect(FCollectionView<T> optionList, DelayedReveal delayedReveal, SpellAbility sa, String title, boolean isOptional, Player targetedPlayer, Map<String, Object> params) {
if (delayedReveal != null) {
reveal(delayedReveal.getCards(), delayedReveal.getZone(), delayedReveal.getOwner(), delayedReveal.getMessagePrefix());
}
@@ -175,7 +175,7 @@ public class PlayerControllerForTests extends PlayerController {
}
@Override
public <T extends GameEntity> List<T> chooseEntitiesForEffect(FCollectionView<T> optionList, int min, int max, DelayedReveal delayedReveal, SpellAbility sa, String title, Player relatedPlayer) {
public <T extends GameEntity> List<T> chooseEntitiesForEffect(FCollectionView<T> optionList, int min, int max, DelayedReveal delayedReveal, SpellAbility sa, String title, Player relatedPlayer, Map<String, Object> params) {
// this isn't used
return null;
}
@@ -497,7 +497,7 @@ public class PlayerControllerForTests extends PlayerController {
@Override
public CounterType chooseCounterType(List<CounterType> options, SpellAbility sa, String prompt, Map<String, Object> params) {
return Iterables.getFirst(options, CounterType.P1P1);
return Iterables.getFirst(options, CounterType.get(CounterEnumType.P1P1));
}
@Override
@@ -702,4 +702,11 @@ public class PlayerControllerForTests extends PlayerController {
// TODO Auto-generated method stub
return new CardCollection();
}
@Override
public List<SpellAbility> chooseSpellAbilitiesForEffect(List<SpellAbility> spells, SpellAbility sa, String title,
int num, Map<String, Object> params) {
// TODO Auto-generated method stub
return null;
}
}