From f0be9c35d75db2b2f449eac81a5096b3283983bb Mon Sep 17 00:00:00 2001 From: magenoxx Date: Sat, 7 Apr 2012 11:52:31 +0400 Subject: [PATCH] Moved skipping initial shuffling to game options. --- .../src/mage/game/TwoPlayerDuel.java | 4 ++-- .../test/cards/conditional/MulDayaChannelersTest.java | 4 ++++ .../mage/test/serverside/base/CardTestPlayerBase.java | 11 +++++++++-- Mage/src/mage/game/GameImpl.java | 10 +++++----- Mage/src/mage/game/GameOptions.java | 6 +++++- 5 files changed, 25 insertions(+), 10 deletions(-) diff --git a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/src/mage/game/TwoPlayerDuel.java b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/src/mage/game/TwoPlayerDuel.java index 1e2d0b1412a..9e4490d42a5 100644 --- a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/src/mage/game/TwoPlayerDuel.java +++ b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/src/mage/game/TwoPlayerDuel.java @@ -63,8 +63,8 @@ public class TwoPlayerDuel extends GameImpl { } @Override - protected void init(UUID choosingPlayerId, boolean testMode) { - super.init(choosingPlayerId, testMode); + protected void init(UUID choosingPlayerId, GameOptions gameOptions) { + super.init(choosingPlayerId, gameOptions); state.getTurnMods().add(new TurnMod(startingPlayerId, PhaseStep.DRAW)); } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/conditional/MulDayaChannelersTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/conditional/MulDayaChannelersTest.java index 96c850ef3ec..a193fb032ac 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/conditional/MulDayaChannelersTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/conditional/MulDayaChannelersTest.java @@ -19,7 +19,9 @@ public class MulDayaChannelersTest extends CardTestPlayerBase { public void testBoostFromTopCreatureCard() { addCard(Constants.Zone.BATTLEFIELD, playerA, "Forest", 3); addCard(Constants.Zone.HAND, playerA, "Mul Daya Channelers"); + addCard(Constants.Zone.LIBRARY, playerA, "Memnite"); + skipInitShuffling(); castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Mul Daya Channelers"); @@ -53,8 +55,10 @@ public class MulDayaChannelersTest extends CardTestPlayerBase { public void testBoostLossThroughPhases() { addCard(Constants.Zone.BATTLEFIELD, playerA, "Forest", 3); addCard(Constants.Zone.HAND, playerA, "Mul Daya Channelers"); + addCard(Constants.Zone.LIBRARY, playerA, "Shock"); addCard(Constants.Zone.LIBRARY, playerA, "Memnite"); + skipInitShuffling(); castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Mul Daya Channelers"); diff --git a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java index 3dab993c95a..b8369f08816 100644 --- a/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java +++ b/Mage.Tests/src/test/java/org/mage/test/serverside/base/CardTestPlayerBase.java @@ -33,7 +33,9 @@ public abstract class CardTestPlayerBase extends CardTestPlayerAPIImpl { BATTLEFIELD, GRAVEYARD, UNKNOWN - } + } + + protected GameOptions gameOptions; public CardTestPlayerBase() { } @@ -86,6 +88,8 @@ public abstract class CardTestPlayerBase extends CardTestPlayerAPIImpl { libraryCardsB.clear(); commandsA.clear(); commandsB.clear(); + + gameOptions = new GameOptions(); } public void load(String path) throws FileNotFoundException, GameException { @@ -149,7 +153,7 @@ public abstract class CardTestPlayerBase extends CardTestPlayerAPIImpl { boolean testMode = true; long t1 = System.nanoTime(); - GameOptions gameOptions = new GameOptions(); + gameOptions.testMode = true; gameOptions.stopOnTurn = stopOnTurn; gameOptions.stopAtStep = stopAtStep; @@ -311,4 +315,7 @@ public abstract class CardTestPlayerBase extends CardTestPlayerAPIImpl { } } + protected void skipInitShuffling() { + gameOptions.skipInitShuffling = true; + } } diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 7ccc29b1122..ed2199534bc 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -382,7 +382,7 @@ public abstract class GameImpl> implements Game, Serializa startTime = new Date(); this.gameOptions = options; scorePlayer = state.getPlayers().values().iterator().next(); - init(choosingPlayerId, options.testMode); + init(choosingPlayerId, options); play(startingPlayerId); saveState(); } @@ -441,7 +441,7 @@ public abstract class GameImpl> implements Game, Serializa return false; } - protected void init(UUID choosingPlayerId, boolean testMode) { + protected void init(UUID choosingPlayerId, GameOptions gameOptions) { for (Player player: state.getPlayers().values()) { player.beginTurn(this); } @@ -449,7 +449,7 @@ public abstract class GameImpl> implements Game, Serializa saveState(); //20091005 - 103.1 - if (!testMode) { //don't shuffle in test mode for card injection on top of player's libraries + if (!gameOptions.skipInitShuffling) { //don't shuffle in test mode for card injection on top of player's libraries for (Player player: state.getPlayers().values()) { player.shuffleLibrary(this); } @@ -479,10 +479,10 @@ public abstract class GameImpl> implements Game, Serializa //20091005 - 103.3 for (UUID playerId: state.getPlayerList(startingPlayerId)) { Player player = getPlayer(playerId); - if (!testMode || player.getLife() == 0) { + if (!gameOptions.testMode || player.getLife() == 0) { player.setLife(this.getLife(), this); } - if (!testMode) { + if (!gameOptions.testMode) { player.drawCards(7, this); } } diff --git a/Mage/src/mage/game/GameOptions.java b/Mage/src/mage/game/GameOptions.java index 968a8efbbf4..919cca10e6f 100644 --- a/Mage/src/mage/game/GameOptions.java +++ b/Mage/src/mage/game/GameOptions.java @@ -32,5 +32,9 @@ public class GameOptions implements Serializable { * Stop at the end of the turn if true otherwise stop at the beginning */ public PhaseStep stopAtStep = PhaseStep.UNTAP; - + + /** + * If true, library won't be shuffled at the beginning of the game + */ + public boolean skipInitShuffling = false; }