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