diff --git a/src/main/java/forge/GuiDisplay.java b/src/main/java/forge/GuiDisplay.java index 674e18fbabd..4eb1984bbde 100644 --- a/src/main/java/forge/GuiDisplay.java +++ b/src/main/java/forge/GuiDisplay.java @@ -692,6 +692,22 @@ public class GuiDisplay extends JFrame implements CardContainer, Display { *

*/ private void addObservers() { + // Remove all observers, placed by new UI. + AllZone.getHumanPlayer().deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Hand).deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Graveyard).deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Library).deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Battlefield).deleteObservers(); + + AllZone.getComputerPlayer().deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Hand).deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Graveyard).deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Library).deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Battlefield).deleteObservers(); + + AllZone.getStack().deleteObservers(); + AllZone.getInputControl().deleteObservers(); + // long method final Observer o = new Observer() { @Override diff --git a/src/main/java/forge/control/ControlMatchUI.java b/src/main/java/forge/control/ControlMatchUI.java index 3e40a28a8cd..102d1828f6b 100644 --- a/src/main/java/forge/control/ControlMatchUI.java +++ b/src/main/java/forge/control/ControlMatchUI.java @@ -74,6 +74,22 @@ public class ControlMatchUI { * */ public void initMatch() { + // Remove all observers, placed by old UI. + AllZone.getHumanPlayer().deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Hand).deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Graveyard).deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Library).deleteObservers(); + AllZone.getHumanPlayer().getZone(Zone.Battlefield).deleteObservers(); + + AllZone.getComputerPlayer().deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Hand).deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Graveyard).deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Library).deleteObservers(); + AllZone.getComputerPlayer().getZone(Zone.Battlefield).deleteObservers(); + + AllZone.getStack().deleteObservers(); + AllZone.getInputControl().deleteObservers(); + // All child components have been assembled; observers and listeners can // be added safely. this.view.getAreaSidebar().getTabber().getController().addObservers();