mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
- When a game is restarted, set lands played back to 0.
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user