Show more useful message when not paused for playback

This commit is contained in:
drdev
2014-05-27 00:44:03 +00:00
parent f622a417f9
commit 6bb4f874db
2 changed files with 25 additions and 8 deletions

View File

@@ -6,6 +6,7 @@ import forge.FThreads;
import forge.GuiBase; import forge.GuiBase;
import forge.game.event.*; import forge.game.event.*;
import forge.match.input.InputPlaybackControl; import forge.match.input.InputPlaybackControl;
import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier; import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
@@ -112,14 +113,16 @@ public class FControlGamePlayback extends IGameEventVisitor.Base<Void> {
*/ */
@Override @Override
public Void visit(GameEventPlayerPriority event) { public Void visit(GameEventPlayerPriority event) {
inputPlayback.updateTurnMessage();
if (paused.get()) { if (paused.get()) {
try { try {
inputPlayback.onGamePaused();
gameThreadPauser.await(); gameThreadPauser.await();
gameThreadPauser.reset(); gameThreadPauser.reset();
} catch (InterruptedException e) { }
catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} catch (BrokenBarrierException e) { }
catch (BrokenBarrierException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }

View File

@@ -2,6 +2,8 @@ package forge.match.input;
import forge.GuiBase; import forge.GuiBase;
import forge.control.FControlGamePlayback; import forge.control.FControlGamePlayback;
import forge.game.Game;
import forge.game.phase.PhaseHandler;
public class InputPlaybackControl extends InputSyncronizedBase implements InputSynchronized { public class InputPlaybackControl extends InputSyncronizedBase implements InputSynchronized {
@@ -25,6 +27,23 @@ public class InputPlaybackControl extends InputSyncronizedBase implements InputS
ButtonUtil.enableAllFocusOk(); ButtonUtil.enableAllFocusOk();
} }
//update message based on current turn and paused state
private int currentTurn;
public void updateTurnMessage() {
Game game = GuiBase.getInterface().getGame();
if (isPaused) {
showMessage(getTurnPhasePriorityMessage(game));
currentTurn = 0;
}
else {
final PhaseHandler ph = game.getPhaseHandler();
if (currentTurn == ph.getTurn()) { return; }
currentTurn = ph.getTurn();
showMessage("Turn " + currentTurn + " (" + ph.getPlayerTurn() + ")");
}
}
private void setPause(boolean pause) { private void setPause(boolean pause) {
isPaused = pause; isPaused = pause;
if (isPaused) { if (isPaused) {
@@ -32,14 +51,9 @@ public class InputPlaybackControl extends InputSyncronizedBase implements InputS
} }
else { else {
ButtonUtil.setButtonText("Pause", isFast ? "1x Speed" : "10x Faster"); ButtonUtil.setButtonText("Pause", isFast ? "1x Speed" : "10x Faster");
showMessage("Press pause to pause game.");
} }
} }
public void onGamePaused() {
showMessage(getTurnPhasePriorityMessage(GuiBase.getInterface().getGame()));
}
public void pause() { public void pause() {
if (isPaused) { return; } if (isPaused) { return; }
control.pause(); control.pause();