mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 04:38:00 +00:00
Auto-pause playback if mouse down anywhere above prompt or if device pauses game
This commit is contained in:
@@ -33,6 +33,7 @@ import forge.model.FModel;
|
||||
import forge.screens.FScreen;
|
||||
import forge.screens.SplashScreen;
|
||||
import forge.screens.home.HomeScreen;
|
||||
import forge.screens.match.FControl;
|
||||
import forge.toolbox.FContainer;
|
||||
import forge.toolbox.FDisplayObject;
|
||||
import forge.toolbox.FGestureAdapter;
|
||||
@@ -202,6 +203,7 @@ public class Forge implements ApplicationListener {
|
||||
|
||||
@Override
|
||||
public void pause() {
|
||||
FControl.pause();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.google.common.eventbus.Subscribe;
|
||||
import forge.Forge;
|
||||
import forge.GuiBase;
|
||||
import forge.LobbyPlayer;
|
||||
import forge.Forge.Graphics;
|
||||
import forge.ai.AiProfileUtil;
|
||||
import forge.ai.LobbyPlayerAi;
|
||||
import forge.card.CardCharacteristicName;
|
||||
@@ -49,6 +50,7 @@ import forge.game.player.RegisteredPlayer;
|
||||
import forge.game.trigger.TriggerType;
|
||||
import forge.game.zone.Zone;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.match.input.InputPlaybackControl;
|
||||
import forge.match.input.InputProxy;
|
||||
import forge.match.input.InputQueue;
|
||||
import forge.model.FModel;
|
||||
@@ -57,11 +59,13 @@ import forge.properties.ForgePreferences;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.quest.QuestController;
|
||||
import forge.screens.match.views.VAssignDamage;
|
||||
import forge.screens.match.views.VPrompt;
|
||||
import forge.screens.match.views.VCardDisplayArea.CardAreaPanel;
|
||||
import forge.screens.match.views.VPhaseIndicator;
|
||||
import forge.screens.match.views.VPhaseIndicator.PhaseLabel;
|
||||
import forge.screens.match.views.VPlayerPanel;
|
||||
import forge.toolbox.FCardPanel;
|
||||
import forge.toolbox.FDisplayObject;
|
||||
import forge.toolbox.FOptionPane;
|
||||
import forge.util.Callback;
|
||||
import forge.util.GuiDisplayUtil;
|
||||
@@ -148,6 +152,21 @@ public class FControl {
|
||||
}
|
||||
if (!gameHasHumanPlayer) {
|
||||
game.subscribeToEvents(playbackControl);
|
||||
|
||||
//add special object that pauses game if screen touched
|
||||
view.add(new FDisplayObject() {
|
||||
@Override
|
||||
public void draw(Graphics g) {
|
||||
//don't draw anything
|
||||
}
|
||||
|
||||
@Override
|
||||
public void buildTouchListeners(float screenX, float screenY, ArrayList<FDisplayObject> listeners) {
|
||||
if (screenY < view.getHeight() - VPrompt.HEIGHT) {
|
||||
pause();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Forge.openScreen(view);
|
||||
@@ -479,6 +498,13 @@ public class FControl {
|
||||
game = null;
|
||||
}
|
||||
|
||||
public static void pause() {
|
||||
//pause playback if needed
|
||||
if (inputQueue != null && inputQueue.getInput() instanceof InputPlaybackControl) {
|
||||
((InputPlaybackControl)inputQueue.getInput()).pause();
|
||||
}
|
||||
}
|
||||
|
||||
private final static boolean LOG_UIEVENTS = false;
|
||||
|
||||
// UI-related events should arrive here
|
||||
|
||||
@@ -6,7 +6,6 @@ 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;
|
||||
@@ -173,5 +172,4 @@ public class FControlGamePlayback extends IGameEventVisitor.Base<Void> {
|
||||
public void setSpeed(boolean isFast) {
|
||||
fasterPlayback = isFast;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -12,10 +12,6 @@ public class InputPlaybackControl extends InputSyncronizedBase implements InputS
|
||||
private boolean isPaused = false;
|
||||
private boolean isFast = false;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for Constructor.
|
||||
* @param fControlGamePlayback
|
||||
*/
|
||||
public InputPlaybackControl(FControlGamePlayback fControlGamePlayback) {
|
||||
control = fControlGamePlayback;
|
||||
}
|
||||
@@ -31,8 +27,9 @@ public class InputPlaybackControl extends InputSyncronizedBase implements InputS
|
||||
|
||||
private void setPause(boolean pause) {
|
||||
isPaused = pause;
|
||||
if ( isPaused )
|
||||
if (isPaused) {
|
||||
ButtonUtil.setButtonText("Resume", "Step");
|
||||
}
|
||||
else {
|
||||
ButtonUtil.setButtonText("Pause", isFast ? "1x Speed" : "10x Faster");
|
||||
showMessage("Press pause to pause game.");
|
||||
@@ -43,28 +40,33 @@ public class InputPlaybackControl extends InputSyncronizedBase implements InputS
|
||||
showMessage(getTurnPhasePriorityMessage(GuiBase.getInterface().getGame()));
|
||||
}
|
||||
|
||||
public void pause() {
|
||||
if (isPaused) { return; }
|
||||
control.pause();
|
||||
setPause(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onOk() {
|
||||
if ( isPaused ) {
|
||||
if (isPaused) {
|
||||
control.resume();
|
||||
setPause(false);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
control.pause();
|
||||
setPause(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCancel() {
|
||||
if ( isPaused ) {
|
||||
if (isPaused) {
|
||||
control.singleStep();
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
isFast = !isFast;
|
||||
control.setSpeed(isFast);
|
||||
setPause(isPaused); // update message
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user