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

View File

@@ -2,6 +2,8 @@ package forge.match.input;
import forge.GuiBase;
import forge.control.FControlGamePlayback;
import forge.game.Game;
import forge.game.phase.PhaseHandler;
public class InputPlaybackControl extends InputSyncronizedBase implements InputSynchronized {
@@ -25,6 +27,23 @@ public class InputPlaybackControl extends InputSyncronizedBase implements InputS
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) {
isPaused = pause;
if (isPaused) {
@@ -32,14 +51,9 @@ public class InputPlaybackControl extends InputSyncronizedBase implements InputS
}
else {
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() {
if (isPaused) { return; }
control.pause();