From 3b54fd2fcee5035e97b0eb35ed95a5f42dc6d4c5 Mon Sep 17 00:00:00 2001 From: Myrd Date: Tue, 3 Mar 2015 00:50:52 +0000 Subject: [PATCH] Fix copying game objects with chosen things (for simulation AI). --- .../java/forge/ai/simulation/GameCopier.java | 12 +++++++++++- .../forge/ai/simulation/GameSimulatorTest.java | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java index 4c6d3635ffb..4317568760a 100644 --- a/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java +++ b/forge-ai/src/main/java/forge/ai/simulation/GameCopier.java @@ -5,6 +5,7 @@ import java.util.Map.Entry; import com.google.common.collect.BiMap; import com.google.common.collect.HashBiMap; +import com.google.common.collect.Lists; import forge.LobbyPlayer; import forge.ai.LobbyPlayerAi; @@ -254,10 +255,19 @@ public class GameCopier { newCard.addCounter(CounterType.valueOf(str), count, false); } } - // TODO: Other chosen things... if (c.getChosenPlayer() != null) { newCard.setChosenPlayer(playerMap.get(c.getChosenPlayer())); } + if (!c.getChosenType().isEmpty()) { + newCard.setChosenType(c.getChosenType()); + } + if (c.getChosenColors() != null) { + newCard.setChosenColors(Lists.newArrayList(c.getChosenColors())); + } + if (!c.getNamedCard().isEmpty()) { + newCard.setNamedCard(c.getNamedCard()); + } + // TODO: FIXME if (c.hasRemembered()) { for (Object o : c.getRemembered()) { diff --git a/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java b/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java index e585d436302..592b835cec8 100644 --- a/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java +++ b/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java @@ -467,4 +467,22 @@ public class GameSimulatorTest extends TestCase { assertEquals(3, thopterSim.getCounters(CounterType.P1P1) + bearSim.getCounters(CounterType.P1P1)); } } + + public void testChosenColors() { + String bearCardName = "Runeclaw Bear"; + + Game game = initAndCreateGame(); + Player p = game.getPlayers().get(1); + Card bear = addCard(bearCardName, p); + Card hall = addCard("Hall of Triumph", p); + hall.setChosenColors(Lists.newArrayList("green")); + game.getPhaseHandler().devModeSet(PhaseType.MAIN2, p); + game.getAction().checkStateEffects(true); + assertEquals(3, bear.getNetToughness()); + + GameCopier copier = new GameCopier(game); + Game copy = copier.makeCopy(); + Card bearCopy = findCardWithName(copy, bearCardName); + assertEquals(3, bearCopy.getNetToughness()); + } }