mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
CMessage is not Observer, PhaseHandler is not a MyObservable
FControlGameEventHandler updates CMessage as events arrive
This commit is contained in:
@@ -13,6 +13,7 @@ import forge.game.event.GameEventAnteCardsSelected;
|
||||
import forge.game.event.GameEventGameFinished;
|
||||
import forge.game.event.GameEventGameOutcome;
|
||||
import forge.game.event.GameEventPlayerControl;
|
||||
import forge.game.event.GameEventTurnBegan;
|
||||
import forge.game.event.GameEventTurnPhase;
|
||||
import forge.game.event.IGameEventVisitor;
|
||||
import forge.game.phase.PhaseType;
|
||||
@@ -22,6 +23,7 @@ import forge.gui.SOverlayUtils;
|
||||
import forge.gui.match.CMatchUI;
|
||||
import forge.gui.match.VMatchUI;
|
||||
import forge.gui.match.ViewWinLose;
|
||||
import forge.gui.match.controllers.CMessage;
|
||||
import forge.gui.match.nonsingleton.VHand;
|
||||
import forge.gui.match.nonsingleton.VField.PhaseLabel;
|
||||
|
||||
@@ -56,6 +58,21 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
||||
return null;
|
||||
}
|
||||
|
||||
private final AtomicBoolean turnUpdPlanned = new AtomicBoolean(false);
|
||||
@Override
|
||||
public Void visit(GameEventTurnBegan event) {
|
||||
if ( turnUpdPlanned.getAndSet(true) ) return null;
|
||||
|
||||
FThreads.invokeInEdtNowOrLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
turnUpdPlanned.set(false);
|
||||
CMessage.SINGLETON_INSTANCE.updateText();
|
||||
}
|
||||
});
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void visit(GameEventAnteCardsSelected ev) {
|
||||
// Require EDT here?
|
||||
|
||||
@@ -44,7 +44,6 @@ import forge.gui.framework.SDisplayUtil;
|
||||
import forge.gui.match.CMatchUI;
|
||||
import forge.gui.match.nonsingleton.VField;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.util.MyObservable;
|
||||
|
||||
|
||||
/**
|
||||
@@ -55,7 +54,7 @@ import forge.util.MyObservable;
|
||||
* @author Forge
|
||||
* @version $Id: PhaseHandler.java 13001 2012-01-08 12:25:25Z Sloth $
|
||||
*/
|
||||
public class PhaseHandler extends MyObservable implements java.io.Serializable {
|
||||
public class PhaseHandler implements java.io.Serializable {
|
||||
|
||||
/** Constant <code>serialVersionUID=5207222278370963197L</code>. */
|
||||
private static final long serialVersionUID = 5207222278370963197L;
|
||||
@@ -679,7 +678,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
|
||||
setPlayerTurn(goesFirst);
|
||||
advanceToNextPhase();
|
||||
onPhaseBegin();
|
||||
updateObservers();
|
||||
|
||||
// don't even offer priority, because it's untap of 1st turn now
|
||||
givePriorityToPlayer = false;
|
||||
|
||||
@@ -741,9 +740,7 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
|
||||
// pass the priority to other player
|
||||
this.pPlayerPriority = nextPlayer;
|
||||
}
|
||||
|
||||
updateObservers();
|
||||
|
||||
|
||||
// If ever the karn's ultimate resolved
|
||||
if( game.getAge() == GameAge.RestartedByKarn) {
|
||||
phase = null;
|
||||
@@ -764,9 +761,12 @@ public class PhaseHandler extends MyObservable implements java.io.Serializable {
|
||||
// this is a hack for the setup game state mode, do not use outside of devSetupGameState code
|
||||
// as it avoids calling any of the phase effects that may be necessary in a less enforced context
|
||||
public final void devModeSet(final PhaseType phase0, final Player player0) {
|
||||
|
||||
if (null != phase0) this.phase = phase0;
|
||||
if (null != player0 )
|
||||
setPlayerTurn(player0);
|
||||
|
||||
game.fireEvent(new GameEventTurnPhase(this.getPlayerTurn(), this.getPhase(), ""));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -159,9 +159,8 @@ public final class GuiDisplayUtil {
|
||||
|
||||
game.getTriggerHandler().clearSuppression(TriggerType.ChangesZone);
|
||||
|
||||
|
||||
game.getAction().checkStateEffects();
|
||||
game.getPhaseHandler().updateObservers();
|
||||
|
||||
for (Player p : game.getRegisteredPlayers()) {
|
||||
p.getZone(ZoneType.Battlefield).updateObservers();
|
||||
}
|
||||
|
||||
@@ -23,12 +23,10 @@ import java.awt.event.ActionListener;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.FocusListener;
|
||||
import java.util.Observable;
|
||||
import java.util.Observer;
|
||||
|
||||
import javax.swing.JButton;
|
||||
|
||||
import forge.Command;
|
||||
import forge.FThreads;
|
||||
import forge.game.Game;
|
||||
import forge.game.Match;
|
||||
import forge.gui.InputProxy;
|
||||
@@ -41,7 +39,7 @@ import forge.gui.match.views.VMessage;
|
||||
*
|
||||
* <br><br><i>(C at beginning of class name denotes a control class.)</i>
|
||||
*/
|
||||
public enum CMessage implements ICDoc, Observer {
|
||||
public enum CMessage implements ICDoc {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
@@ -117,19 +115,14 @@ public enum CMessage implements ICDoc, Observer {
|
||||
/* (non-Javadoc)
|
||||
* @see java.util.Observer#update(java.util.Observable, java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public void update(Observable o, Object arg) {
|
||||
|
||||
public void updateText() {
|
||||
FThreads.assertExecutedByEdt(true);
|
||||
Match match = game.getMatch();
|
||||
view.getLblGames().setText(
|
||||
match.getGameType().toString() + ": Game #"
|
||||
+ (match.getPlayedGames().size() + 1)
|
||||
+ " of " + match.getGamesPerMatch()
|
||||
+ ", turn " + match.getCurrentGame().getPhaseHandler().getTurn());
|
||||
String text = String.format("%s: Game #%d of %d, turn %d", match.getGameType(), match.getPlayedGames().size() + 1, match.getGamesPerMatch(), game.getPhaseHandler().getTurn());
|
||||
view.getLblGames().setText(text);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.ICDoc#update()
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
// set focus back to button that last had it
|
||||
@@ -138,13 +131,13 @@ public enum CMessage implements ICDoc, Observer {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @param match
|
||||
*/
|
||||
public void setModel(Game game0) {
|
||||
game = game0;
|
||||
game.getPhaseHandler().addObserver(this);
|
||||
update(null, null);
|
||||
update();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user