diff --git a/src/main/java/forge/game/GameNew.java b/src/main/java/forge/game/GameNew.java index 0f3038ccbe2..a430ac75e6e 100644 --- a/src/main/java/forge/game/GameNew.java +++ b/src/main/java/forge/game/GameNew.java @@ -20,6 +20,7 @@ import forge.control.FControl; import forge.control.input.InputMulligan; import forge.deck.Deck; import forge.game.player.Player; +import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; import forge.gui.match.CMatchUI; import forge.gui.match.VMatchUI; @@ -57,35 +58,44 @@ public class GameNew { * @param iconEnemy * {@link java.lang.String} */ - public static void newGame(final Deck humanDeck, final Deck computerDeck, final CardList human, - final CardList computer, final int humanLife, final int computerLife, String iconEnemy) { + public static void newGame(final Deck humanDeck, final Deck computerDeck, final CardList humanStart, + final CardList computerStart, final int humanLife, final int computerLife, String iconEnemy) { Singletons.getControl().changeState(FControl.MATCH_SCREEN); CMatchUI.SINGLETON_INSTANCE.initMatch(iconEnemy); GameNew.newGameCleanup(); GameNew.newMatchCleanup(); - AllZone.getComputerPlayer().setStartingLife(computerLife); - AllZone.getHumanPlayer().setStartingLife(humanLife); - AllZone.getHumanPlayer().updateObservers(); + Player human = AllZone.getHumanPlayer(); + Player computer = AllZone.getComputerPlayer(); + + computer.setStartingLife(computerLife); + human.setStartingLife(humanLife); + human.updateObservers(); Card.resetUniqueNumber(); + + PlayerZone humanBf = human.getZone(ZoneType.Battlefield); - for (final Card c : human) { - AllZone.getHumanPlayer().getZone(ZoneType.Battlefield).add(c); + for (final Card c : humanStart) { + humanBf.add(c, false); c.setSickness(true); c.setStartsGameInPlay(true); c.refreshUniqueNumber(); } - for (final Card c : computer) { - AllZone.getComputerPlayer().getZone(ZoneType.Battlefield).add(c); + PlayerZone aiBf = AllZone.getComputerPlayer().getZone(ZoneType.Battlefield); + + for (final Card c : computerStart) { + aiBf.add(c, false); c.setSickness(true); c.setStartsGameInPlay(true); c.refreshUniqueNumber(); } GameNew.actuateGame(humanDeck, computerDeck); + humanBf.updateObservers(); + aiBf.updateObservers(); } /** diff --git a/src/main/java/forge/game/zone/DefaultPlayerZone.java b/src/main/java/forge/game/zone/DefaultPlayerZone.java index 264dcf3624d..3c305d9b8e6 100644 --- a/src/main/java/forge/game/zone/DefaultPlayerZone.java +++ b/src/main/java/forge/game/zone/DefaultPlayerZone.java @@ -66,14 +66,7 @@ public class DefaultPlayerZone extends PlayerZone implements java.io.Serializabl // ************ BEGIN - these methods fire updateObservers() ************* - /** - * Adds the. - * - * @param o - * a {@link java.lang.Object} object. - */ - @Override - public void add(final Object o) { + public void add(final Object o, boolean update) { final Card c = (Card) o; // Immutable cards are usually emblems,effects and the mana pool and we @@ -115,7 +108,22 @@ public class DefaultPlayerZone extends PlayerZone implements java.io.Serializabl } this.getCardList().add(c); - this.update(); + + if (update) { + this.update(); + } + } + + + /** + * Adds the. + * + * @param o + * a {@link java.lang.Object} object. + */ + @Override + public void add(final Object o) { + this.add(o, true); } /** diff --git a/src/main/java/forge/game/zone/IPlayerZone.java b/src/main/java/forge/game/zone/IPlayerZone.java index 6733d6c578e..af1935a17ed 100644 --- a/src/main/java/forge/game/zone/IPlayerZone.java +++ b/src/main/java/forge/game/zone/IPlayerZone.java @@ -68,6 +68,8 @@ interface IPlayerZone { * a {@link java.lang.Object} object. */ void add(Object o); + + void add(Object o, boolean b); /** *