From aa38b9110b2f13c4b8bd43299739b2a749676cce Mon Sep 17 00:00:00 2001 From: slapshot5 Date: Sat, 7 Jan 2012 04:21:20 +0000 Subject: [PATCH] consolidate deleteObservers in a deinitMatch method. Hooked this method up in the WinLoseFrame and QuestWinLoseHandler. --- src/main/java/forge/GuiInput.java | 6 --- src/main/java/forge/Phase.java | 1 - .../java/forge/control/ControlMatchUI.java | 41 +++++++++++++++++++ .../java/forge/control/ControlWinLose.java | 4 +- .../forge/control/match/ControlField.java | 5 --- .../java/forge/control/match/ControlHand.java | 1 - .../forge/control/match/ControlTabber.java | 4 -- .../java/forge/gui/input/InputAttack.java | 2 +- .../forge/quest/gui/QuestWinLoseHandler.java | 7 +++- .../java/forge/view/toolbox/WinLoseFrame.java | 5 --- 10 files changed, 50 insertions(+), 26 deletions(-) diff --git a/src/main/java/forge/GuiInput.java b/src/main/java/forge/GuiInput.java index c748e67758e..6875de181ee 100644 --- a/src/main/java/forge/GuiInput.java +++ b/src/main/java/forge/GuiInput.java @@ -41,15 +41,9 @@ public class GuiInput extends MyObservable implements Observer { *

*/ public GuiInput() { - AllZone.getInputControl().deleteObservers(); AllZone.getInputControl().addObserver(this); - - AllZone.getStack().deleteObservers(); AllZone.getStack().addObserver(this); - AllZone.getPhase().addObserver(this); - - //System.out.println("Stack observers: " + AllZone.getStack().countObservers()); } /** {@inheritDoc} */ diff --git a/src/main/java/forge/Phase.java b/src/main/java/forge/Phase.java index d9d26938553..68f2139d949 100644 --- a/src/main/java/forge/Phase.java +++ b/src/main/java/forge/Phase.java @@ -851,7 +851,6 @@ public class Phase extends MyObservable implements java.io.Serializable { /** {@inheritDoc} */ @Override public final void addObserver(final Observer o) { - super.deleteObservers(); super.addObserver(o); } diff --git a/src/main/java/forge/control/ControlMatchUI.java b/src/main/java/forge/control/ControlMatchUI.java index c608412a02e..7721c509c44 100644 --- a/src/main/java/forge/control/ControlMatchUI.java +++ b/src/main/java/forge/control/ControlMatchUI.java @@ -33,6 +33,7 @@ import org.apache.commons.lang3.StringUtils; import forge.AllZone; import forge.Constant.Zone; +import forge.Player; import forge.Singletons; import forge.control.match.ControlField; import forge.properties.ForgePreferences; @@ -75,6 +76,9 @@ public class ControlMatchUI { * */ public void initMatch() { + + //printObservers("before"); + // All child components have been assembled; observers and listeners can // be added safely. this.view.getTabberController().addObservers(); @@ -100,6 +104,43 @@ public class ControlMatchUI { AllZone.getInputControl().updateObservers(); this.view.getTabberController().updateObservers(); this.mapKeyboardShortcuts(); + + //printObservers("after"); + } + + private void printObservers(String when) { + for (Player p : AllZone.getPlayersInGame()) { + System.out.println(p + " " + when + ": " + p.countObservers()); + System.out.println(p + " " + "Battlefield " + when + ": " + p.getZone(Zone.Battlefield).countObservers()); + System.out.println(p + " " + "Hand " + when + ": " + p.getZone(Zone.Hand).countObservers()); + p.getZone(Zone.Hand).deleteObservers(); + } + System.out.println("Stack " + when + ": " + AllZone.getStack().countObservers()); + System.out.println("GameLog " + when + ": " + AllZone.getGameLog().countObservers()); + System.out.println("InputControl " + when + ": " + AllZone.getInputControl().countObservers()); + System.out.println("Phase " + when + ": " + AllZone.getPhase().countObservers()); + + System.out.println("===================================="); + } + + /** + * + * TODO: Write javadoc for this method. + */ + public void deinitMatch() { + + //delete player observers + for (Player p : AllZone.getPlayersInGame()) { + p.deleteObservers(); + p.getZone(Zone.Battlefield).deleteObservers(); + p.getZone(Zone.Hand).deleteObservers(); + } + + AllZone.getStack().deleteObservers(); + AllZone.getGameLog().deleteObservers(); + AllZone.getInputControl().deleteObservers(); + AllZone.getPhase().deleteObservers(); + } /** diff --git a/src/main/java/forge/control/ControlWinLose.java b/src/main/java/forge/control/ControlWinLose.java index ed6bae4874d..75c148c0000 100644 --- a/src/main/java/forge/control/ControlWinLose.java +++ b/src/main/java/forge/control/ControlWinLose.java @@ -68,7 +68,9 @@ public class ControlWinLose { * */ public void actionOnQuit() { - ((GuiTopLevel) AllZone.getDisplay()).getController().changeState(0); + ControlAllUI g = ((GuiTopLevel) AllZone.getDisplay()).getController(); + g.getMatchController().deinitMatch(); + g.changeState(ControlAllUI.HOME_SCREEN); } /** diff --git a/src/main/java/forge/control/match/ControlField.java b/src/main/java/forge/control/match/ControlField.java index 172c4a5cf4b..542979f454a 100644 --- a/src/main/java/forge/control/match/ControlField.java +++ b/src/main/java/forge/control/match/ControlField.java @@ -119,11 +119,6 @@ public class ControlField { * stats, etc. */ public void addObservers() { - - this.player.getZone(Zone.Hand).deleteObserver(observerZones); - this.player.deleteObserver(observerDetails); - this.player.getZone(Zone.Battlefield).deleteObserver(observerPlay); - this.player.getZone(Zone.Hand).addObserver(observerZones); this.player.addObserver(observerDetails); this.player.getZone(Zone.Battlefield).addObserver(observerPlay); diff --git a/src/main/java/forge/control/match/ControlHand.java b/src/main/java/forge/control/match/ControlHand.java index dbae3ba13ec..39cc7dcce25 100644 --- a/src/main/java/forge/control/match/ControlHand.java +++ b/src/main/java/forge/control/match/ControlHand.java @@ -157,7 +157,6 @@ public class ControlHand { /** Adds observers to hand panel. */ public void addObservers() { - AllZone.getHumanPlayer().getZone(Zone.Hand).deleteObserver(o1); AllZone.getHumanPlayer().getZone(Zone.Hand).addObserver(o1); } diff --git a/src/main/java/forge/control/match/ControlTabber.java b/src/main/java/forge/control/match/ControlTabber.java index 95d447a37d6..6f8a295c868 100644 --- a/src/main/java/forge/control/match/ControlTabber.java +++ b/src/main/java/forge/control/match/ControlTabber.java @@ -111,11 +111,7 @@ public class ControlTabber extends MyObservable { /** Adds observers to tabber. */ public void addObservers() { - - AllZone.getStack().deleteObserver(stackObserver); AllZone.getStack().addObserver(stackObserver); - - AllZone.getGameLog().deleteObserver(logObserver); AllZone.getGameLog().addObserver(logObserver); } diff --git a/src/main/java/forge/gui/input/InputAttack.java b/src/main/java/forge/gui/input/InputAttack.java index 54f8c36f209..d5af0e1a894 100644 --- a/src/main/java/forge/gui/input/InputAttack.java +++ b/src/main/java/forge/gui/input/InputAttack.java @@ -104,7 +104,7 @@ public class InputAttack extends Input { // return; AllZone.getCombat().addAttacker(card); - + // just to make sure the attack symbol is marked AllZone.getHumanPlayer().getZone(Zone.Battlefield).updateObservers(); diff --git a/src/main/java/forge/quest/gui/QuestWinLoseHandler.java b/src/main/java/forge/quest/gui/QuestWinLoseHandler.java index 749e11fac54..fc66b67aa10 100644 --- a/src/main/java/forge/quest/gui/QuestWinLoseHandler.java +++ b/src/main/java/forge/quest/gui/QuestWinLoseHandler.java @@ -37,6 +37,7 @@ import forge.MyRandom; import forge.Player; import forge.SetUtils; import forge.Singletons; +import forge.control.ControlAllUI; import forge.control.ControlWinLose; import forge.game.GameEndReason; import forge.game.GameFormat; @@ -301,8 +302,10 @@ public class QuestWinLoseHandler extends ControlWinLose { this.model.qData.saveData(); - ((GuiTopLevel) AllZone.getDisplay()).getController().changeState(0); - ((GuiTopLevel) AllZone.getDisplay()).getController().getHomeView().showQuestMenu(); + ControlAllUI g = ((GuiTopLevel) AllZone.getDisplay()).getController(); + g.getMatchController().deinitMatch(); + g.changeState(ControlAllUI.HOME_SCREEN); + g.getHomeView().showQuestMenu(); } /** diff --git a/src/main/java/forge/view/toolbox/WinLoseFrame.java b/src/main/java/forge/view/toolbox/WinLoseFrame.java index 02f2513eb32..ab4e81b7175 100644 --- a/src/main/java/forge/view/toolbox/WinLoseFrame.java +++ b/src/main/java/forge/view/toolbox/WinLoseFrame.java @@ -279,11 +279,6 @@ public class WinLoseFrame extends JFrame { this.closeWinLoseFrame(); this.matchState.reset(); this.modeHandler.actionOnQuit(); - - // clear Image caches, so the program doesn't get slower and slower - // not needed with soft values - will shrink as needed - // ImageUtil.rotatedCache.clear(); - // ImageCache.cache.clear(); } /**