mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 11:48:02 +00:00
Support showing prompt for second human player
This commit is contained in:
@@ -36,7 +36,6 @@ import forge.game.zone.ZoneType;
|
||||
import forge.interfaces.IButton;
|
||||
import forge.interfaces.IGuiBase;
|
||||
import forge.item.PaperCard;
|
||||
import forge.match.input.InputQueue;
|
||||
import forge.properties.ForgeConstants;
|
||||
import forge.screens.match.FControl;
|
||||
import forge.screens.match.views.VPlayerPanel;
|
||||
@@ -238,13 +237,18 @@ public class GuiMobile implements IGuiBase {
|
||||
}
|
||||
|
||||
@Override
|
||||
public IButton getBtnOK() {
|
||||
return FControl.getView().getActivePrompt().getBtnOk();
|
||||
public IButton getBtnOK(PlayerView player) {
|
||||
return FControl.getView().getPrompt(player).getBtnOk();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IButton getBtnCancel() {
|
||||
return FControl.getView().getActivePrompt().getBtnCancel();
|
||||
public IButton getBtnCancel(PlayerView player) {
|
||||
return FControl.getView().getPrompt(player).getBtnCancel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showPromptMessage(final PlayerView player, String message) {
|
||||
FControl.getView().getPrompt(player).setMessage(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -358,21 +362,11 @@ public class GuiMobile implements IGuiBase {
|
||||
FControl.setHighlighted(player, b);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void showPromptMessage(String message) {
|
||||
FControl.showMessage(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean stopAtPhase(final PlayerView playerTurn, final PhaseType phase) {
|
||||
return FControl.stopAtPhase(playerTurn, phase);
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputQueue getInputQueue() {
|
||||
return FControl.getInputQueue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object showManaPool(final PlayerView player) {
|
||||
VPlayerPanel playerPanel = FControl.getPlayerPanel(player);
|
||||
|
||||
@@ -48,6 +48,7 @@ import forge.game.trigger.TriggerType;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.match.input.InputPlaybackControl;
|
||||
import forge.match.input.InputQueue;
|
||||
import forge.match.input.InputSynchronized;
|
||||
import forge.model.FModel;
|
||||
import forge.player.GamePlayerUtil;
|
||||
import forge.player.PlayerControllerHuman;
|
||||
@@ -175,15 +176,16 @@ public class FControl {
|
||||
if (p.getController() instanceof PlayerControllerHuman) {
|
||||
final PlayerControllerHuman controller = (PlayerControllerHuman) p.getController();
|
||||
LocalGameView gameView = controller.getGameView();
|
||||
game.subscribeToEvents(new FControlGameEventHandler(GuiBase.getInterface(), gameView));
|
||||
game.subscribeToEvents(new FControlGameEventHandler(gameView));
|
||||
gameViews.add(gameView);
|
||||
humanCount++;
|
||||
}
|
||||
}
|
||||
|
||||
if (humanCount == 0) { //watch game but do not participate
|
||||
LocalGameView gameView = new WatchLocalGame(game, GuiBase.getInterface());
|
||||
game.subscribeToEvents(new FControlGameEventHandler(GuiBase.getInterface(), gameView));
|
||||
LocalGameView gameView = new WatchLocalGame(GuiBase.getInterface(), game);
|
||||
gameView.setLocalPlayer(sortedPlayers.get(0));
|
||||
game.subscribeToEvents(new FControlGameEventHandler(gameView));
|
||||
gameViews.add(gameView);
|
||||
}
|
||||
else if (humanCount == sortedPlayers.size()) {
|
||||
@@ -281,13 +283,6 @@ public class FControl {
|
||||
}
|
||||
}
|
||||
|
||||
public static void showMessage(final String s0) {
|
||||
view.getActivePrompt().setMessage(s0);
|
||||
}
|
||||
public static void showMessage(final PlayerView playerView, final String s0) {
|
||||
view.getPrompt(playerView).setMessage(s0);
|
||||
}
|
||||
|
||||
public static VPlayerPanel getPlayerPanel(final PlayerView playerView) {
|
||||
return view.getPlayerPanels().get(playerView);
|
||||
}
|
||||
@@ -314,19 +309,20 @@ public class FControl {
|
||||
public static Player getCurrentPlayer() {
|
||||
if (game == null) { return null; }
|
||||
|
||||
// try current priority
|
||||
Player currentPriority = game.getPhaseHandler().getPriorityPlayer();
|
||||
if (null != currentPriority && currentPriority.getLobbyPlayer() == getGuiPlayer()) {
|
||||
return currentPriority;
|
||||
}
|
||||
|
||||
// otherwise find just any player, belonging to this lobbyplayer
|
||||
for (Player p : game.getPlayers()) {
|
||||
if (p.getLobbyPlayer() == getGuiPlayer()) {
|
||||
return p;
|
||||
LobbyPlayer lobbyPlayer = getGuiPlayer();
|
||||
if (gameViews.size() > 1) {
|
||||
//account for if second human player is currently being prompted
|
||||
InputSynchronized activeInput = InputQueue.getActiveInput();
|
||||
if (activeInput != null) {
|
||||
lobbyPlayer = activeInput.getOwner().getLobbyPlayer();
|
||||
}
|
||||
}
|
||||
|
||||
for (Player p : game.getPlayers()) {
|
||||
if (p.getLobbyPlayer() == lobbyPlayer) {
|
||||
return p;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user