consolidate deleteObservers in a deinitMatch method. Hooked this method up in the WinLoseFrame and QuestWinLoseHandler.

This commit is contained in:
slapshot5
2012-01-07 04:21:20 +00:00
parent 3f77c67053
commit aa38b9110b
10 changed files with 50 additions and 26 deletions

View File

@@ -41,15 +41,9 @@ public class GuiInput extends MyObservable implements Observer {
* </p> * </p>
*/ */
public GuiInput() { public GuiInput() {
AllZone.getInputControl().deleteObservers();
AllZone.getInputControl().addObserver(this); AllZone.getInputControl().addObserver(this);
AllZone.getStack().deleteObservers();
AllZone.getStack().addObserver(this); AllZone.getStack().addObserver(this);
AllZone.getPhase().addObserver(this); AllZone.getPhase().addObserver(this);
//System.out.println("Stack observers: " + AllZone.getStack().countObservers());
} }
/** {@inheritDoc} */ /** {@inheritDoc} */

View File

@@ -851,7 +851,6 @@ public class Phase extends MyObservable implements java.io.Serializable {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public final void addObserver(final Observer o) { public final void addObserver(final Observer o) {
super.deleteObservers();
super.addObserver(o); super.addObserver(o);
} }

View File

@@ -33,6 +33,7 @@ import org.apache.commons.lang3.StringUtils;
import forge.AllZone; import forge.AllZone;
import forge.Constant.Zone; import forge.Constant.Zone;
import forge.Player;
import forge.Singletons; import forge.Singletons;
import forge.control.match.ControlField; import forge.control.match.ControlField;
import forge.properties.ForgePreferences; import forge.properties.ForgePreferences;
@@ -75,6 +76,9 @@ public class ControlMatchUI {
* *
*/ */
public void initMatch() { public void initMatch() {
//printObservers("before");
// All child components have been assembled; observers and listeners can // All child components have been assembled; observers and listeners can
// be added safely. // be added safely.
this.view.getTabberController().addObservers(); this.view.getTabberController().addObservers();
@@ -100,6 +104,43 @@ public class ControlMatchUI {
AllZone.getInputControl().updateObservers(); AllZone.getInputControl().updateObservers();
this.view.getTabberController().updateObservers(); this.view.getTabberController().updateObservers();
this.mapKeyboardShortcuts(); 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();
} }
/** /**

View File

@@ -68,7 +68,9 @@ public class ControlWinLose {
* *
*/ */
public void actionOnQuit() { public void actionOnQuit() {
((GuiTopLevel) AllZone.getDisplay()).getController().changeState(0); ControlAllUI g = ((GuiTopLevel) AllZone.getDisplay()).getController();
g.getMatchController().deinitMatch();
g.changeState(ControlAllUI.HOME_SCREEN);
} }
/** /**

View File

@@ -119,11 +119,6 @@ public class ControlField {
* stats, etc. * stats, etc.
*/ */
public void addObservers() { 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.getZone(Zone.Hand).addObserver(observerZones);
this.player.addObserver(observerDetails); this.player.addObserver(observerDetails);
this.player.getZone(Zone.Battlefield).addObserver(observerPlay); this.player.getZone(Zone.Battlefield).addObserver(observerPlay);

View File

@@ -157,7 +157,6 @@ public class ControlHand {
/** Adds observers to hand panel. */ /** Adds observers to hand panel. */
public void addObservers() { public void addObservers() {
AllZone.getHumanPlayer().getZone(Zone.Hand).deleteObserver(o1);
AllZone.getHumanPlayer().getZone(Zone.Hand).addObserver(o1); AllZone.getHumanPlayer().getZone(Zone.Hand).addObserver(o1);
} }

View File

@@ -111,11 +111,7 @@ public class ControlTabber extends MyObservable {
/** Adds observers to tabber. */ /** Adds observers to tabber. */
public void addObservers() { public void addObservers() {
AllZone.getStack().deleteObserver(stackObserver);
AllZone.getStack().addObserver(stackObserver); AllZone.getStack().addObserver(stackObserver);
AllZone.getGameLog().deleteObserver(logObserver);
AllZone.getGameLog().addObserver(logObserver); AllZone.getGameLog().addObserver(logObserver);
} }

View File

@@ -37,6 +37,7 @@ import forge.MyRandom;
import forge.Player; import forge.Player;
import forge.SetUtils; import forge.SetUtils;
import forge.Singletons; import forge.Singletons;
import forge.control.ControlAllUI;
import forge.control.ControlWinLose; import forge.control.ControlWinLose;
import forge.game.GameEndReason; import forge.game.GameEndReason;
import forge.game.GameFormat; import forge.game.GameFormat;
@@ -301,8 +302,10 @@ public class QuestWinLoseHandler extends ControlWinLose {
this.model.qData.saveData(); this.model.qData.saveData();
((GuiTopLevel) AllZone.getDisplay()).getController().changeState(0); ControlAllUI g = ((GuiTopLevel) AllZone.getDisplay()).getController();
((GuiTopLevel) AllZone.getDisplay()).getController().getHomeView().showQuestMenu(); g.getMatchController().deinitMatch();
g.changeState(ControlAllUI.HOME_SCREEN);
g.getHomeView().showQuestMenu();
} }
/** /**

View File

@@ -279,11 +279,6 @@ public class WinLoseFrame extends JFrame {
this.closeWinLoseFrame(); this.closeWinLoseFrame();
this.matchState.reset(); this.matchState.reset();
this.modeHandler.actionOnQuit(); 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();
} }
/** /**