inlined visuallyActivatePhase

This commit is contained in:
Maxmtg
2013-05-29 17:23:57 +00:00
parent 6be13bcf30
commit f939aa13a5
2 changed files with 22 additions and 21 deletions

View File

@@ -1,5 +1,7 @@
package forge.control; package forge.control;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
@@ -13,7 +15,7 @@ import forge.game.event.GameEventDuelOutcome;
import forge.game.event.GameEventPlayerControl; import forge.game.event.GameEventPlayerControl;
import forge.game.event.GameEventTurnPhase; import forge.game.event.GameEventTurnPhase;
import forge.game.event.IGameEventVisitor; import forge.game.event.IGameEventVisitor;
import forge.game.phase.PhaseUtil; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
@@ -21,6 +23,7 @@ import forge.gui.match.CMatchUI;
import forge.gui.match.VMatchUI; import forge.gui.match.VMatchUI;
import forge.gui.match.ViewWinLose; import forge.gui.match.ViewWinLose;
import forge.gui.match.nonsingleton.VHand; import forge.gui.match.nonsingleton.VHand;
import forge.gui.match.nonsingleton.VField.PhaseLabel;
public class FControlGameEventHandler extends IGameEventVisitor.Base<Void, Void> { public class FControlGameEventHandler extends IGameEventVisitor.Base<Void, Void> {
public final FControl fc; public final FControl fc;
@@ -28,13 +31,30 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void, Void>
this.fc = fc; this.fc = fc;
} }
private final AtomicBoolean phaseUpdPlanned = new AtomicBoolean(false);
@Subscribe @Subscribe
public void receiveGameEvent(final GameEvent ev) { ev.visit(this, null); } public void receiveGameEvent(final GameEvent ev) { ev.visit(this, null); }
@Override @Override
public Void visit(final GameEventTurnPhase ev, Void params) { public Void visit(final GameEventTurnPhase ev, Void params) {
if ( phaseUpdPlanned.getAndSet(true) ) return null;
FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() { FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() {
PhaseUtil.visuallyActivatePhase(ev.playerTurn, ev.phase); Player p = fc.getObservedGame().getPhaseHandler().getPlayerTurn();
PhaseType ph = fc.getObservedGame().getPhaseHandler().getPhase();
phaseUpdPlanned.set(false);
final CMatchUI matchUi = CMatchUI.SINGLETON_INSTANCE;
PhaseLabel lbl = matchUi.getFieldViewFor(p).getLabelFor(ph);
matchUi.resetAllPhaseButtons();
if (lbl != null) {
lbl.setActive(true);
}
} }); } });
return null; return null;
} }

View File

@@ -233,23 +233,4 @@ public class PhaseUtil {
game.getGameLog().addCombatBlockers(game.getCombat()); game.getGameLog().addCombatBlockers(game.getCombat());
} }
/**
* Retrieves and visually activates phase label for appropriate phase and
* player.
*
* @param phase
* &emsp; Phase state
*/
public static void visuallyActivatePhase(final Player player, final PhaseType phase) {
final CMatchUI matchUi = CMatchUI.SINGLETON_INSTANCE;
PhaseLabel lbl = matchUi.getFieldViewFor(player).getLabelFor(phase);
matchUi.resetAllPhaseButtons();
if (lbl != null) {
lbl.setActive(true);
}
}
} }