- When a game is restarted, set lands played back to 0.

This commit is contained in:
Sol
2012-11-17 03:20:38 +00:00
parent ccbc699c11
commit 9172c6ea35

View File

@@ -25,12 +25,15 @@ import forge.card.trigger.TriggerType;
import forge.control.input.InputControl; import forge.control.input.InputControl;
import forge.control.input.InputMulligan; import forge.control.input.InputMulligan;
import forge.deck.Deck; import forge.deck.Deck;
import forge.deck.DeckSection;
import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.PlayerZone; import forge.game.zone.PlayerZone;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.gui.GuiChoose;
import forge.gui.GuiUtils;
import forge.gui.match.views.VAntes; import forge.gui.match.views.VAntes;
import forge.item.CardPrinted; import forge.item.CardPrinted;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
@@ -43,10 +46,7 @@ import forge.util.MyRandom;
* All of these methods can and should be static. * All of these methods can and should be static.
*/ */
public class GameNew { public class GameNew {
private static void prepareSingleLibrary(final Player player, final Deck deck, final Map<Player, List<String>> removedAnteCards, final List<String> rAICards, boolean canRandomFoil) { private static void prepareFirstGameLibrary(Player player, Deck deck, Map<Player, List<String>> removedAnteCards, List<String> rAICards, boolean canRandomFoil, Random generator, boolean useAnte) {
final Random generator = MyRandom.getRandom();
boolean useAnte = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_ANTE);
PlayerZone library = player.getZone(ZoneType.Library); PlayerZone library = player.getZone(ZoneType.Library);
for (final Entry<CardPrinted, Integer> stackOfCards : deck.getMain()) { for (final Entry<CardPrinted, Integer> stackOfCards : deck.getMain()) {
final CardPrinted cardPrinted = stackOfCards.getKey(); final CardPrinted cardPrinted = stackOfCards.getKey();
@@ -85,6 +85,49 @@ public class GameNew {
} }
} }
} }
}
private static boolean sideboardAndPrepareLibrary(final Player player, final Deck deck, boolean canRandomFoil, Random generator, boolean useAnte) {
final GameType gameType = Singletons.getModel().getMatch().getGameType();
boolean hasSideboard = gameType.equals(GameType.Draft) || gameType.equals(GameType.Sealed);
PlayerZone library = player.getZone(ZoneType.Library);
DeckSection sideboard = deck.getSideboard();
int sideboardSize = sideboard.countAll();
if (hasSideboard || sideboardSize == 0) {
return false;
}
if (player.isComputer()) {
// Here is where the AI could sideboard, but needs to gather hints during the first game about what to SB
return false;
} else {
// Human Sideboarding
List<Card> newDeck = GuiChoose.getOrderChoices("Sideboarding", "Deck to Play", sideboardSize,
sideboard.toForgeCardList(), deck.getMain().toForgeCardList(), null);
for (Card c : newDeck) {
library.add(c);
}
}
return true;
}
private static void prepareSingleLibrary(final Player player, final Deck deck, final Map<Player, List<String>> removedAnteCards, final List<String> rAICards, boolean canRandomFoil) {
final Random generator = MyRandom.getRandom();
boolean useAnte = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_ANTE);
if (Singletons.getModel().getMatch().getPlayedGames().size() == 0) {
prepareFirstGameLibrary(player, deck, removedAnteCards, rAICards, canRandomFoil, generator, useAnte);
} else {
if (!sideboardAndPrepareLibrary(player, deck, canRandomFoil, generator, useAnte)) {
prepareFirstGameLibrary(player, deck, removedAnteCards, rAICards, canRandomFoil, generator, useAnte);
}
//
}
// Shuffling // Shuffling
// Ai may cheat // Ai may cheat
@@ -187,6 +230,7 @@ public class GameNew {
for( Entry<Player, PlayerStartConditions> p : playersConditions.entrySet() ) { for( Entry<Player, PlayerStartConditions> p : playersConditions.entrySet() ) {
final Player player = p.getKey(); final Player player = p.getKey();
player.setStartingLife(p.getValue().getStartingLife()); player.setStartingLife(p.getValue().getStartingLife());
player.setNumLandsPlayed(0);
// what if I call it for AI player? // what if I call it for AI player?
PlayerZone bf = player.getZone(ZoneType.Battlefield); PlayerZone bf = player.getZone(ZoneType.Battlefield);
Iterable<Card> onTable = p.getValue().getCardsOnTable(); Iterable<Card> onTable = p.getValue().getCardsOnTable();